Atualizar base ClientDataSet arquivo.xml

Delphi

19/07/2010

estou montando um applicacao Off / online , com as tabela em formato xml .   qndo o vendedor faz uma viagem ele baixa a base com as tabelas (1º vez)     Aplicacao servidora :

SqlDataset : Select * from transportadora

Aplicacao  Cliente :

   Cds := TClientDataSet.Create(nil);
   Cds.RemoteServer := SoapConnection1;
   SoapConnection1.Connected := True;

   Cds.Close;
   Cds.ProviderName := 'dspTransportadora' ;
   Cds.Open;
   //Cds.SaveToFile('dspTransportadora' + '.XML');
   Cds.SaveToFile('dspTransportadora.cds',dfBinary);
   Cds.Free;
   ShowMessage('arquivo baixado');
   exit;
 

desta maneira baixei a tabela transportadora .     DESAFIO :   atualizar a base do cliente somente com as alteracoes.   Para nao ter que toda semana baixar a tabela inteira novamente , pois é muito pesado. e requer muito tempo .   com o sql abaixo trago so os registro com alteracao assim a atualizacao do arquivo xml(my base) é bem leve.
SqlDataset : Select * from transportadora where DataMod >= :DataMod    
  COMO FAZER ??    como faco para juntar o xml existente "dspTransportadora.xml" com os dados atualizados??    

att. Marcio



Sulfabril S/a

Sulfabril S/a

Curtidas 0

Respostas

Marco Salles

Marco Salles

19/07/2010

num entendi a Preocupação   O Conceito é exatamente este...   Vc pode Trabahar desconectado   Depois qnd vc der um ApplayUpdades so os registros que sofreram Alteração é que irão serem transportados atraves de pacotes . Deste modo a atualização do Sql será por se so Leve Vc não Trafega toda a Tabela . O ApplayUpdade so Trafega os Registros Alterados  
GOSTEI 0
Sulfabril S/a

Sulfabril S/a

19/07/2010

Ola Marco Antonio .   Voce tem razao , qndo aaplicacao cliente faz alguma alteracao, aplico o ApplayUpdade e sao enviados ao servidor com sucesso .     meu problema é o inverso . ( Servidor >> aplicacao cliente ) .     deixa eu tentar te explicar .     imagine uma situacao , uma tabela de clientes 2000 registros.   com a aplicacao deve funcionar off-line , sou obrigado a baixar do servidor essa tabela .    entao na primeira vez que vc for utilizar , voce tem que baixar tudo.   voce vai viajar com seu notebook , visitar os clientes , e faz todas as suas vendas.   apos uma semana voce quer dar uma atualizada na SUA base , vai que foram incluidos nos cadatros no servidor ..etc.     entao voce vai baixar tudo de novo agora com 2100 registros ??   ou so baixa os 100 registro?     Entao , faco um slq na baseServidora somente dos registro incluidos ou alterados desde a minha ultima atualizacao.     A minha duvida como faco a uniao desse registro com o arquico que tenho no notbook ??   se eu utilizar a mesma tecnica nao sobreponho os dados anteriores ???   Cds := TClientDataSet.Create(nil);
   Cds.RemoteServer := SoapConnection1;
   SoapConnection1.Connected := True;    Cds.Close;
   Cds.ProviderName := 'dspTransportadora' ;
   Cds.Open;
   //Cds.SaveToFile('dspTransportadora' + '.XML');
   Cds.SaveToFile('dspTransportadora.cds',dfBinary);
   Cds.Free;
   ShowMessage('arquivo baixado');
   exit;       que sugestao vc pode me indicar ???     Att. Marcio.                                          
num entendi a Preocupação   O Conceito é exatamente este...   Vc pode Trabahar desconectado   Depois qnd vc der um ApplayUpdades so os registros que sofreram Alteração é que irão serem transportados atraves de pacotes . Deste modo a atualização do Sql será por se so Leve Vc não Trafega toda a Tabela . O ApplayUpdade so Trafega os Registros Alterados  
GOSTEI 0
Marco Salles

Marco Salles

19/07/2010

mas ou menos estou entendendo Antes de uma Tabela Temporária que executasse no SERVIDOR um SQL somente com essas ultimas alteraçoes ( coisa simples de ser feito) e depois percorre-la inserindo os registros no Cds do Cliente Antes disso , diga-se mais uma vez , estou duvidoso se um simples  Refresh Não funcionaria ??? Se o simples Refresh não trafegaria da sua Base Servidora ate sua Aplicação Cliente somente os Registros Alterados . To achando que sim .
GOSTEI 0
POSTAR