Componente DBExpress igual ao IBSQL da IBX

Delphi

07/10/2008

Comecei um projeto no TurboDelphi Explorer e estou usando o DBExpress para conexão a um banco de dados Firebird. No Delphi 7 + IBX eu fazia o seguinte:

with IBSQL1 do
begin
   if not Transaction.Active then Transaction.StartTransaction;
   Close;
   SQL.Clear;
   SQL.Add(´SELECT DESCRICAO FROM PRODUTOS ORDER BY 1´);
   ExecQuery;
   while not eof do
   begin
      ComboBox1.Items.Add(Fields[0].AsString);
      Next;
   end;
   if Transaction.Active then Transaction.Commit;
end;


Agora no DBExpress já estou conectado ao banco, executo a SQL e não retorna nada. Coloquei breakpoint dentro do ´while´ e não passa por lá. A SQL que estou usando retorna vários registros no IBOConsole. Aqui vai o código que estou usando para o DBExpress.

with SQLQuery1 do
begin
   if Active then Close;
   SQL.Clear;
   SQL.Add(´SELECT DESCRICAO FROM PRODUTOS ORDER BY 1´);
   ExecSQL;
   while not eof do
   begin
      ComboBox1.Items.Add(Fields[0].AsString);
      Next;
   end;
end;


Como podem ver, a única diferença é que em vez de ExecQuery da IBX, estou usando o ExecSQL da SQLQuery. É assim mesmo?

Obrigado.


Djorius

Djorius

Curtidas 0

Respostas

Djorius

Djorius

07/10/2008

Já descobri que para instruções SELECT eu tenho que usar ´Open´ em vez de ´ExecSQL´. Mas dessa forma, após executar o ´Open´ dá o seguinte erro:

´Cursor not returned from Query´

Alguém sabe o que é isso? Problema de driver? Estou usando o dbexpUIBfire15.dll.

Obrigado.


GOSTEI 0
Paullsoftware

Paullsoftware

07/10/2008

Boa noite amigo o comando ExecSQL só deve ser usado quando o a execução da SQL não retornar nenhum dado, por exemplo:

cds.close;
cds.commandText := ´delete from clientes where codigo=1´;
cds.execute;

da maneira acima, não é retornado nenhum dado portanto não há necessidade de usar o SELECT, entendeu?

é usando o comando ExecSQL nas cláusulas: INSERT, DELETE E UPDATE
o SELECT deve ser usado quando for executar alguma consulta no banco! espero ter sido claro e ajudado :wink:


GOSTEI 0
POSTAR