Fórum Consulta Parametrizada não retorna dados #357832
30/04/2008
0
Tabela PREFEITURAS
id_prefeitura
nome_prefeitura
Tabela Informativo
id_informativo
descricao
valo
id_prefeitura
na minha query da consulta parametrizei meu select da sequinte forma, select * from INFORMATIVO where ID_PREFEITURA=:PID_PREFEITURA.
O que eu quero com isso, mostrar todos os informativos que estão em uma prefeitura tal. Fiz um DBGrid que quando da duplo clique abre um form com esses dados da prefeitura.
no onshow do form da consulta fiz assim:
Junior Bezerra
Curtir tópico
+ 0Posts
30/04/2008
Mazzi
nas linhas:
[i]dm.qryConsulta.SQL.Add(´select * from INFORMATIVO where´); [/i]
// coloque um ´espacinho... entre o where e a aspas//
//ex: [b]where ´);[/b] ok
dm.qryConsulta.SQL.Add(´ID_PREFEITURA = :PID_PREFEITURA´);
dm.qryConsulta.Params.ParamByName(´PID_PREFEITURA´).AsInteger:=
dm.cdsPrefeiturasID_PREFEITURA.AsInteger;
//após passar um parametro dê um Prepare;
//ex: [b]dm.cdsPrefeitura.Prepare;[/b]
dm.qryConsulta.Open;
até aui tudo bem, o que pode estar acontecendo é que o processo é iniciado e finalizado logo após o seu finally. Fechando a conexão.
[i]
finally
dm.SQLConnection1.Close;[/i]
//tente finalizar sua conexão ao fechar o formulario, por exemplo inserindo o dm.SQLConnection1.Close; no evento onClose do Form, ou algo do tipo;
Abraços++
Gostei + 0
30/04/2008
Junior Bezerra
Obrigado...
Gostei + 0
30/04/2008
Junior Bezerra
dm.cdsPrefeitura.Prepare;
ele nem auto completa na dica do Delphi nem eu forçando e colocando normal da erro: Undeclared identifier: ´Prepare´.
O que pode ser?
Gostei + 0
30/04/2008
Macario
Ocorre que você esta fechando a conexão após efetuar a consulta.
qryConsulta é qual tipo de dataset? ADOQuery? SQLQuery?
Visto que o mesmo não faz cache da consulta.
Use Clientdataset para tal finalidade.
p.s.: Em aplicacões Win32 não se deve aplicar a mesma metodologia que na WEB, abrindo e fechando conexão.
8)
Gostei + 0
30/04/2008
Rjun
dm.qryConsulta.SQL.Clear; dm.qryConsulta.SQL.Add(´select * from INFORMATIVO where´); dm.qryConsulta.SQL.Add(´ID_PREFEITURA = :PID_PREFEITURA´); dm.qryConsulta.Params.ParamByName(´PID_PREFEITURA´).AsInteger:= dm.cdsPrefeiturasID_PREFEITURA.AsInteger; dm.qryConsulta.Open; try // Aqui você faz o que tiver que fazer com sua query finally dm.qryConsulta.Close; end;
Gostei + 0
30/04/2008
Junior Bezerra
Gostei + 0
30/04/2008
Junior Bezerra
Agora fiquei encabulado pq não consigo via código SQL, o que estou fazendo errado, outra coisa a alguma perda de performace assim cmo eu consegui?
Gostei + 0
01/05/2008
Mazzi
não colocou aquela parte do
[i]dm.SQLConnection1.Close[/i];
senao a sua conexao fecharia.
assim tah certo, vai fundo. Sucesso!
Gostei + 0
01/05/2008
Junior Bezerra
Gostei + 0
01/05/2008
Mazzi
Perfeito.
Gostei + 0
01/05/2008
Junior Bezerra
Só mais uma coisa qual a melhor opção para fazer um insert, delete, update? Via código SQL ou normal mesmo tipo: dm.cdsconsulta.Insert;
vlw...
Gostei + 0
02/05/2008
Mazzi
o mais fácil e mais usado vais ser o TDataSet.Insert mesmo.
Lembre-se ainda, se for usar em rede (Servidor, client) pra não ter problemas de acesso em ao mesmo tempo na rede use os Transactions corretamente.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)