Fórum consulta sql #375570
03/10/2009
0
estou fazendo dessa forma com filtered:
dm_cliente_atrasado.cds_titulo.open; dm_cliente_atrasado.cds_titulo.indexfieldnames := ´DT_VENCIMENTO´; dm_cliente_atrasado.cds_titulo.filtered := false; dm_cliente_atrasado.cds_titulo.filter := ´DT_VENCIMENTO < ´+ Quotedstr(datetostr(Date))+ ´and PAGAR_RECEBER =´+(´1´) + ´and DT_PAGAMENTO IS NULL´; dm_cliente_atrasado.cds_titulo.filtered := true;
e dessa forma com a sql mas nao da certo
Var Q: TSQLQuery; begin Q := TSQLQuery.Create(nil); Q.SQLConnection := dm_cliente_atrasado.sq_titulo.SQLConnection; try /// Q.Close; Q.SQL.Text := ´ SELECT ´ +#13+´ T.DT_VENCIMENTO, ´ +13+´ T.PAGAR_RECEBER, ´ +13+´ T.DT_PAGAMENTO ´ +13+´ FROM TITULO T ´ +13+´WHERE (´ +13+´ (T.DT_VENCIMENTO < ´+Quotedstr (datetostr (Date))+´) ´ +13+´ AND´ +13+´ PAGAR_RECEBER =´+(´1´) + ´and DT_PAGAMENTO IS NULL´ +13+´)´; Q.Open; finally FreeAndNil(Q); end;
Tchucky
Curtir tópico
+ 0Posts
03/10/2009
Afarias
// +#13+´ (T.DT_VENCIMENTO < ´+Quotedstr (datetostr (Date))+´) ´
Vc não pode -- ou não deve nunca -- simplesmente usar DateToStr() para formatar uma data enviada para um servidor de banco de dados.
DateToStr() vai usar a formatação da máquina cliente que pode variar -- ou a definida na sua aplicação (fixa) -- mas vc deve garantir que o formato enviado ao banco seja um dos formatos reconhecidos pelo mesmo.
Ex: Se estiver usando FIREBIRD vc não pode informar uma data no formato padrão brasileiro (dd/mm/yyyy) -- o FB não vai entender.
Ao formatar datas para um SQL use sempre FormatDateTime() assim vc define o formato correto para o banco que estiver usando.
Esse seu código por exemplo, se fosse para FB, deveria ficar algo como:
+13+´ (T.DT_VENCIMENTO < ´+QuotedStr (FormatDateTime(´dd.mm.yyyy´, Date))+´) ´
T+
Gostei + 0
03/10/2009
Tchucky
com a sql ele nao da nada
estou usando o firebird como banco de dados
Gostei + 0
03/10/2009
Afarias
|tabela ela nao abre so abre se eu usar o filtered...
vc pode explicar o q quer dizer com ´não abre´ ??
Outra coisa, observa o seu código:
Q.Open; finally FreeAndNil(Q); end;
vc abre a consulta e logo em seguida destrói o componente query... vc não faz nada com o resultado, nem pode pq vc destrói o componente logo depois de abrir... está correto isso?
T+
Gostei + 0
03/10/2009
Tchucky
todas as minhas consultas q eu crio em tempo de execução é dessa forma q estou usando ai so essa q esta addno esse problema...
Gostei + 0
03/10/2009
Afarias
|estou usando ai so essa q esta addno esse problema...
Para mim é impossível acreditar que esse seu código funcione de qualquer forma. Depois q vc destrói o objeto não tem como um Grid mostrar os valores de um objeto inexistente.
No mínimo uma tabela de memória (como CDS) deveria estar carregando o resultado da consulta antes da Query ser destruída. Mas isto não é o q é mostrado no código apresentado.
Ou o código mostrado está incompleto ou vc está enganado sobre o q está fazendo.
T+
Gostei + 0
03/10/2009
Tchucky
Gostei + 0
04/10/2009
Afarias
Vc deveria ter um ClientDataSet/DataSetProvider associado a este TSQLQuery (q não deveria ser criado dinamicamente a não ser q vc queira carregar o ClientDataSet manualmente).
Ao definir o SQL do TSQLQuery vc iria fechar/abrir o ClientDataSet para q ele executasse a Query e fosse carregado com seus dados. O Grid deveria estar associado então ao ClientDataSet.
T+
Gostei + 0
04/10/2009
Tchucky
Gostei + 0
04/10/2009
Afarias
Talvez outra pessoa possa ajudar com seu problema *[b:8e36e3f475]acima[/b:8e36e3f475]*. Boa sorte.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)