[delphi-br] [ ClientDataSet atualizar base offline ]
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 ]
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 ]
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 ]
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 ]
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 ]
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 ]
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 ]
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