Fórum Dúvida sobre os componentes da aba quot;DBEXPRESSquot; #243902

21/07/2004

0

Seguinte galera...

tenho uma tabela de produtos por exemplo que tem ´10000´ registros...

ai eu coloco na minha query
x.sql.add(´select * from tbl_produto´ ´where prod_codigo = ´1´´);
x.open;
if x.recordcount = 1 then
showmessage(´apenas um´);

agora se eu fizer o seguinte
x.sql.add(´select * from tbl_produto´);
x.sql.add(´where prod_codigo = ´1´´);
x.open;
if x.recordcount = 1 then
showmessage(´apenas um´);

ele não faz nada... e quando vc vai ver o recordcount está com valor de ´10000´ que é a quantidade de registros que está na tabela....
só que ai que vem... se vc for colocar em um grid e fizer por exemplo
for y:=1 to x.recordcount do
grid.cells[1,1]:=x.fields[0].asstring;
ele coloca o único valor certo só que ele vai adicionando linha em branco

agora se eu fizer
while not x.eof do
grid.cells[1,1]:=x.fields[0].asstring;

ele coloca apenas o primeiro como deveria ser e só.. não adiciona mas linhas em brancos.... isso é um bug do delphi????


Ztiago

Ztiago

Responder

Posts

21/07/2004

Macario

Ola programador, boa tarde.


Veja bem creio que o equivoco está o codigo.

[color=green:4f93931824] x.sql.add(´select * from tbl_produto´ ´where prod_codigo = ´1´´); x.open; if x.recordcount = 1 then showmessage(´apenas um´); [/color:4f93931824]


Quando se monta instruções SQL dinamicas deve-se usar parametros.

[color=darkred:4f93931824] x.sql.add(´select * from tbl_produto´); x.sql.add(´where prod_codigo = :Codigo´); x.sql.parambyname(´Codigo´).asString := edit1.text; x.open; if x.recordcount = 1 then showmessage(´apenas um´); [/color:4f93931824]


ou entao tente

[color=darkred:4f93931824] x.sql.add(´select * from tbl_produto´); x.sql.add(´where prod_codigo =´+QuotedStr(´1´)); x.sql.parambyname(´Codigo´).asString := edit1.text; x.open; if x.recordcount = 1 then showmessage(´apenas um´); [/color:4f93931824]


na duvida poste novamente


Responder

Gostei + 0

21/07/2004

Beppe

Não tá sobrando duas aspas no primeiro select?

No resto, estás esquecendo de dar x.Next;


Responder

Gostei + 0

23/07/2004

Ztiago

seguinte as duas aspas foi um erro de digitação...

e se vc fizer usando o ´:codigo´ ou seja parâmetro pode verificar que ai ele não aceita o recordcount....


Responder

Gostei + 0

23/07/2004

Macario

Ola colega, tente isso

[color=green:bde4ac3224] with Query1 do begin SQL.Add(´Select * from tbl_produto´); SQL.Add(´Where pro_codigo = :Codigo´); Params.ParamByName(´codigo´).Asinteger :=inttostr(edit1.text); end; ShowMessage(´Total de registros :´+ IntToStr(Query1.RecordCount));[/color:bde4ac3224]



Responder

Gostei + 0

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

Aceitar