Query retorna sempre o primeiro registro da tabela
Boa tarde a todos,
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
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
Curtidas 0
Respostas
Gandalf.nho
13/10/2005
Tente LIKE ao invés de =
dm.SQLDataSet1.CommandText:=´Select * from Itens where Barcode like :valordigitado´;
dm.SQLDataSet1.CommandText:=´Select * from Itens where Barcode like :valordigitado´;
GOSTEI 0
Dli
13/10/2005
Infelizmente continua acontecendo a mesma coisa.
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
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
Technos
13/10/2005
Amigo...
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
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
Technos
13/10/2005
Agora, o estranho é que o exemplo dado pela Gandalf era pra ter funcionado.
GOSTEI 0
Dedi
13/10/2005
Amigo,
Voce esta limpando o edit antes da consulta então o valor passado é ´´
elimine a linha Edit1.clear;
Voce esta limpando o edit antes da consulta então o valor passado é ´´
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
elimine a linha Edit1.clear;
GOSTEI 0
Technos
13/10/2005
putz... como nao vi isso ?
auehauhaeuheu
Esse clear tem que ser dado na query do seu dataset.
auehauhaeuheu
Esse clear tem que ser dado na query do seu dataset.
GOSTEI 0
Dli
13/10/2005
Amigos,
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é
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
Macario
13/10/2005
Olá programador, tente da maneira abaixo
Espero que ajude.
//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
Macario
13/10/2005
Ficou ruim de entender
[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;
[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