Comandos sql no delphi são direfentes???

Delphi

18/02/2004

Fala Galera!
É o seguinte...
Eu tenho um programinha para executar comandos SQL no meu banco. Tem um pessoal aqui que recebe os scripts sql prontos, a única coisa q eles fazem é copiar o texto para o campo (no caso o memo.text) no programa e mandam executar.
O q eu faço para executar o comando digitado nessa memo é:
query.SQL.add(memo.text);
query.open;

só q me parece q existem comando q o programa não está aceitando... como por exemplo, o update, delete...

Então a minha dúvida é: A forma de executar estes comando é diferente dentro do delphi??? Tenho certeza q vcs já passaram por esse problema. Como vcs resolveram???
Existe algo q eu possa fazer???

Agradeço a todos!


Bueno

Bueno

Curtidas 0

Respostas

Bueno

Bueno

18/02/2004

Para não deixar dúvidas, aí está o código do botão para executar o script.
Alguém sabe o q pode estar ocorrendo???

try
statusbar1.panels[0].text:=´Executando script...´;
 screen.cursor := crSQLWait;
 cursor:=crSQLwait;
 query.close;
 query.active:=false;
 query.sql.Clear;
 query.SQL.add(memo.text);
 query.open;
 query.active:=true;
 cursor:=crdefault;
 screen.cursor := crDefault;
 statusbar1.panels[0].text:=´Script executado com sucesso!´;
 except
 statusbar1.panels[0].text:=´Ocorreu algum erro ao executar o script!´;
 end;
 cursor:=crdefault;
 screen.cursor := crDefault;
end
else
begin
messagebox(form1.handle,´Não existe script para ser executado.´,´ATENÇÃO´,0+0+64);
memo.setfocus;
exit;
end;



GOSTEI 0
Fabio.hc

Fabio.hc

18/02/2004

SQL com Insert, Update e Delete:
[b:4f28706554]query.ExecSQL;[/b:4f28706554]
no lugar de query.open;


GOSTEI 0
Bueno

Bueno

18/02/2004

Fábio, continuo com o mesmo problema. Dê uma olhada no meu código. Eu utilizo componentes da paleta ADO. Será q ter a ver???
Por favor, você ou alguém teria alguma sugestão para corrigir este problema???

if memo.text <> ´´ then
begin
try
statusbar1.panels[0].text:=´Executando script...´;
 screen.cursor := crSQLWait;
 cursor:=crSQLwait;
 query.close;
 query.active:=false;
 query.sql.Clear;
 query.SQL.add(memo.text);
 query.active:=true;
 query.Execsql;
 cursor:=crdefault;
 screen.cursor := crDefault;
 statusbar1.panels[0].text:=´Script executado com sucesso!´;
 except
 statusbar1.panels[0].text:=´Ocorreu algum erro ao executar o script!´;
 end;
 cursor:=crdefault;
 screen.cursor := crDefault;
end
else
begin
messagebox(form1.handle,´Não existe script para ser executado.´,´ATENÇÃO´,0+0+64);
memo.setfocus;
exit;
end;


C eu fizer isso por exemplo: [b:bbfc2e0afd]insert into tabela (campo_1) values (´x´)[/b:bbfc2e0afd] e mandar rodar, acontece a escessão na minha rotina, Pode ser a rotina o problema???


GOSTEI 0
Dbergkamps

Dbergkamps

18/02/2004

Pode ser só um erro de digitação mas ao invés de memo.text o correto não seria memo.lines?


GOSTEI 0
Andremuller

Andremuller

18/02/2004

Eu copiei o teu script retirei os query.active que são desnecessários
e troquei o query.SQL.add(memo.text)
para SqlDataSet.CommandText:= memo.text já que eu usei DbExpress
e o script rodou legal.

Mas como o outro colega disse, tu deve cuidar se o comando a ser executado é query.Open ou query.ExecSQL.

Espero ter ajudado,
Falou.


GOSTEI 0
Bueno

Bueno

18/02/2004

Valew galera!
Havia me esquecido desse detalhe do ExecSQL.
Eu não sabia q era desnecessário o active... hehe


GOSTEI 0
POSTAR