Fórum Duvida simples em sql #261953

14/12/2004

0

Como passo via codigo uma instrucao sql para a tabela, estou tentando assim:

AdoQuery1.SQL.Add(´WHERE datnot > 20/10/2004´) ou
AdoQuery1.SQL.Add(´WHERE datnot > ´+date)

Usando Banco PostgreSql
Sempre tras a query em branco, porem tem registros para listar.
Abs


Felipeiw

Felipeiw

Responder

Posts

14/12/2004

Turbo Drive

Nunca usei o ADO, mas no Zeos funciona assim:

Query1.SQL.Add(´WHERE datnot > :meudia);
Query1.parambyname(´meudia´).asdatetime := strtodate(´14/12/04´);
Query1.open;

Espero que te ajude.


Responder

Gostei + 0

14/12/2004

Vinicius2k

Colega,
... AdoQuery1.SQL.Add(´WHERE datnot > 20/10/2004´) ou AdoQuery1.SQL.Add(´WHERE datnot > ´+date) Usando Banco PostgreSql ...


Não trabalho com PostgreSQL, mas há exemplo de outros SGBDs ele *deve* ter um (ou alguns) formatos de data espefícos para serem aceitos.
Para adicionar a data diretamente, na SQL vc precisará conhecer este formato, e fazer a conversão para string manualmente.

Por este e outros motivos a utilzação de parametros é sempre mais prática e eficiente, como sugeriu o colega Turbo Drive.

T+


Responder

Gostei + 0

14/12/2004

Felipeiw

Caros amigos, mt obrigado pelas dicas, achei otima, porem usei o seguinte codigo e funcionou, o que vcs acham...

Adoquery.Add(´datnot <= ´´´+DateToStr(date)+´´´´);

Abs


Responder

Gostei + 0

14/12/2004

Vinicius2k

Ótimo. O PostgreSQL aceita, então, a data em formato dd/mm/aaaa, porém ´quotada´ (entre aspas). Como eu disse depende de quais formatos ele aceita...
Apenas tome cuidado, pois vc pode não ter o mesmo resultado, dependendo do formato designado no S.O (configurações regionais)... A função DateToStr converte a data em uma string no formato definido para S.O.

Ainda assim, eu prefiro parametros... mas é uma questão pessoal.

T+


Responder

Gostei + 0

14/12/2004

Felipeiw

Caro Vinicius e esta instrucao abaixo, o OR atrapalha a consulta.
Adoquery.Add(´((solleu = ´´ ´´ OR dataju <= ´´´+DateToStr(date)+´´´)) AND (datter IS NULL) AND (codsol = ´+IntToStr(xcodsol)+´) AND tipmen LIKE ´´A´´´);
Abs


Responder

Gostei + 0

14/12/2004

Vinicius2k

Creio que seu problema, neste caso são só os parêntesis... Tente assim :
(Desmembrei para facilitar a visualização e não tenjo como afirmar que a lógica está correta... depende do seu contexto)
(´

  ( 
    (solleu = ´´ ´´)
    OR (dataju <= ´´´+DateToStr(date)+´´´)
  ) 

  AND (datter IS NULL) 
  AND (codsol = ´+IntToStr(xcodsol)+´) 
  AND (tipmen LIKE ´´A´´)

´)


T+
T+


Responder

Gostei + 0

15/12/2004

Vanius

Bom dia.

Utilize
Query1.SQL.Add(´WHERE datnot BETWEEN :´pDataInicial AND pDataFinal:);
Query1.parambyname(´pDataInicial´).Value := Date;
Query1.parambyname(´pDataFinal´).Value := StrToDate(vDataFinal);
Query1.open;

Abraços,

Vanius Girodo


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar