jackson Lima Postado 31 Maio, 2017 Compartilhar Postado 31 Maio, 2017 Bom dia pessoal. Estou iniciando com o lazarus e gostaria de saber o que usar no lugar do clientdataset do delphi 7? Lembrando que o ClientDataSet não segura a conexão com o servidor, além de ter o evento onReconcilieError que gerencia transações concomitantes que possam estar ocorrendo no servidor no mesmo registro. @Daniel Simoes e @Juliomar Marchetti quais componentes vocês utilizam? Desde já agradeço a todos. Link para o comentário Compartilhar em outros sites More sharing options...
Fundadores Daniel Simoes Postado 31 Maio, 2017 Fundadores Compartilhar Postado 31 Maio, 2017 Eu uso Zeos e os componentes nativos do Lazarus... Mas a forma de uso varia para cada um deles e é diferente do ClientDataSet Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link para o comentário Compartilhar em outros sites More sharing options...
RicardoVoigt Postado 31 Maio, 2017 Compartilhar Postado 31 Maio, 2017 5 horas atrás, jackson Lima disse: Bom dia pessoal. Estou iniciando com o lazarus e gostaria de saber o que usar no lugar do clientdataset do delphi 7? Lembrando que o ClientDataSet não segura a conexão com o servidor, além de ter o evento onReconcilieError que gerencia transações concomitantes que possam estar ocorrendo no servidor no mesmo registro. @Daniel Simoes e @Juliomar Marchetti quais componentes vocês utilizam? Desde já agradeço a todos. Boa tarde, eu tenho usado o componente TSQLQuery mesmo... A princípio, da maneira que eu (sub)utilizava o TClientDataset no D7, consegui obter o mesmo comportamento com o TSQLQuery ao migrar meu projeto (cliente/servidor). Porém, no TSQLQuery você mesmo precisa montar e definir os comandos SQL (comandos insert, update e delete para realizar o CRUD) nas propriedades InsertSQL, UpdateSQL e DeleteSQL. Até onde me lembro, o componente TClientDataSet fazia isso automaticamente ao executar o método ApplyUpdates. Enfim, vai depender mesmo da sua necessidade (arquitetura e tamanho do teu projeto). Att Ricardo Link para o comentário Compartilhar em outros sites More sharing options...
jackson Lima Postado 31 Maio, 2017 Autor Compartilhar Postado 31 Maio, 2017 5 horas atrás, Daniel Simoes disse: Eu uso Zeos e os componentes nativos do Lazarus... Mas a forma de uso varia para cada um deles e é diferente do ClientDataSet Mas quando tu faz uma consulta fica aberta a conexão com o servidor? (O clientdataset consulta e liberar) 3 minutos atrás, RicardoVoigt disse: Boa tarde, eu tenho usado o componente TSQLQuery mesmo... A princípio, da maneira que eu (sub)utilizava o TClientDataset no D7, consegui obter o mesmo comportamento com o TSQLQuery ao migrar meu projeto (cliente/servidor). Porém, no TSQLQuery você mesmo precisa montar e definir os comandos SQL (comandos insert, update e delete para realizar o CRUD) nas propriedades InsertSQL, UpdateSQL e DeleteSQL. Até onde me lembro, o componente TClientDataSet fazia isso automaticamente ao executar o método ApplyUpdates. Enfim, vai depender mesmo da sua necessidade (arquitetura e tamanho do teu projeto). Att Ricardo Com relação aos sql, é tranquilo, meu medo é em relação a performance. Quando eu abro um clientdataset no d7 ele conecta no servidor, traz os dados e disconecta (clientserver). Porém usando o sqlquery ele mantem a conexão ativa no servidor enquanto eu não der um close nela Link para o comentário Compartilhar em outros sites More sharing options...
RicardoVoigt Postado 31 Maio, 2017 Compartilhar Postado 31 Maio, 2017 3 minutos atrás, jackson Lima disse: Mas quando tu faz uma consulta fica aberta a conexão com o servidor? (O clientdataset consulta e liberar) Com relação aos sql, é tranquilo, meu medo é em relação a performance. Quando eu abro um clientdataset no d7 ele conecta no servidor, traz os dados e disconecta (clientserver). Porém usando o sqlquery ele mantem a conexão ativa no servidor enquanto eu não der um close nela Certo, é isso mesmo... em algumas situações, onde trabalho com dados apenas em memória, eu já utilizei o componente TMemDataset. Porém, até onde entendi, ele não tem ligação com banco de dados. Isto é, não teria um comando como o ApplyUpdates para gravação/confirmação dos dados em um banco de dados, utilizando o TSQLQuery, por exemplo. Att Ricardo Link para o comentário Compartilhar em outros sites More sharing options...
jackson Lima Postado 31 Maio, 2017 Autor Compartilhar Postado 31 Maio, 2017 Agora, RicardoVoigt disse: Certo, é isso mesmo... em algumas situações, onde trabalho com dados apenas em memória, eu já utilizei o componente TMemDataset. Porém, até onde entendi, ele não tem ligação com banco de dados. Isto é, não teria um comando como o ApplyUpdates para gravação/confirmação dos dados em um banco de dados, utilizando o TSQLQuery, por exemplo. Att Ricardo Hum, entendi. Foi nesse ponto que senti falta do clientdataset. Ele faz as duas funções juntas: pega os dados no servidor, fecha a conexão, e fica trabalhando em memória, quando eu quiser eu dou um applyupdate ele grava no banco (se já houver novas alterações no registro por outro usuário, o próprio clientdataset no evento onReconcileError faz o merge ou sobreescrita, depende do que eu configuro) Tu usa algum ORM? Link para o comentário Compartilhar em outros sites More sharing options...
RicardoVoigt Postado 31 Maio, 2017 Compartilhar Postado 31 Maio, 2017 3 minutos atrás, jackson Lima disse: Hum, entendi. Foi nesse ponto que senti falta do clientdataset. Ele faz as duas funções juntas: pega os dados no servidor, fecha a conexão, e fica trabalhando em memória, quando eu quiser eu dou um applyupdate ele grava no banco (se já houver novas alterações no registro por outro usuário, o próprio clientdataset no evento onReconcileError faz o merge ou sobreescrita, depende do que eu configuro) Tu usa algum ORM? Não (ainda não) dá uma conferida em outras bibliotecas de componentes, como ZeosLib por exemplo, pra ver se acha um "clone" do ClientDataset... Att Ricardo Link para o comentário Compartilhar em outros sites More sharing options...
Hernani Prado Beira Postado 4 Junho, 2017 Compartilhar Postado 4 Junho, 2017 @jackson Lima descobriu algo de novo? Caso contrário no Lazarus usando o Zeos não resolveria seu problema ativar o cacheUpdate = true do componente TzQuery? Já faz tempo que estou tentando migrar minha aplicação Delphi para Lazarus, por enquanto estou ainda substituindo alguns componentes que tenho no Delphi mas não tenho no Lazarus (QuickReport para FortesReport, DBX para Zeos). Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 4 Junho, 2017 Moderadores Compartilhar Postado 4 Junho, 2017 Quer usar no lugar do clientdataset o bufdataset 1 Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Ronaldo Filho Postado 6 Junho, 2017 Compartilhar Postado 6 Junho, 2017 @Juliomar Marchetti Rapaz eu comecei um exemplo com o buf, criando uma function pra construir ele em tempo de execução baseado na query que usei para pegar os dados, só é ruim pq não consegui gerenciar as alterações feitas no banco, porque assim que passo os dados para a query e executo o post, ele não gerencia as alterações em fila, como o @jackson Lima falou, estava pensando em usar o Transaction nativo e o events nativo para realizar esse gerenciamento, nesse caso se gera outro problema que é tempo, estamos um pouco apertados no projeto para poder desenvolver algo do tipo, lembrando que todas essas coisas que foram e que serão desenvolvidas teriam que ser genéricas. Vocês conheceriam um jeito de gerenciar essas transações de uma forma mais rápida? 1 Link para o comentário Compartilhar em outros sites More sharing options...
jackson Lima Postado 21 Junho, 2017 Autor Compartilhar Postado 21 Junho, 2017 Em 2017-6-3 at 22:59, Hernani Prado Beira disse: @jackson Lima descobriu algo de novo? Caso contrário no Lazarus usando o Zeos não resolveria seu problema ativar o cacheUpdate = true do componente TzQuery? Já faz tempo que estou tentando migrar minha aplicação Delphi para Lazarus, por enquanto estou ainda substituindo alguns componentes que tenho no Delphi mas não tenho no Lazarus (QuickReport para FortesReport, DBX para Zeos). Não resolve, pois ao usar o zQuery com cacheUpdate ao dar um post as alterações feitas no mesmo momento por outros clientes sobrescreveria a alteração. O clientdataset fazia esse controle pra mim. Mas obrigado pessoal, vou utilizar o tiOpf e quando precisar desse controle (principalmente nas tabelas de movimentações) vou criar campos flags no banco para controlar quem está manipulando os dados. 1 Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro JOSE CHAO Postado 7 Janeiro Membros Pro Compartilhar Postado 7 Janeiro https://forum.lazarus.freepascal.org/index.php?topic=30454.0 Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts