Fórum Query retorna sempre o primeiro registro da tabela #299347
13/10/2005
0
Definitivamente estou precisando da ajuda de vocês.
A partir de um Edit (On exit) dispara a query abaixo. No entanto ela me retorna sempre o primeiro registro da tabela, desconsiderando o que foi digitado no Edit.
Por exemplo:
Se digito no Edit: DEHA
A query retorna [b:bb91259ab1]sempre[/b:bb91259ab1] um produto cujo código é LAGO (este é o primeiro registro da tabela). E o registro com o código DEHA existe na tabela.
Já fiz de tudo e a impressão que tenho é que tudo que tento fazer utilizando SQLDataset, não está funcionando. Tenho que declarar alguma coisa na USES, por exemplo? Ou será que pode ser bug do DBExpress(Utilizo Delphi7) ou Firebird 1.5. Ou eu deveria utilizar um sqlquery?
Definitivamente não sei mais o que fazer. E, o pior é que não posso mais abandonar o DBExpress e recomeçar.
Aqui está o código:
Edit1.Clear;
Panel1.Visible:=False;
Panel2.Visible:=False;
Screen.Cursor:=crHourGlass;
dm.SQLDataset1.close;
dm.SQLDataSet1.CommandText:=´Select * from Itens where Barcode=:valordigitado´;
dm.SQLDataSet1.Parambyname(´valordigitado´).asstring:=´¬´+edit1.Text+´¬´;
try
dm.SQLDataset1.open;
panel1.Visible:=True;
panel2.Visible:=True;
except
ShowMessage(´Item not found!´);
panel1.Visible:=False;
panel2.Visible:=False;
end;
Screen.Cursor:=crDefault;
Agradeço qualquer ajuda recebida,
Um abraço a todos.
Jose
Dli
Curtir tópico
+ 0Posts
13/10/2005
Gandalf.nho
dm.SQLDataSet1.CommandText:=´Select * from Itens where Barcode like :valordigitado´;
Gostei + 0
13/10/2005
Dli
Por acaso eu teria que utilizar um CDS e DSP para que os dados fiquem bidirecionais??( Me parece que não faz sentido!).
Poderias me dizer como seria como seria esta mesmo queria, se eu utilizasse sqlquery??
Tentei aqui e deu erro no código.
O que me parece é que simplesmente o command text da query é ignorado.
Jose
Gostei + 0
13/10/2005
Technos
Faço umas 300 consultas dessas todos os dias...
Vê como eu faço, pode ser que lhe ajude.
Primeiro, nao realizo esse tipo de consulta no onexit de um edit (tcomponent), prefiro no onkeypress (#13) do mesmo, isso quando eu uso edit comum, pois geralmente uso om edit do IBO que já faz isso.
Outra pequena diferença: eu crio uma variavel string antes de dar o clear da tabela, atribuo a ela o valor passando antes um TRIM no edit, pra pegar somente o valor que eu quero.
Depois, no parambyname, eu simplesmente passo o valor dessa variável.
Pronto, tenho minha listagem na tela... :P
Gostei + 0
13/10/2005
Technos
Gostei + 0
14/10/2005
Dedi
Voce esta limpando o edit antes da consulta então o valor passado é ´´
elimine a linha Edit1.clear;
Gostei + 0
14/10/2005
Technos
auehauhaeuheu
Esse clear tem que ser dado na query do seu dataset.
Gostei + 0
14/10/2005
Dli
Obrigado pelas respostas. O edit.clear eu já tinha consertado. Meu problema não é esse. Acho que ou estou usando os componentes errados, ou estou setando ou deixando de setar alguma propriedade dentro do object inspector.
Technos, poderias me enviar um exemplo do código que utilizas e me explicar como é este esquema do edit no IBO?
E se eu usar TQuery ao invés de SQLDatase, que propriedades e código devo usar para esta query?
Agradeço desde já toda a ajuda recebida, pois estou com todo o meu trabalho de semanas parado. E, o pior tenho que terminar este software para amanhã de manhã.
Obrigado
José
Gostei + 0
14/10/2005
Macario
//Edit1.Clear; REMOVA Panel1.Visible:=False; Panel2.Visible:=False; Screen.Cursor:=crHourGlass; dm.SQLDataset1.close; dm.SQLDataSet1.CommandText:=´Select * from Itens where Barcode=:valordigitado´; [b][color=red]// TENTE DESTA FORMA[/color][/b] [b][color=orange]dm.SQLDataSet1.Parambyname(´valordigitado´).asstring:=QuotedStr(´¬´+edit1.Text+´¬´);[/color][/b] try dm.SQLDataset1.open; panel1.Visible:=True; panel2.Visible:=True; except ShowMessage(´Item not found!´); panel1.Visible:=False; panel2.Visible:=False; end; if dm.SQLDataset1.isEmpty then ShowMessage(´Não localizado´); Screen.Cursor:=crDefault;
Espero que ajude.
Gostei + 0
14/10/2005
Macario
[color=red:9a2d5ca54f]//Edit1.Clear; REMOVA [/color:9a2d5ca54f]
Panel1.Visible:=False;
Panel2.Visible:=False;
Screen.Cursor:=crHourGlass;
dm.SQLDataset1.close;
[b:9a2d5ca54f][color=orange:9a2d5ca54f]dm.SQLDataSet1.CommandText:=´´;[/color:9a2d5ca54f][/b:9a2d5ca54f]
dm.SQLDataSet1.CommandText:=´Select * from Itens where Barcode=:valordigitado´;
[b:9a2d5ca54f][color=red:9a2d5ca54f]// TENTE DESTA FORMA[/color:9a2d5ca54f][/b:9a2d5ca54f]
[b:9a2d5ca54f][color=orange:9a2d5ca54f]dm.SQLDataSet1.Parambyname(´valordigitado´).asstring:=[/color:9a2d5ca54f][color=red:9a2d5ca54f]QuotedStr(´¬´+edit1.Text+´¬´);[/color:9a2d5ca54f][/b:9a2d5ca54f]
try
dm.SQLDataset1.open;
panel1.Visible:=True;
panel2.Visible:=True;
except
ShowMessage(´Item not found!´);
panel1.Visible:=False;
panel2.Visible:=False;
end;
if dm.SQLDataset1.isEmpty then
ShowMessage(´Não localizado´);
Screen.Cursor:=crDefault;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)