Como comparar duas tabelas
Como faço para fazer uma atualização em uma tabela ,comparando dois campos de tabelas diferentes e me retornando o valor atualizado..
Vou explicar melhor tenho dois campos iguais em duas tabelas diferentes,tenho que comparar o ncm da tabela produtos com o ncm da tabela ncm e assim me retornado o valor da alíquota de imposto que ta na tabela de ncm,para a tabela de produto que existe esse campo alíquota na tabela produto...mais tem que jogar o valor da aliquota da tabela de ncm na tabela de produto no campo aliquota !!!! Como faço isso me ajudem???Obrigado pela atenção
Vou explicar melhor tenho dois campos iguais em duas tabelas diferentes,tenho que comparar o ncm da tabela produtos com o ncm da tabela ncm e assim me retornado o valor da alíquota de imposto que ta na tabela de ncm,para a tabela de produto que existe esse campo alíquota na tabela produto...mais tem que jogar o valor da aliquota da tabela de ncm na tabela de produto no campo aliquota !!!! Como faço isso me ajudem???Obrigado pela atenção
Alan
Curtidas 0
Respostas
Raimundo Pereira
15/12/2016
{ Private declarations }
Function Atualizar_Alq(Comando_SQL:string):boolean;
implementation
{$R *.dfm}
Function TForm1.Atualizar_Alq(Comando_SQL:string):boolean;
begin
QryUpdate.Close;
QryUpdate.sql.Clear;
QryUpdate.sql.Text:=Comando_SQL;
try
QryUpdate.ExecSQL;
Result:=true;
except
Result:=False;
end;
end;
Agora sua rotina.
procedure TForm1.VerificarClick(Sender: TObject);
begin
qryNCM.Close;
qryNCM.FetchAll;
qryNCM.First;
Iniciamos um for na tabela ncm e ao mesmo tempo vamos atualizando
if not qryNCM.Eof then
repeat
//TODOS OS PRODUTOS CUJO NCM SEJA O ATUAL DA TABELA NCM SERÁ ATUALIZADO
Atualizar_Alq('UPDATE TABELA_PRODUTOS SET ALIQ_ICMS='''+qryNCM.FieldByName('ALIQ_ICMS').AsString+''' WHERE NCM='''+qryNCM.FieldByName('NCM').AsString+'''');
qryNCM.Next;
until qryNCM.Eof;
ShowMessage('Atualização finalizada');
end;
Function Atualizar_Alq(Comando_SQL:string):boolean;
implementation
{$R *.dfm}
Function TForm1.Atualizar_Alq(Comando_SQL:string):boolean;
begin
QryUpdate.Close;
QryUpdate.sql.Clear;
QryUpdate.sql.Text:=Comando_SQL;
try
QryUpdate.ExecSQL;
Result:=true;
except
Result:=False;
end;
end;
Agora sua rotina.
procedure TForm1.VerificarClick(Sender: TObject);
begin
qryNCM.Close;
qryNCM.FetchAll;
qryNCM.First;
Iniciamos um for na tabela ncm e ao mesmo tempo vamos atualizando
if not qryNCM.Eof then
repeat
//TODOS OS PRODUTOS CUJO NCM SEJA O ATUAL DA TABELA NCM SERÁ ATUALIZADO
Atualizar_Alq('UPDATE TABELA_PRODUTOS SET ALIQ_ICMS='''+qryNCM.FieldByName('ALIQ_ICMS').AsString+''' WHERE NCM='''+qryNCM.FieldByName('NCM').AsString+'''');
qryNCM.Next;
until qryNCM.Eof;
ShowMessage('Atualização finalizada');
end;
GOSTEI 0
Alan
15/12/2016
No script que você me passou eu posso fazer direto na tabela de produto,verificar se tem essa ncm na tabela de ncm e assim atualizar aliquota na tabela de produto.E como seria essa "QryUpdate".Sou novo no delphi,se vocês puderem me ajudar agradeço muito
GOSTEI 0
Alan
15/12/2016
E como fazer um laço pra percorrer todos os ncm igual e assim atualizar todas as alíquotas de todos os produtos???Por favor,e muito obrigado!!!
GOSTEI 0
Alan
15/12/2016
Como seria essa "QryUpdate",o que eu ponharia dentro dela???E por favor responda minhas dúvidas anteriores e muito obrigado!!!!
GOSTEI 0
Raimundo Pereira
15/12/2016
Bom dia,
Com o passar do tempo, você terá mais produtos que NCM.
Então é melhor você percorrer do o cadastro de NCM e ir executando o update na tabela de produtos.
QryUpdate, não é preciso preencher SQL, apenas conectar a sua cnx principal.
Veja a função que irá realizar o update
Function TForm1.Atualizar_Alq(Comando_SQL:string):boolean;
begin
QryUpdate.Close;
QryUpdate.sql.Clear;
QryUpdate.sql.Text:=Comando_SQL;
try
QryUpdate.ExecSQL;
Result:=true;
except
Result:=False;
end;
end;
No momento em que estiver percorrendo o cadastro de NCM, automaticamente ele irá gerar o script de update e chamar a função.
// Veja aqui neste momento ele gerando o script
Atualizar_Alq('UPDATE TABELA_PRODUTOS SET ALIQ_ICMS='''+qryNCM.FieldByName('ALIQ_ICMS').AsString+''' WHERE NCM='''+qryNCM.FieldByName('NCM').AsString+'''');
Estou fora de escala hoje, se precisar de suporte
Chame no Whz 71.993052489
Com o passar do tempo, você terá mais produtos que NCM.
Então é melhor você percorrer do o cadastro de NCM e ir executando o update na tabela de produtos.
QryUpdate, não é preciso preencher SQL, apenas conectar a sua cnx principal.
Veja a função que irá realizar o update
Function TForm1.Atualizar_Alq(Comando_SQL:string):boolean;
begin
QryUpdate.Close;
QryUpdate.sql.Clear;
QryUpdate.sql.Text:=Comando_SQL;
try
QryUpdate.ExecSQL;
Result:=true;
except
Result:=False;
end;
end;
No momento em que estiver percorrendo o cadastro de NCM, automaticamente ele irá gerar o script de update e chamar a função.
// Veja aqui neste momento ele gerando o script
Atualizar_Alq('UPDATE TABELA_PRODUTOS SET ALIQ_ICMS='''+qryNCM.FieldByName('ALIQ_ICMS').AsString+''' WHERE NCM='''+qryNCM.FieldByName('NCM').AsString+'''');
Estou fora de escala hoje, se precisar de suporte
Chame no Whz 71.993052489
GOSTEI 0
Raimundo Pereira
15/12/2016
Dica importante.
Faça o backup do seu banco de dados
Faça o backup do seu banco de dados
GOSTEI 0
Alan
15/12/2016
Muito Obrigado qualquer duvida entro em contato!!!
GOSTEI 0