[delphi-br] [ ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Marcio


Ola Pessoal .

estou criando uma aplicação on/offline , gostaria de saber se é possivel
atualizar parcialmente o clientDataset ( mybase XML ) ??

ou seja ja baixei os dados dos clientes (sqlConetion  SqlDataset  
provider  clienteDatSet )
hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR , 
baixar so
os cliente alterados .

ps no servidor sempre que altero um dado fica gravado a data de modificacao ,,

ai poderia comparar com a ultima data do arquivo XML e tal .

mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a 
tabela de cliente ..

alguem ja viu algo parecido ??

alguem tem algum material para  eu estudar??

Att, Marcio. Blumenau-SC



Re: [delphi-br] [ ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Dirlei Dionísio
Se entendi corretamente, você poderia gerar um XML/MyBase com o delta
(registros incluidos, alterados e excluidos), parsear esse delta no cliente
e efetivar as alterações no XML/MyBase definitivo.

--
Dirlei Dionísio
Novo artigo: // Não comente seu código
http://MaisQueBomCodigo.blogspot.com


Em 19 de julho de 2010 10:50, Marcio mar...@sulfabril.com.br escreveu:





 Ola Pessoal .

 estou criando uma aplicação on/offline , gostaria de saber se é possivel
 atualizar parcialmente o clientDataset ( mybase XML ) ??

 ou seja ja baixei os dados dos clientes (sqlConetion  SqlDataset 
 provider  clienteDatSet )
 hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR ,
 baixar so
 os cliente alterados .

 ps no servidor sempre que altero um dado fica gravado a data de modificacao
 ,,

 ai poderia comparar com a ultima data do arquivo XML e tal .

 mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a
 tabela de cliente ..

 alguem ja viu algo parecido ??

 alguem tem algum material para eu estudar??

 Att, Marcio. Blumenau-SC



[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] [ ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Marcio
Ola Dirlei !!

desculpe , mas nao captei a mensagem !!

como parsear ??

terei dois XML/CDS

cliente.xml e inclusao.xml ???


Att. MArcio






At 11:14 19/7/2010 -0300, you wrote:


Se entendi corretamente, você poderia gerar um XML/MyBase com o delta
(registros incluidos, alterados e excluidos), parsear esse delta no cliente
e efetivar as alterações no XML/MyBase definitivo.

--
Dirlei Dionísio
Novo artigo: // Não comente seu código
http://MaisQueBomCodigo.blogspot.comhttp://MaisQueBomCodigo.blogspot.com

Em 19 de julho de 2010 10:50, Marcio 
mailto:marcio%40sulfabril.com.brmar...@sulfabril.com.br escreveu:

 
 
 
 
  Ola Pessoal .
 
  estou criando uma aplicação on/offline , gostaria de saber se é possivel
  atualizar parcialmente o clientDataset ( mybase XML ) ??
 
  ou seja ja baixei os dados dos clientes (sqlConetion  SqlDataset 
  provider  clienteDatSet )
  hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR ,
  baixar so
  os cliente alterados .
 
  ps no servidor sempre que altero um dado fica gravado a data de modificacao
  ,,
 
  ai poderia comparar com a ultima data do arquivo XML e tal .
 
  mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a
  tabela de cliente ..
 
  alguem ja viu algo parecido ??
 
  alguem tem algum material para eu estudar??
 
  Att, Marcio. Blumenau-SC
 

[As partes desta mensagem que não continham texto foram removidas]




[As partes desta mensagem que não continham texto foram removidas]



RE: [delphi-br] [ ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Rubem Nascimento da Rocha

Interessante essa discussão. Gostaria tb de saber como poderia pegar uma massa 
de dados, seja em formato MyBase ou XML Datapacket do ClientDataSet, e 
aplicá-la para ser atualizada em um banco de dados. Esa discussão é 
interessante para o caso de atuação do cliente off-line até que o servidor 
volte à operar.


Sds.
 


To: delphi-br@yahoogrupos.com.br
From: mar...@sulfabril.com.br
Date: Mon, 19 Jul 2010 13:03:50 -0300
Subject: Re: [delphi-br] [ ClientDataSet atualizar base offline ]

  



Ola Dirlei !!

desculpe , mas nao captei a mensagem !!

como parsear ??

terei dois XML/CDS

cliente.xml e inclusao.xml ???

Att. MArcio

At 11:14 19/7/2010 -0300, you wrote:


Se entendi corretamente, você poderia gerar um XML/MyBase com o delta
(registros incluidos, alterados e excluidos), parsear esse delta no cliente
e efetivar as alterações no XML/MyBase definitivo.

--
Dirlei Dionísio
Novo artigo: // Não comente seu código
http://MaisQueBomCodigo.blogspot.comhttp://MaisQueBomCodigo.blogspot.com

Em 19 de julho de 2010 10:50, Marcio 
mailto:marcio%40sulfabril.com.brmar...@sulfabril.com.br escreveu:

 
 
 
 
  Ola Pessoal .
 
  estou criando uma aplicação on/offline , gostaria de saber se é possivel
  atualizar parcialmente o clientDataset ( mybase XML ) ??
 
  ou seja ja baixei os dados dos clientes (sqlConetion  SqlDataset 
  provider  clienteDatSet )
  hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR ,
  baixar so
  os cliente alterados .
 
  ps no servidor sempre que altero um dado fica gravado a data de modificacao
  ,,
 
  ai poderia comparar com a ultima data do arquivo XML e tal .
 
  mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a
  tabela de cliente ..
 
  alguem ja viu algo parecido ??
 
  alguem tem algum material para eu estudar??
 
  Att, Marcio. Blumenau-SC
 

[As partes desta mensagem que não continham texto foram removidas]



  
_
TRANSFORME SUAS FOTOS EM EMOTICONS PARA O MESSENGER. CLIQUE AQUI PARA COMEÇAR.
http://ilm.windowslive.com.br/?ocid=ILM:Live:Hotmail:Tagline:senDimensao:TRANSFORME78:-

[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] [ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Marcio
deixa eu explicar melhor para baixar a base faco desta maneira :


Aplicação servidora :

SqlDataset : Select * from transportadora

Aplicação 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 todas as transportadora , mas se eu quiser so atualizar o
dspTransportadora.xml ?

se eu fizer um select ,
SqlDataset : Select * from transportadora where DataMod = :DataMod

como faco para unir com o dspTransportadora.xml com os registros do sql ??


att. Marcio










At 07:33 19/7/2010 -0700, you wrote:


Amigo como você falou que grava a data de alteração de cada registro
você pode simplesmente gerar um SQL (select) que filtre somente pela
data de alteração, poderia ser registro a registro porque ai você
teria como comparar a data do registro do arquivo local com a do
que estar no Server.
Estando usando ClientDataSet + XML é só desativar o ChangeLog do CDS
para não manter o registro antigo.

isso resolve?

===
 Jean Barreiros
   Programador/Web-Designer
   Delphi|C++|PHP|JavaScript
   FireBird|MySql|SQLServer
   PostGree|Oracle
   msn: delphij...@gmail.com
   e-mail: delphij...@yahoo.com.br
===



De: Marcio mar...@sulfabril.com.br
Para: n...@yahoogrupos.com.br
Enviadas: Segunda-feira, 19 de Julho de 2010 11:15:58
Assunto: Re: [NDDV] [ ClientDataSet atualizar base offline ]





Daniel ,obrigado pela atençao.

Bom ..
Estou tentando(tenho) construir uma aplicacao para os vendedores externos
da empresa .

esta aplicao vai ser off-line / online.

os vendedores antes de ir ao cliente baixam a base com os dados atualizados
ou uma vez
por semana ..

estou baixando os dados via SOAP , mas o problema é se cada vez que 
atualizar a
base cliente tiver que trazer tudo , fica muito pesado .

pretendo atualizar a BASE cliente somente com os registros novos no servidor .

estive pesquisando sobre compressao de dados no datapack mais nao encontrei
nada .

é possivel isso ??

At. Marcio






[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] [ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Marcio

Bom , com a aplicacao off-line , faço insercoes ,alteracoes etc .

para enviar ao servidor (SOAP), faco assim ..


   ClientDataSet1.LoadFromFile('dspTransportadora.XML');
   ClientDataSet1.ApplyUpdates(-1);



Att. MArcio









At 15:57 19/7/2010 +, you wrote:



Interessante essa discussão. Gostaria tb de saber como poderia pegar uma 
massa de dados, seja em formato MyBase ou XML Datapacket do ClientDataSet, 
e aplicá-la para ser atualizada em um banco de dados. Esa discussão é 
interessante para o caso de atuação do cliente off-line até que o servidor 
volte à operar.

Sds.


To: mailto:delphi-br%40yahoogrupos.com.brdelphi-br@yahoogrupos.com.br
From: mailto:marcio%40sulfabril.com.brmar...@sulfabril.com.br
Date: Mon, 19 Jul 2010 13:03:50 -0300
Subject: Re: [delphi-br] [ ClientDataSet atualizar base offline ]

Ola Dirlei !!

desculpe , mas nao captei a mensagem !!

como parsear ??

terei dois XML/CDS

cliente.xml e inclusao.xml ???

Att. MArcio

At 11:14 19/7/2010 -0300, you wrote:
 
 
 Se entendi corretamente, você poderia gerar um XML/MyBase com o delta
 (registros incluidos, alterados e excluidos), parsear esse delta no cliente
 e efetivar as alterações no XML/MyBase definitivo.
 
 --
 Dirlei Dionísio
 Novo artigo: // Não comente seu código
 http://MaisQueBomCodigo.blogspot.comhttp://MaisQueBomCodigo.blogspot.c 
 omhttp://MaisQueBomCodigo.blogspot.com
 
 Em 19 de julho de 2010 10:50, Marcio
 mailto:marcio%40sulfabril.com.brmailto:marcio%40sulfabril.com.brmarc 
 i...@sulfabril.com.br escreveu:
 
  
  
  
  
   Ola Pessoal .
  
   estou criando uma aplicação on/offline , gostaria de saber se é possivel
   atualizar parcialmente o clientDataset ( mybase XML ) ??
  
   ou seja ja baixei os dados dos clientes (sqlConetion  SqlDataset 
   provider  clienteDatSet )
   hoje , caso ocorra alguma alteracao nos dados cadastrais NO SERVIDOR ,
   baixar so
   os cliente alterados .
  
   ps no servidor sempre que altero um dado fica gravado a data de 
 modificacao
   ,,
  
   ai poderia comparar com a ultima data do arquivo XML e tal .
  
   mas como sobrepor isso no cliente data set ??? sem ter que baixar toda a
   tabela de cliente ..
  
   alguem ja viu algo parecido ??
  
   alguem tem algum material para eu estudar??
  
   Att, Marcio. Blumenau-SC
  
 
 [As partes desta mensagem que não continham texto foram removidas]
 
 


__
TRANSFORME SUAS FOTOS EM EMOTICONS PARA O MESSENGER. CLIQUE AQUI PARA COMEÇAR.
http://ilm.windowslive.com.br/?ocid=ILM:Live:Hotmail:Tagline:senDimensao:TRANSFORME78:-http://ilm.windowslive.com.br/?ocid=ILM:Live:Hotmail:Tagline:senDimensao:TRANSFORME78:-

[As partes desta mensagem que não continham texto foram removidas]




[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] [ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Dirlei Dionísio
Marcio, vou te sugerir a maneira mais simples de resolver isso que me vem à
mente agora, mas com certeza essa não é a única alternativa. Vamos lá.

PS1: Estou pertindo do princípio que a atualização ocorre apenas no sentido
SERVIDOR-CLIENTE, como eu entendi.

Na tabela transportadora, além do campo DataMod, você precisa também ter
um campo para informar que tipo de operação foi feita. Poderia ser, por
exemplo, TipoMod. Os valores possíveis seriam I, A e E,
significando, Inclusão, Alteração e Exclusão, respectivamente.

PS2: Quando uma transportadora for excluída no servidor, o registro não
poderá ser fisicamente excluído até que os cliente tenham sincronizado essa
exclusão com suas bases locais.

Para sincronizar as alterações do servidor com os clientes, você faz o
seguinte:

1 - um select * from Transportadora where
DATAMOD:DATA_E_HORA_DA_ULTIMA_SINCRONIZACAO_DO_CLIENTE

2 - carrega o dspTransportadora.cds para a memória

3 - percorre cada registro da query executada no servidor e verifica o campo
TipoMod.
- se o conteudo for:
  - I, INCLUI o registro no dataset que foi carregado com o
dspTransportadora.cds
  - A, localiza o registro no dataset que foi carregado com o
dspTransportadora.cds e faz a ALTERACAO
  - E, localiza o registro no dataset que foi carregado com o
dspTransportadora.cds e faz a EXCLUSAO

4 - salva o dataset que foi carregado com o dspTransportadora.cds em disco

5 - grava em algum lugar a data e hora da última sincronização do cliente
com o servidor.

Posso ter esquecido algum detalhe, mas de modo geral, essa é uma solução
possível para o seu problema.

Um abraço,

--
Dirlei Dionísio
Novo artigo: // Não comente seu código
http://MaisQueBomCodigo.blogspot.com


Em 19 de julho de 2010 13:31, Marcio mar...@sulfabril.com.br escreveu:



 deixa eu explicar melhor para baixar a base faco desta maneira :

 Aplicação servidora :

 SqlDataset : Select * from transportadora

 Aplicação 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 todas as transportadora , mas se eu quiser so
 atualizar o
 dspTransportadora.xml ?

 se eu fizer um select ,
 SqlDataset : Select * from transportadora where DataMod = :DataMod

 como faco para unir com o dspTransportadora.xml com os registros do sql ??

 att. Marcio

 At 07:33 19/7/2010 -0700, you wrote:
 
 
 Amigo como você falou que grava a data de alteração de cada registro
 você pode simplesmente gerar um SQL (select) que filtre somente pela
 data de alteração, poderia ser registro a registro porque ai você
 teria como comparar a data do registro do arquivo local com a do
 que estar no Server.
 Estando usando ClientDataSet + XML é só desativar o ChangeLog do CDS
 para não manter o registro antigo.
 
 isso resolve?
 
 ===
  Jean Barreiros
  Programador/Web-Designer
  Delphi|C++|PHP|JavaScript
  FireBird|MySql|SQLServer
  PostGree|Oracle
  msn: delphij...@gmail.com delphijean%40gmail.com
  e-mail: delphij...@yahoo.com.br delphijean%40yahoo.com.br
 ===
 
 
 
 De: Marcio mar...@sulfabril.com.br marcio%40sulfabril.com.br
 Para: n...@yahoogrupos.com.br NDDV%40yahoogrupos.com.br
 Enviadas: Segunda-feira, 19 de Julho de 2010 11:15:58
 Assunto: Re: [NDDV] [ ClientDataSet atualizar base offline ]
 
 
 
 
 
 Daniel ,obrigado pela atençao.
 
 Bom ..
 Estou tentando(tenho) construir uma aplicacao para os vendedores externos
 da empresa .
 
 esta aplicao vai ser off-line / online.
 
 os vendedores antes de ir ao cliente baixam a base com os dados
 atualizados
 ou uma vez
 por semana ..
 
 estou baixando os dados via SOAP , mas o problema é se cada vez que
 atualizar a
 base cliente tiver que trazer tudo , fica muito pesado .
 
 pretendo atualizar a BASE cliente somente com os registros novos no
 servidor .
 
 estive pesquisando sobre compressao de dados no datapack mais nao
 encontrei
 nada .
 
 é possivel isso ??
 
 At. Marcio

 
 
 
 

 [As partes desta mensagem que não continham texto foram removidas]

  



[As partes desta mensagem que não continham texto foram removidas]





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
delphi-br-unsubscr...@yahoogrupos.com.br

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




Re: [delphi-br] [ClientDataSet atualizar base offline ]

2010-07-19 Por tôpico Fabricio Colombo
Pra juntar dados, vc pode usar o método AppendData.

Vc já tem um xml salvo, então vc carrega ele normalmente. Então vc faz um
select com os registros alterados e carrega em outro ClientDataset e usa o
AppendData.

vDataSetLocal.LoadFromFile('dspTransportadora.cds');

vDataSetAlteracoes := DadosAlterados do servidor.

vDataSetLoca.AppendData(vDataSetAlteracoes.Data, True);

Acredito que funcione.

Em 19 de julho de 2010 13:31, Marcio mar...@sulfabril.com.br escreveu:



 deixa eu explicar melhor para baixar a base faco desta maneira :

 Aplicação servidora :

 SqlDataset : Select * from transportadora

 Aplicação 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 todas as transportadora , mas se eu quiser so
 atualizar o
 dspTransportadora.xml ?

 se eu fizer um select ,
 SqlDataset : Select * from transportadora where DataMod = :DataMod

 como faco para unir com o dspTransportadora.xml com os registros do sql ??

 att. Marcio


 At 07:33 19/7/2010 -0700, you wrote:
 
 
 Amigo como você falou que grava a data de alteração de cada registro
 você pode simplesmente gerar um SQL (select) que filtre somente pela
 data de alteração, poderia ser registro a registro porque ai você

 teria como comparar a data do registro do arquivo local com a do
 que estar no Server.
 Estando usando ClientDataSet + XML é só desativar o ChangeLog do CDS
 para não manter o registro antigo.

 
 isso resolve?
 
 ===
  Jean Barreiros
  Programador/Web-Designer
  Delphi|C++|PHP|JavaScript
  FireBird|MySql|SQLServer
  PostGree|Oracle
  msn: delphij...@gmail.com delphijean%40gmail.com
  e-mail: delphij...@yahoo.com.br delphijean%40yahoo.com.br
 ===
 
 
 
 De: Marcio mar...@sulfabril.com.br marcio%40sulfabril.com.br
 Para: n...@yahoogrupos.com.br NDDV%40yahoogrupos.com.br
 Enviadas: Segunda-feira, 19 de Julho de 2010 11:15:58
 Assunto: Re: [NDDV] [ ClientDataSet atualizar base offline ]
 
 
 
 
 
 Daniel ,obrigado pela atençao.

 
 Bom ..
 Estou tentando(tenho) construir uma aplicacao para os vendedores externos
 da empresa .
 
 esta aplicao vai ser off-line / online.
 
 os vendedores antes de ir ao cliente baixam a base com os dados
 atualizados
 ou uma vez
 por semana ..
 
 estou baixando os dados via SOAP , mas o problema é se cada vez que
 atualizar a
 base cliente tiver que trazer tudo , fica muito pesado .
 
 pretendo atualizar a BASE cliente somente com os registros novos no
 servidor .
 
 estive pesquisando sobre compressao de dados no datapack mais nao
 encontrei
 nada .
 
 é possivel isso ??
 
 At. Marcio
 
 
 
 

 [As partes desta mensagem que não continham texto foram removidas]

  



[As partes desta mensagem que não continham texto foram removidas]





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
delphi-br-unsubscr...@yahoogrupos.com.br

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html