Duvida simples em sql
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
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
Curtidas 0
Respostas
Turbo Drive
14/12/2004
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.
Query1.SQL.Add(´WHERE datnot > :meudia);
Query1.parambyname(´meudia´).asdatetime := strtodate(´14/12/04´);
Query1.open;
Espero que te ajude.
GOSTEI 0
Vinicius2k
14/12/2004
Colega,
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+
...
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+
GOSTEI 0
Felipeiw
14/12/2004
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
Adoquery.Add(´datnot <= ´´´+DateToStr(date)+´´´´);
Abs
GOSTEI 0
Vinicius2k
14/12/2004
Ó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+
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+
GOSTEI 0
Felipeiw
14/12/2004
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
Adoquery.Add(´((solleu = ´´ ´´ OR dataju <= ´´´+DateToStr(date)+´´´)) AND (datter IS NULL) AND (codsol = ´+IntToStr(xcodsol)+´) AND tipmen LIKE ´´A´´´);
Abs
GOSTEI 0
Vinicius2k
14/12/2004
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)
T+
T+
(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+
GOSTEI 0
Vanius
14/12/2004
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
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
GOSTEI 0