Erro ao adicionar código SQL à Query - O que está errado?
Olá,
Não consigo descobrir onde estou errando!!
A minha query para Alteração contém:
´UPDATE tabela
SET Campo = :PARÂMETRO...´
onde passo os valores por parâmetros, mas a cláusula:
´WHERE Campo = ...´
para que ele possa alterar apenas um determinado registro eu passo em tempo de execução (de dentro do programa):
DM.QryAlteração.SQL.ADD(´ WHERE Campo = ´ + #39 + (Var) + 39 +
´ AND OutroCampo = ´ + 39 + (Var2) + 39)
Pois eu quero passar variáveis para a Query (´Var´ e ´Var2´)!!!
>> Eu já verifiquei que estas variáveis estão sendo enxergadas neste momento!!!
Ao executar não dá erro nenhum, mas parece que simplesmente ele ignora esta linha do código (onde eu adiciono na query a cláusula WHERE), pois ele altera todos os registros da tabela, como se não houvesse condição!!
O que eu faço pelo amor de Deus?????
Obrigada!!!
Não consigo descobrir onde estou errando!!
A minha query para Alteração contém:
´UPDATE tabela
SET Campo = :PARÂMETRO...´
onde passo os valores por parâmetros, mas a cláusula:
´WHERE Campo = ...´
para que ele possa alterar apenas um determinado registro eu passo em tempo de execução (de dentro do programa):
DM.QryAlteração.SQL.ADD(´ WHERE Campo = ´ + #39 + (Var) + 39 +
´ AND OutroCampo = ´ + 39 + (Var2) + 39)
Pois eu quero passar variáveis para a Query (´Var´ e ´Var2´)!!!
>> Eu já verifiquei que estas variáveis estão sendo enxergadas neste momento!!!
Ao executar não dá erro nenhum, mas parece que simplesmente ele ignora esta linha do código (onde eu adiciono na query a cláusula WHERE), pois ele altera todos os registros da tabela, como se não houvesse condição!!
O que eu faço pelo amor de Deus?????
Obrigada!!!
Fatima
Curtidas 0
Respostas
Rômulo Barros
17/07/2003
:twisted: :evil:
Provavelmente vc está utilizando o seguinte comando:
DM.QryAlteração.[color=red:cf97de03a5]Open[/color:cf97de03a5];
// O ´DM.QryAlteração.Open´ deve ser utilizado apenas para consultas...
Tente o Seguinte:
DM.QryAlteração.[color=red:cf97de03a5]ExecSql[/color:cf97de03a5];
// O ´DM.QryAlteração.ExecSql´ Deve ser utilizado quando tivermos instruções como ´Insert, Update, Delete...´ em nossa query...
Provavelmente vc está utilizando o seguinte comando:
DM.QryAlteração.[color=red:cf97de03a5]Open[/color:cf97de03a5];
// O ´DM.QryAlteração.Open´ deve ser utilizado apenas para consultas...
Tente o Seguinte:
DM.QryAlteração.[color=red:cf97de03a5]ExecSql[/color:cf97de03a5];
// O ´DM.QryAlteração.ExecSql´ Deve ser utilizado quando tivermos instruções como ´Insert, Update, Delete...´ em nossa query...
GOSTEI 0
Midas
17/07/2003
acho que deveria passar todo o codigo via programação ... exemplo
with dtmodule.query do
begin
sql.clear;
close;
sql.add(´update tabela´);
sql.add(´set campo=parametros´);
sql.add(´where ....´);
paramby(´parametro1´):=....;
paramby(´parametro2´):=...;
....
execsql;
update;
end;
tente assim...
with dtmodule.query do
begin
sql.clear;
close;
sql.add(´update tabela´);
sql.add(´set campo=parametros´);
sql.add(´where ....´);
paramby(´parametro1´):=....;
paramby(´parametro2´):=...;
....
execsql;
update;
end;
tente assim...
GOSTEI 0
Delmar
17/07/2003
Só mais uma dica
Antes de executar, vc pode verificar se a sintaxe ficou correta
exibindo a string SQL
showmessage(query1.SQL.Text);
Assim como os demais colegas, reforço a sugetão de que troque as variáveis, por parâmetros
T+
Antes de executar, vc pode verificar se a sintaxe ficou correta
exibindo a string SQL
showmessage(query1.SQL.Text);
Assim como os demais colegas, reforço a sugetão de que troque as variáveis, por parâmetros
T+
GOSTEI 0