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]

Responder a