SQL com nome dinâmico de tabelas.
Pessoal,
Preciso fazer um update no mesmo campo de várias tabelas. Fiz a função abaixo e queria saber se funciona. Desde já agradeço. Vinicius
procedure TfrmPrincipal.FazUpdate(pNomeTabela, pCodModOriginal, pCodModTroca: string);
begin
with qryAux do
begin
Close;
SQL.Clear;
SQL.Add(´UPDATE´ + pNomeTabela + ´SET COD_MODULO =:novocodigo´);
SQL.Add(´WHERE COD_MODULO =:codigoatual´);
ParamByName(´novocodigo´).AsString := pCodModTroca;
ParamByName(´codigoatual´).AsString := pCodModOriginal;
ExecSQL;
end;
end;
Preciso fazer um update no mesmo campo de várias tabelas. Fiz a função abaixo e queria saber se funciona. Desde já agradeço. Vinicius
procedure TfrmPrincipal.FazUpdate(pNomeTabela, pCodModOriginal, pCodModTroca: string);
begin
with qryAux do
begin
Close;
SQL.Clear;
SQL.Add(´UPDATE´ + pNomeTabela + ´SET COD_MODULO =:novocodigo´);
SQL.Add(´WHERE COD_MODULO =:codigoatual´);
ParamByName(´novocodigo´).AsString := pCodModTroca;
ParamByName(´codigoatual´).AsString := pCodModOriginal;
ExecSQL;
end;
end;
Vfalseth
Curtidas 0
Respostas
Jurandi
30/06/2003
Com certeza funciona, mas não se esqueça que ao concatenar strings, não podemos ignorar os espaços (brancos) existentes entre clausulas/comandos.
Boa sorte,
Jurandi
Boa sorte,
Jurandi
GOSTEI 0
Thaisandrade
30/06/2003
Não testei seu exemplo para saber se funciona, mas você pode gerar a instrução S.Q.L. usando variáveis normalmente. Lembre-se que a instrução S.Q.L. nada mais é do que uma sequência de caracteres que você pode concatenar.Só tem que ter cuidado com os tipos de dados, no caso de uma comparação ou, no seu caso, de um update.
GOSTEI 0
Leonardo Wolf
30/06/2003
Além de concatenar vc precisa passar precisa usar a função QuotedStr
ou incluir +´´´+nomedatable+´´´´
ou incluir +´´´+nomedatable+´´´´
GOSTEI 0