Atualizar base ClientDataSet arquivo.xml
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
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
Curtidas 0
Respostas
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
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.
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
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