Fórum parametros TSqlQuery #392557
15/12/2010
0
Parece que o SqlQuery não aceita passar param ou no que estou errando.
Tenho um form onde o usuario informa data e data2 para emissao das vendas de um certo cliente.
O SqlQuery não está deixando, o que está errado ????
Grato.
SELECT B.NOME, A.DATA, A.DOCUMENTO, A.NUMERO, A.TOTAL
FROM TVENDAS A INNER JOIN TBCLIENTES B ON (A.CLIENTE = B.CONTROLE)
WHERE (A.DATA >= :DATA1 AND A.DATA <= :DATA2)
Grato
Marcos Roberto
Curtir tópico
+ 0Posts
16/12/2010
Felipe Caputo
Gostei + 0
16/12/2010
Marcos Roberto
Felipe
Isto eu já fiz, mas o problema continua assim mesmo, parece que o bug é quando usa data.
fico no aguardo.
vlw
Gostei + 0
16/12/2010
Felipe Caputo
Gostei + 0
16/12/2010
Marcos Roberto
Tentei mudar o parametro data para string, depois peguei o TdateTimePicker e converti para 'MM/DD/AAAA' e passei para o Parametro, mesmo assim continua o erro 'dbExpress Error: Operation not Supported' quando chamo o relatorio QuickReport.
* funcao MMDDAAAA retorna uma data 'MM/DD/AAAA' já confirmei tá ok
Edit1 e Edit2 sao do form do componente TDateTimePicker
segue:
sqlComando := 'SELECT * FROM TVENDAS ';
sqlComando := sqlComando + ' INNER JOIN TBCLIENTES ON TVENDAS.CLIENTE = TBCLIENTES.CONTROLE ';
sqlComando := sqlComando + 'WHERE (TVENDAS.DATA >= :data1) AND (TVENDAS.DATA <= :data2) ';
dm1.QryVLDia.Active := false;
dm1.QryVLDia.Close;
dm1.QryVLDia.SQL.Clear;
dm1.QryVLDia.SQL.Add(sqlComando);
dm1.QryVLDia.ParamByName('data1').AsString := MMDDAAAA(dateToStr(Edit1.date)) ;
dm1.QryVLDia.ParamByName('data2').AsString := MMDDAAAA(dateToStr(Edit2.date));
dm1.QryVLDia.Open;
dm1.QryVLDia.Active := true;
* já tentei verificar o dm1.QryVLDia.Reccount ai o erro passa a ser neste ponto
F_Vdia.QuickRep1.Preview;
* se comentar a linha que chama o 'F_Vdia.QuickRep1.Preview' o erro não apresenta mais. Então se tudo ocorreu bem porque o dm1.QryVLDia.Reccount dá o erro ???
Estou cansado, rsrsrsrsrsrs
Valeu
Gostei + 0
16/12/2010
Leonardo Xavier
dm1.QryVLDia.Close;
dm1.QryVLDia.SQL.Clear;
dm1.QryVLDia.SQL.Add(' SELECT * FROM TVENDAS INNER JOIN TBCLIENTES ON TVENDAS.CLIENTE = TBCLIENTES.CONTROLEWHERE (TVENDAS.DATA >= :data1) AND (TVENDAS.DATA <= :data2)');
dm1.QryVLDia.ParamByName('data1').AsString := MMDDAAAA(dateToStr(Edit1.date)) ;
dm1.QryVLDia.ParamByName('data2').AsString := MMDDAAAA(dateToStr(Edit2.date));
dm1.QryVLDia.prepared;
dm1.QryVLDia.Open;
Gostei + 0
17/12/2010
Marcos Roberto
Ainda não funciona.
Vou refazer o relatorio para ver se resolve;
Já tentei usar o relatorio sem passar os parametros e func legal. o problema são os parametros, vou investigar mais.
vlw
Gostei + 0
17/12/2010
Marcos Roberto
Resolvi da seguinte forma, ja incluo as datas formatas na sentença SQL e depois faço a query.
Mas ainda preciso saber como efetuar querys passando parametros, se alguem puder me ajudar agradeço.
vlw
Gostei + 0
28/12/2011
Andre Nobre
[code]
SQLQuery.close;
SQLQuery.sql.clear;
SQLQuery.sql.add(SELECT B.NOME, A.DATA, A.DOCUMENTO, A.NUMERO, A.TOTAL );
SQLQuery.sql.add(FROM TVENDAS A INNER JOIN TBCLIENTES B ON (A.CLIENTE = B.CONTROLE) );
SQLQuery.sql.add(WHERE (A.DATA >= :DATA1 AND A.DATA
Gostei + 0
28/12/2011
Andre Nobre
Esqueci de falar, que tem que usar a unit "SQLTimSt".
Falow...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)