[RESOLVIDO] passagens de parametros

Bom dia!

Estou com um problema em relação ao desenvolvimento de uma consulta no scriptcase.
Preciso montar um relatório que mostre debito , credito e saldo atual.
Consegui estrutar a consulta no sql, que é basicamente assim:

select empresa, filial, ‘c’ tipo, valor from tabela credito
where data between ‘20170201’ and ‘20170228’
union all
select empresa, filial, ‘d’ tipo, valor from tabela debito
where ‘20170201’ and ‘20170228’
union all
select empresa, filial, ‘saldo atual’ tipo, valor from tabela saldos
where data <= ‘20170228’

Estou pensando como fazer essa consulta ser automática a depender do que for digitado pelo usuário.
Pensei em criar a view porém pelo fato de que para eu encontrar o saldo atual a data tem que ser menor ou igual ao ultimo dia do mês.

Alguém poderia me dar uma dica de como poderia montar isso no scriptcase?

Talvez este código ajude (créditos do Willian):

SELECT id, obs, f_numero_format(entra,2) as credito, f_numero_format(sai,2) as debito, f_numero_format(saldo, 2) as saldo
FROM (
SELECT
id,
obs,
entra,
sai,
@debito_credito := debito_credito AS tipo,
@saldo := IF(@debito_credito = 0, @saldo + entra, @saldo - sai) AS saldo
FROM demo_extracto, (SELECT @debito_credito := 0, @saldo := 0) as vars
ORDER BY id
) AS extrato

union all

SELECT 0, ‘Saldo Final’, 0, 0, f_numero_format(@saldo, 2);

Eu montei a estrutura da seguinte forma:

SELECT ‘01’ EMPRESA , C.CT2_FILIAL AS FILIAL , ‘C’ AS TIPO,
C.CT2_CREDIT AS CONTA, C.CT2_VALOR VALOR, C.CT2_HIST HISTORICO
FROM CT2010 C
WHERE C.D_E_L_E_T_ <> ‘
AND C.CT2_TPSALD = 1
AND C.CT2_CREDIT= ‘210100620’
and c.CT2_DATA BETWEEN ‘20170201’ and ‘20170228’
UNION ALL
SELECT ‘01’ EMPRESA ,C.CT2_FILIAL AS FILIAL , ‘D’ AS TIPO,
C.CT2_DEBITO AS CONTA, C.CT2_VALOR AS VALOR, C.CT2_HIST AS HISTORICO
FROM CT2010 C
WHERE C.D_E_L_E_T_ <> '

AND C.CT2_TPSALD = 1
AND C.CT2_DEBITO = ‘210100620’
and c.CT2_DATA BETWEEN ‘20170201’ and ‘20170228’
UNION ALL
SELECT ‘01’ EMPRESA, ‘’ AS FILIAL, ‘SAT’ AS TIPO,
C7.CT7_CONTA AS CONTA, (SUM(C7.CT7_CREDIT) - SUM(C7.CT7_DEBITO)) AS VALOR, ‘’ AS HISTORICO
FROM CT7010 C7
WHERE C7.D_E_L_E_T_ <> ‘*’
AND C7.CT7_TPSALD = 1
AND C7.CT7_CONTA BETWEEN ‘210100620’ AND ‘210100620’
AND C7.CT7_DATA <= ‘20170228’
GROUP BY C7.CT7_CONTA

e minha ideia é substituir os valores por campos criados no filtro, ficando da seguinte forma:

SELECT ‘01’ EMPRESA , C.CT2_FILIAL AS FILIAL , ‘C’ AS TIPO,
C.CT2_CREDIT AS CONTA, C.CT2_VALOR VALOR, C.CT2_HIST HISTORICO
FROM CT2010 C
WHERE C.D_E_L_E_T_ <> ‘
AND C.CT2_TPSALD = 1
AND C.CT2_CREDIT= ‘{v_conta}’
and c.CT2_DATA BETWEEN ‘20170201’ and ‘20170228’
UNION ALL
SELECT ‘01’ EMPRESA ,C.CT2_FILIAL AS FILIAL , ‘D’ AS TIPO,
C.CT2_DEBITO AS CONTA, C.CT2_VALOR AS VALOR, C.CT2_HIST AS HISTORICO
FROM CT2010 C
WHERE C.D_E_L_E_T_ <> '

AND C.CT2_TPSALD = 1
AND C.CT2_DEBITO =’{v_conta}’
and c.CT2_DATA BETWEEN ‘20170201’ and ‘20170228’
UNION ALL
SELECT ‘01’ EMPRESA, ‘’ AS FILIAL, ‘SAT’ AS TIPO,
C7.CT7_CONTA AS CONTA, (SUM(C7.CT7_CREDIT) - SUM(C7.CT7_DEBITO)) AS VALOR, ‘’ AS HISTORICO
FROM CT7010 C7
WHERE C7.D_E_L_E_T_ <> ‘*’
AND C7.CT7_TPSALD = 1
AND C7.CT7_CONTA = ‘{v_conta}’
AND C7.CT7_DATA <= ‘20170228’
GROUP BY C7.CT7_CONTA


para isso estou criando campos em filtros
v_conta
v_dt_saldo
etc

Estou encontrando dificuldade no campo data, pois o formato interno do sql a data é tipo aaaammdd.
Criei o campo v_saldo tipo data e coloquei la na condição AND C7.CT7_DATA <= ‘{v_dt_saldo}’ e quando dou um echo no campo ele esta trazendo o formato 2017-02-28

Em eventos no filtro no onvalidate
estou usando
{v_dt_saldo} = sc_date_conv({v_dt_saldo},“aaaa-mm-dd”,“aaaammdd”);

porém não está funcionando.
alguem poderia me ajudar?

Você chegou a testar o código que passei?

Resolvi o problema da data da seguinte forma:

Os campos criados coloquei o tipo data e no campo Tipo Sql coloquei Texto e funcionou perfeitamente.

Kléber , muito obrigada por sua atenção.
Não cheguei a testar seu código não , quando voltei aqui no fórum já tinha encontrado a solução. Mas tenha certeza que funcionaria, pois
acompanho o fórum e sei que você está entre vários outros são expert no SCRIPTCASE.

Novamente obrigada por sua atenção.

Na Sua Consulta (GRID) tem na parte filtro campos:
Crie estes campos:
DataInicial >> Formato Interno aaaammdd
DataFinal >> Formato Interno aaaammdd
GrupoConta = tamanho texto igual a v_conta da tabela

  • Em condições de Filtro desabilite todas as opções para estes campos, para ele não mostrar as condições.

Agora no seu SQL principal da consulta colar este SQL:

SELECT ‘01’ EMPRESA , C.CT2_FILIAL AS FILIAL , ‘C’ AS TIPO,
C.CT2_CREDIT AS CONTA, C.CT2_VALOR VALOR, C.CT2_HIST HISTORICO
FROM CT2010 C
WHERE C.D_E_L_E_T_ <> ‘
AND C.CT2_TPSALD = 1
AND C.CT2_CREDIT= ‘[GrupoConta]’
and c.CT2_DATA BETWEEN ‘[DataInicial]’ and ‘[DataFinal]’
UNION ALL
SELECT ‘01’ EMPRESA ,C.CT2_FILIAL AS FILIAL , ‘D’ AS TIPO,
C.CT2_DEBITO AS CONTA, C.CT2_VALOR AS VALOR, C.CT2_HIST AS HISTORICO
FROM CT2010 C
WHERE C.D_E_L_E_T_ <> '

AND C.CT2_TPSALD = 1
AND C.CT2_DEBITO =’[GrupoConta]’
and c.CT2_DATA BETWEEN ‘[DataIncial]’ and ‘[DataFinal]’
UNION ALL
SELECT ‘01’ EMPRESA, ‘’ AS FILIAL, ‘SAT’ AS TIPO,
C7.CT7_CONTA AS CONTA, (SUM(C7.CT7_CREDIT) - SUM(C7.CT7_DEBITO)) AS VALOR, ‘’ AS HISTORICO
FROM CT7010 C7
WHERE C7.D_E_L_E_T_ <> ‘*’
AND C7.CT7_TPSALD = 1
AND C7.CT7_CONTA = ‘[GrupoConta]’
AND C7.CT7_DATA <= ‘[DataFinal]’
GROUP BY C7.CT7_CONTA