Olá caros colegas! Estou com um com probleminha se possivel alguem possa me ajudar!
preciso fazer uma rotina que fique atualizando duas tabelas iguais em um Banco de Dados Oracle para SQLSever. Utilizo DBExpress, mas estou com duvidas pois a rotina precisa fazer um loop de tempos em tempo consultando no SQLSever se houve alguma alteração atraves do codigo!caso nao encontre o codigo insira na base oracle! fiz asssim! TBSuvinil = Oracle TBSever = SQL Sever procedure TFMain.Timer1Timer(Sender: TObject); var SQL:String; T: TTransactionDesc; hora:String; erro,diferente:boolean; i : Integer; begin i:= 0; Timer1.Enabled := False; //hora de execução if(Time<=StrToTime('07:00:00'))and(Time>=StrToTime('20:00:00'))then exit; try //Pesquisa e uma função PesquisaSQL('select * from BASE_SUVINIL ',Dm.TBServer); Dm.TBServer.First; while not Dm.TBServer.Eof do begin Application.ProcessMessages; erro:=False; PesquisaSQL('select * from BASE_SUVINIL',Dm.TBSuvinil); Dm.TBServer.First; while not Dm.TBSuvinil.Eof Do begin //compara se o codigo é igual if (Dm.TBServer.FieldByName('CODIGO').AsInteger = Dm.TBSuvinil.FieldByName('CODIGO').AsInteger) Then begin diferente:= False; for I := 0 to Dm.TBServer.Fields.Count - 1 do begin if Dm.TBServer.Fields[I].value <> Dm.TBSuvinil.Fields [I].value then diferente := True; Break; end; end; try if (diferente ) Then begin Dm.TBSuvinil.Edit; Dm.TBSuvinilnome.AsString := Dm.TBServernome.AsString; Dm.TBSuviniltipo.AsString := Dm.TBServertipo.AsString; Dm.TBSuviniltamanho.AsString := Dm.TBServertamanho.AsString; Dm.TBSuvinilvlrvenda.ASFloat := Dm.TBServervlrvenda.AsFloat; Dm.TBSuvinilvlrcusto.AsFloat := Dm.TBServervlrcusto.AsFloat; Dm.TBSuvinilcodbar.AsString := Dm.TBServercodbar.AsString; Dm.TBSuvinildespro.AsString := Dm.TBServerdespro.AsString; Dm.TBSuvinil.Post; Dm.TBSuvinil.ApplyUpdates(-1); end; if not Dm.TBSuvinil.Locate('CODIGO',Dm.TBServer.fieldByName ('CODIGO').AsInteger,[])Then begin Dm.TBSuvinil.Insert; Dm.TBSuvinilcodigo.AsInteger :=Dm.TBServercodigo.AsInteger; Dm.TBSuvinilnome.AsString := Dm.TBServernome.AsString; Dm.TBSuviniltipo.AsString := Dm.TBServertipo.AsString; Dm.TBSuviniltamanho.AsString := Dm.TBServertamanho.AsString; Dm.TBSuvinilvlrvenda.ASFloat := Dm.TBServervlrvenda.AsFloat; Dm.TBSuvinilvlrcusto.AsFloat := Dm.TBServervlrcusto.AsFloat; Dm.TBSuvinilcodbar.AsString := Dm.TBServercodbar.AsString; Dm.TBSuvinildespro.AsString := Dm.TBServerdespro.AsString; Dm.TBSuvinil.Post; Dm.TBSuvinil.ApplyUpdates(-1); end; except on e:exception do begin AddLogs(e.Message,'Ao tentar inserir nova base'); Dm.TBServer.Next; Continue; end; end; Hora:= ''; Hora:= TimeToStr(Time); StatusBar1.Panels[0].Text := FormatDateTime('dd/mm/yyyy hh:nn:ss', Now) + ' ' +' Atualizado as:'+hora+'' ; Timer1.Enabled := True; Agradeço! Emerson Martins Analista de Sistemas msn:emersonmarti...@hotmail.com ____________________________________________________________________________________ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]