Componente DBExpress igual ao IBSQL da IBX
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:
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.
Como podem ver, a única diferença é que em vez de ExecQuery da IBX, estou usando o ExecSQL da SQLQuery. É assim mesmo?
Obrigado.
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
Curtidas 0
Respostas
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.
´Cursor not returned from Query´
Alguém sabe o que é isso? Problema de driver? Estou usando o dbexpUIBfire15.dll.
Obrigado.
GOSTEI 0
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:
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:
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