Dúvida sobre os componentes da aba quot;DBEXPRESSquot;
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????
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
Curtidas 0
Respostas
Macario
21/07/2004
Ola programador, boa tarde.
Veja bem creio que o equivoco está o codigo.
Quando se monta instruções SQL dinamicas deve-se usar parametros.
ou entao tente
na duvida poste novamente
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
GOSTEI 0
Beppe
21/07/2004
Não tá sobrando duas aspas no primeiro select?
No resto, estás esquecendo de dar x.Next;
No resto, estás esquecendo de dar x.Next;
GOSTEI 0
Ztiago
21/07/2004
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....
e se vc fizer usando o ´:codigo´ ou seja parâmetro pode verificar que ai ele não aceita o recordcount....
GOSTEI 0
Macario
21/07/2004
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]
GOSTEI 0