Re: [delphi-br] Solução Seria eliminar Filtro????
Sim, Roberto é com tabelas. 2008/4/30 Roberto [EMAIL PROTECTED]: Sandro, te pergunto, é com Tabelas ou SQL? Roberto - Original Message - From: Sandro To: delphi-br Sent: Wednesday, April 30, 2008 9:42 AM Subject: [delphi-br] Solução Seria eliminar Filtro Bom dia! Peguei um sistema ja pronto com o seguinte problema, o programador anterior implementou os modulos de contas a receber e pagar utilizando uma tela de entrada onde o usuário escolhe se quer visualizar contas baixadas, em aberto, por periodo, por valor por cliente todos os tipos de possibilidades possíveis para o usuário visualizar o lançamento da maneira que ele desejar. Mas a questão é que isso foi implemetado utilizando-se de filtro (BD PARADOX)depois de ecolher o lançameto que ele quer visualizar o mesmo clica em visualizar e o sistema implementa o filtro necessário àquela pesquisa e abre o formulario principal. São duas tabelas, uma receber onde constam os lançamentos e outra Ireceber onde o usuário formaliza a baixa sendo que esta ireceber é uma DETAIL da receber. O que ocorre é que a uns tempos atras o sistema TODO ao abrir, estava implementado para abrir todas as tabelas deste cerca de 300 tabelas abertas ao mesmo tempo (em uma rede de 10 maquinas com um servidor dedicado ao BD) o que começou a me causar problemas de falta de memória na maioria dos computadores (Todos minimo celeron 1.1 com 512 rede 10/100 com swith). Durante este tempo em que todas as tab. eram abertas ao mesmo tempo os modulos receber e pagar deste sistema por incrivel que pareça funcionavam muito bem. Quando digo muito bem quero dizer que quando o usuário baixava um determinado lançamento esta baixa era quase instantanea. Mas eu tive que resolver o problema de falata de memoria. E fiz da seguinte forma simplesmente acabei com as funçoes que abriam todas as tabelas ao entrar no sistema e agora só abro as mesmas quando necessito (on Demanda) ou seja quando estou com o modulo receber aberto só estou com as tabelas necessárias àquele modulo aberta, quando antes estavam todas as tab. do sistema abertas. O sistema todo ficou muito mais leve, o problema de falta de memoria foi resolvido. Mas para o meu espanto tanto o modulo de receber (só baixa) quanto pagar (só baixa) ficaram extremamente lentos cerca de 5m para realizarem uma baixa. Intervi novamente da seguinte forma verifiquei nas duas tabelas do sistema receber quais eventos eram estartados desde o momentos em que as tabelas são abertas até o momento em que elas são fechadas ( o formulario de receber é composto por dois grids um para mostrar os dados da tab receberr e outro para a tab. ireceber.) fiz o seguinte removi todos os eventos (on insert, on after insert, onedit, Before post, after post) ao inves de fazer as baixas direto dentro da grid da tab ireceber, inseri campos edit, dateedit, enfim todoas os campos da grid ireceber eu inseri campos identicos logo abaixo da grid e passei a mesma para read only ou seja a baixa que era feita na grid agora é feita em componetes tEdit e os eventos que eram estartados na tab ireceber eu inseri em um botão, nomeado de efetuar baixa, que contem todos os processos de verificação utilizados nos eventos citados acima da tab. Ireceber. O sistema melhorou muito quando efetuei a primeira baixa depois de implemetado isso tudo. Porem esta ocorrendo o seguinte se faço mais que cinco baixas direto sem fechar o sistema ele volta a ficar lento como antes. (Normalmento processamos a cada entrada neste modulos cerca de 20 a 25 baixas. Qual seria a solução definitiva e viavel para essa situação. (A lentidão se da na hora do sistema baixar o lançamento e dar o feedback para o usuario na grid ou seja dar o refresh na tab receber e remover aquele registo do filtro utilizado na consulta.) Conto com a ajuda de voces. Grande Abraço a todos. Sandro Cardoso [As partes desta mensagem que não continham texto foram removidas] -- No virus found in this incoming message. Checked by AVG. Version: 7.5.524 / Virus Database: 269.23.6/1407 - Release Date: 4/30/ 11:35 [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] Solução Seria eliminar Filtro????
Já pensei nessa possibilidade, mas o sistema é muito grande e funciona relativamente bem! Grato, Sandro 2008/4/30 Guionardo Furlan [EMAIL PROTECTED]: BDE... Argh! Qual a chance de trocar por um SGDB de verdade? Sugestão rápida: Firebird. Aí, vc teria muito mais recursos e eficiência no trato aos dados. 2008/4/30 Sandro [EMAIL PROTECTED] sacguimaraes%40gmail.com: Bom dia! Peguei um sistema ja pronto com o seguinte problema, o programador anterior implementou os modulos de contas a receber e pagar utilizando uma tela de entrada onde o usuário escolhe se quer visualizar contas baixadas, em aberto, por periodo, por valor por cliente todos os tipos de possibilidades possíveis para o usuário visualizar o lançamento da maneira que ele desejar. Mas a questão é que isso foi implemetado utilizando-se de filtro (BD PARADOX)depois de ecolher o lançameto que ele quer visualizar o mesmo clica em visualizar e o sistema implementa o filtro necessário àquela pesquisa e abre o formulario principal. São duas tabelas, uma receber onde constam os lançamentos e outra Ireceber onde o usuário formaliza a baixa sendo que esta ireceber é uma DETAIL da receber. O que ocorre é que a uns tempos atras o sistema TODO ao abrir, estava implementado para abrir todas as tabelas deste cerca de 300 tabelas abertas ao mesmo tempo (em uma rede de 10 maquinas com um servidor dedicado ao BD) o que começou a me causar problemas de falta de memória na maioria dos computadores (Todos minimo celeron 1.1 com 512 rede 10/100 com swith). Durante este tempo em que todas as tab. eram abertas ao mesmo tempo os modulos receber e pagar deste sistema por incrivel que pareça funcionavam muito bem. Quando digo muito bem quero dizer que quando o usuário baixava um determinado lançamento esta baixa era quase instantanea. Mas eu tive que resolver o problema de falata de memoria. E fiz da seguinte forma simplesmente acabei com as funçoes que abriam todas as tabelas ao entrar no sistema e agora só abro as mesmas quando necessito (on Demanda) ou seja quando estou com o modulo receber aberto só estou com as tabelas necessárias àquele modulo aberta, quando antes estavam todas as tab. do sistema abertas. O sistema todo ficou muito mais leve, o problema de falta de memoria foi resolvido. Mas para o meu espanto tanto o modulo de receber (só baixa) quanto pagar (só baixa) ficaram extremamente lentos cerca de 5m para realizarem uma baixa. Intervi novamente da seguinte forma verifiquei nas duas tabelas do sistema receber quais eventos eram estartados desde o momentos em que as tabelas são abertas até o momento em que elas são fechadas ( o formulario de receber é composto por dois grids um para mostrar os dados da tab receberr e outro para a tab. ireceber.) fiz o seguinte removi todos os eventos (on insert, on after insert, onedit, Before post, after post) ao inves de fazer as baixas direto dentro da grid da tab ireceber, inseri campos edit, dateedit, enfim todoas os campos da grid ireceber eu inseri campos identicos logo abaixo da grid e passei a mesma para read only ou seja a baixa que era feita na grid agora é feita em componetes tEdit e os eventos que eram estartados na tab ireceber eu inseri em um botão, nomeado de efetuar baixa, que contem todos os processos de verificação utilizados nos eventos citados acima da tab. Ireceber. O sistema melhorou muito quando efetuei a primeira baixa depois de implemetado isso tudo. Porem esta ocorrendo o seguinte se faço mais que cinco baixas direto sem fechar o sistema ele volta a ficar lento como antes. (Normalmento processamos a cada entrada neste modulos cerca de 20 a 25 baixas. Qual seria a solução definitiva e viavel para essa situação. (A lentidão se da na hora do sistema baixar o lançamento e dar o feedback para o usuario na grid ou seja dar o refresh na tab receber e remover aquele registo do filtro utilizado na consulta.) -- Timeo hominem unius libri Cogito ergo sum - Carpe diem []s Guionardo Furlan http://guionardo.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Questão de eficiência no S GDB. Para discussão....
Flávio, Pode até reduzir a manutenção das queries, porém, na execução, isso é mais lento, pois o SGBD fará uma consulta as suas tabelas internas para determinar quais são as colunas pertencentes aquela tabela e, caso você tenha colunas que não necessita na consulta, também aumentará o tamanho do resultset, pois as mesmas também serão retornadas! Rgs, Valfrid Flavio [EMAIL PROTECTED] escreveu: Olá galera do mal, bom dia, então, esses dias atrás o meu chefe disse para eu não colocar ' * ' nas consultas feitas em banco de dados, porque prejudicava a velocidade da consulta (uso Oracle 9i). Pois bem, não tive tempo de pesquisar, mas andei pensando sobre. Vamos supor que então não coloco ' * ' nas consultas e sim todos os nomes dos campos q serão úteis. Certo, mas pensando na futura manutenção do software, caso precisemos adicionar um campo na tabela e que será util nas pesquisas, fazendo assim precisaremos acrescentar o campo em todas as consultas feitas por todo o programa, o que seria completamente aborrecedor. Porém, podemos colocar essas consultas em métodos de classes, sendo assim, alterando só os métodos que utilizem essa query em questão. Sobre isso, gostaria de ouvir a sugestão do pessoal, para tentar chegarmos ao melhor caminho. Obrigado pela atenção de todos. Flávio. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] RAD Studio 2007 X Paleta SERVERS
Utilizo os componentes ExcelApplication,ExcelWorkSheet e ExcelWorkBook e a unit Excel2000 no Delphi 7. Mas ao converter o projeto para o RAD não encontrou esses componentes. Não tem, tem que adicionar ou tem que substituir por outro? Graça
RE: [delphi-br] RAD Studio 2007 X Paleta SERVERS
É só ir em install componentes e adicionar se não estiver instalado. Abs BL From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of dangra2008 Sent: segunda-feira, 5 de maio de 2008 10:12 To: delphi-br@yahoogrupos.com.br Subject: [delphi-br] RAD Studio 2007 X Paleta SERVERS Utilizo os componentes ExcelApplication,ExcelWorkSheet e ExcelWorkBook e a unit Excel2000 no Delphi 7. Mas ao converter o projeto para o RAD não encontrou esses componentes. Não tem, tem que adicionar ou tem que substituir por outro? Graça [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Gravar imagens no Banco Interbase/Firebir
Acho que seria mais interessante gravar somento o caminho da imagem no BD e gravar a imagem numa pasta. rafaelpinto19 [EMAIL PROTECTED] escreveu: Olá galera, Alguém poderia me explicar como gravar imagens no Banco de dados pelo delphi, Estou usandon o componente Tcamera para Visualizar a imagem pela webcam e o componente TImage para Capturar. Agora salvar a imagem no Banco eu nnão sei ainda. Se tive rum rotina ou um código simples. Eu vou agradecer bastante. Obrigado pela atenção!!! Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Solução Seria eliminar Filtr o????
Sandro, já que é com tabelas, e com filtro, é fundamental para evitar erros malucos que vc faça mais ou menos assim em cada tabela Deixe no componente Table1.Filtered := False; No DataMódulo ou no create do Form, coloque: Table1.Open; Table1.Filtered := True; No OnClose do form coloque: Table1.Filtered := False; Table1.Close; /// Limpe o form, close o form etc Resumindo Todas as tabelas com filtros := TRUE, somente depois do Open e antes do Close de cada tabela; Se vai ver como melhora tudo. Roberto - Original Message - From: Sandro To: delphi-br@yahoogrupos.com.br Sent: Monday, May 05, 2008 9:24 AM Subject: Re: [delphi-br] Solução Seria eliminar Filtro Sim, Roberto é com tabelas. 2008/4/30 Roberto [EMAIL PROTECTED]: Sandro, te pergunto, é com Tabelas ou SQL? Roberto - Original Message - From: Sandro To: delphi-br Sent: Wednesday, April 30, 2008 9:42 AM Subject: [delphi-br] Solução Seria eliminar Filtro Bom dia! Peguei um sistema ja pronto com o seguinte problema, o programador anterior implementou os modulos de contas a receber e pagar utilizando uma tela de entrada onde o usuário escolhe se quer visualizar contas baixadas, em aberto, por periodo, por valor por cliente todos os tipos de possibilidades possíveis para o usuário visualizar o lançamento da maneira que ele desejar. Mas a questão é que isso foi implemetado utilizando-se de filtro (BD PARADOX)depois de ecolher o lançameto que ele quer visualizar o mesmo clica em visualizar e o sistema implementa o filtro necessário àquela pesquisa e abre o formulario principal. São duas tabelas, uma receber onde constam os lançamentos e outra Ireceber onde o usuário formaliza a baixa sendo que esta ireceber é uma DETAIL da receber. O que ocorre é que a uns tempos atras o sistema TODO ao abrir, estava implementado para abrir todas as tabelas deste cerca de 300 tabelas abertas ao mesmo tempo (em uma rede de 10 maquinas com um servidor dedicado ao BD) o que começou a me causar problemas de falta de memória na maioria dos computadores (Todos minimo celeron 1.1 com 512 rede 10/100 com swith). Durante este tempo em que todas as tab. eram abertas ao mesmo tempo os modulos receber e pagar deste sistema por incrivel que pareça funcionavam muito bem. Quando digo muito bem quero dizer que quando o usuário baixava um determinado lançamento esta baixa era quase instantanea. Mas eu tive que resolver o problema de falata de memoria. E fiz da seguinte forma simplesmente acabei com as funçoes que abriam todas as tabelas ao entrar no sistema e agora só abro as mesmas quando necessito (on Demanda) ou seja quando estou com o modulo receber aberto só estou com as tabelas necessárias àquele modulo aberta, quando antes estavam todas as tab. do sistema abertas. O sistema todo ficou muito mais leve, o problema de falta de memoria foi resolvido. Mas para o meu espanto tanto o modulo de receber (só baixa) quanto pagar (só baixa) ficaram extremamente lentos cerca de 5m para realizarem uma baixa. Intervi novamente da seguinte forma verifiquei nas duas tabelas do sistema receber quais eventos eram estartados desde o momentos em que as tabelas são abertas até o momento em que elas são fechadas ( o formulario de receber é composto por dois grids um para mostrar os dados da tab receberr e outro para a tab. ireceber.) fiz o seguinte removi todos os eventos (on insert, on after insert, onedit, Before post, after post) ao inves de fazer as baixas direto dentro da grid da tab ireceber, inseri campos edit, dateedit, enfim todoas os campos da grid ireceber eu inseri campos identicos logo abaixo da grid e passei a mesma para read only ou seja a baixa que era feita na grid agora é feita em componetes tEdit e os eventos que eram estartados na tab ireceber eu inseri em um botão, nomeado de efetuar baixa, que contem todos os processos de verificação utilizados nos eventos citados acima da tab. Ireceber. O sistema melhorou muito quando efetuei a primeira baixa depois de implemetado isso tudo. Porem esta ocorrendo o seguinte se faço mais que cinco baixas direto sem fechar o sistema ele volta a ficar lento como antes. (Normalmento processamos a cada entrada neste modulos cerca de 20 a 25 baixas. Qual seria a solução definitiva e viavel para essa situação. (A lentidão se da na hora do sistema baixar o lançamento e dar o feedback para o usuario na grid ou seja dar o refresh na tab receber e remover aquele registo do filtro utilizado na consulta.) Conto com a ajuda de voces. Grande Abraço a todos. Sandro Cardoso [As partes desta mensagem que não continham texto foram removidas] -- No virus found in this incoming message. Checked
RE: [delphi-br] Gravar imagens no Banco Interbase/Firebir
Eu prefiro gravar imagens no banco, é mais rápido de trabalhar e no meu modo de ver mais seguro também. Abs BL From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Ricardo Cabral Sent: segunda-feira, 5 de maio de 2008 13:34 To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Gravar imagens no Banco Interbase/Firebir Acho que seria mais interessante gravar somento o caminho da imagem no BD e gravar a imagem numa pasta. rafaelpinto19 [EMAIL PROTECTED]mailto:rafaelpinto%40cdsol.com.br escreveu: Olá galera, Alguém poderia me explicar como gravar imagens no Banco de dados pelo delphi, Estou usandon o componente Tcamera para Visualizar a imagem pela webcam e o componente TImage para Capturar. Agora salvar a imagem no Banco eu nnão sei ainda. Se tive rum rotina ou um código simples. Eu vou agradecer bastante. Obrigado pela atenção!!! Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [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] Gravar imagens no Banco Interbase/Firebir
Bruno, Gravando no banco não deixaria o mesmo muito pesado ? Bruno Lichot [EMAIL PROTECTED] escreveu: Eu prefiro gravar imagens no banco, é mais rápido de trabalhar e no meu modo de ver mais seguro também. Abs BL From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Ricardo Cabral Sent: segunda-feira, 5 de maio de 2008 13:34 To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Gravar imagens no Banco Interbase/Firebir Acho que seria mais interessante gravar somento o caminho da imagem no BD e gravar a imagem numa pasta. rafaelpinto19 [EMAIL PROTECTED]mailto:rafaelpinto%40cdsol.com.br escreveu: Olá galera, Alguém poderia me explicar como gravar imagens no Banco de dados pelo delphi, Estou usandon o componente Tcamera para Visualizar a imagem pela webcam e o componente TImage para Capturar. Agora salvar a imagem no Banco eu nnão sei ainda. Se tive rum rotina ou um código simples. Eu vou agradecer bastante. Obrigado pela atenção!!! Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Re: URGENTE: Consulta incremental LIKE
Olá Jorge, Bom, pelo menos no exemplo, não vejo a necessidade de utilização do upper... Cuidado, dependendo da situação, vc terá que criar um índice para a consulta com a função... Seria interessante, gravar já com o upper para evitar transtornos... Quando vc utiliza um select assim: Select co_agrupado from tabela where upper(co_agrupado) like Vc tem que ter um índice com a função upper, correndo o risco de caso não tê-lo, o banco fazer um full scan na table... Claro, caso a sua table tenha muitas linhas... Por que não assim ?? Select co_agrupado from tabela where co_agrupado like '%E668%A668%D654%C333%'; Um abraço, Carlos P.S.: A primeira vez que vi desta forma o like, foi aqui na lista... --- Em delphi-br@yahoogrupos.com.br, Jorge Ericsson [EMAIL PROTECTED] escreveu Olá amigos delphianos, Meio confuso meu problema, mas crio que a solução está apenas na monstagem da minha instrução SQL. Bom, eu estou com um problema de pesquisa incremental genérica pois utilizo uma aplicação que pode retorna informções de 3 bancos Firebird, PostgreeSql e Oracle ao mesmo tempo. Na minha tabela eu possuo campos da seguinte forma: CO_AGRUPADO A124|B545|C785|D999|E478 *A334|B767|C333|D354|E809 B786|A792|D654|C333|E668 * Eu gostaria de ao pesquisar por um código tipo E668A334D654C333 - sem informa a barra de divisão - ele me retornasse por exemplo a *2ª e 3ª linhas de registro apenas*, ignorando a 1ª linha pois não existem nenhuma informação nela que atenda a solicitação do usuário. Eu tentei da seguinte forma: Select co_agrupado from tabela where upper(co_agrupado) like upper(E668) or upper(co_agrupado) like upper(A668) or upper(co_agrupado) like upper(D654) or upper(co_agrupado) like upper(C333) Mas, apresenta problemas na montagem do FILTER nos componentes usando Zeos(Firebird), ADO(Oarcle) e DBExpress(PostgreSql) dando erro. Alguém poderia dar uma dica ? Valew pessoal Att, Jorge Ericsson S. Pinheiro Analista/Projetista de Sistemas Ericsson Sistemas e Soluções http://www.jericsson.com.br 61 9227.4785 / 3967.6172 Brasília - DF [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Gravar imagens no Banco Interbase/Firebir
Cara, existe uma discussão um pouco mais afundo sobre isso, o banco não fica mais pesado, a menos lógico que vc faça um select * ... vc tem que analisar certinho oq deve ser feitousado o BD ou o sistema de arquivos e gravar o caminho i)Backup's são complicados quando vc usa sistema de arquivos, tem que fazer backup de todas as imagens; ii)Se for usar o Banco existe um limite teórico para o tamanho da imagem, existe tbem o limite prático para o tamanho das imagens; existe mais variáveis a ser analizada, mas vc tem que colocar as coisas na balança. Vinicius dos Santos Analista de Desenvolvimento Júnior MSI SOLUÇÕES Av. Dr. Altino Arantes, 131 Sala 145 - 146 Centro - Ourinhos/Sp - Brasil Fone/Fax: +55 (14) 3324-8181 www.msisolucoes.com.br - Original Message - From: Ricardo Cabral To: delphi-br@yahoogrupos.com.br Sent: Monday, May 05, 2008 2:02 PM Subject: RE: [delphi-br] Gravar imagens no Banco Interbase/Firebir Bruno, Gravando no banco não deixaria o mesmo muito pesado ? Bruno Lichot [EMAIL PROTECTED] escreveu: Eu prefiro gravar imagens no banco, é mais rápido de trabalhar e no meu modo de ver mais seguro também. Abs BL From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Ricardo Cabral Sent: segunda-feira, 5 de maio de 2008 13:34 To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Gravar imagens no Banco Interbase/Firebir Acho que seria mais interessante gravar somento o caminho da imagem no BD e gravar a imagem numa pasta. rafaelpinto19 [EMAIL PROTECTED]mailto:rafaelpinto%40cdsol.com.br escreveu: Olá galera, Alguém poderia me explicar como gravar imagens no Banco de dados pelo delphi, Estou usandon o componente Tcamera para Visualizar a imagem pela webcam e o componente TImage para Capturar. Agora salvar a imagem no Banco eu nnão sei ainda. Se tive rum rotina ou um código simples. Eu vou agradecer bastante. Obrigado pela atenção!!! Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [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] Gravar imagens no Banco Interbase/Firebir
Essa discussão é bem relevante, então cito alguns pontos a favor: 1) Para acessos remotos, isto é, o servidor está em uma localidade e o cliente em outra, não vejo uma forma mais coerente do que ter a imagem tb no banco de dados 2) Menos gambiarra qdo for executar uma select para relatórios ... Para completar, sugiro que seja criada uma tabela no banco que seja dedicada a armazenar imagens, apenas com 2 campos: id INTEGER e imagem BLOB e nas tabelas que são necessárias ter uma ou mais imagens basta colocar campos referenciando ao id desta tabela de imagens. Tive experiências traumáticas com as imagens em uma pasta ... mas uma solução bem elaborada pode dar certo, exceto no caso do item 1 que citei acima. Abraços, Alessandro DUARTE de Moraes A.C. Santa Casa do Rio Grande. http://www.santacasarg.com.br - Original Message - From: Ricardo Cabral To: delphi-br@yahoogrupos.com.br Sent: Monday, May 05, 2008 2:02 PM Subject: RE: [delphi-br] Gravar imagens no Banco Interbase/Firebir Bruno, Gravando no banco não deixaria o mesmo muito pesado ? Bruno Lichot [EMAIL PROTECTED] escreveu: Eu prefiro gravar imagens no banco, é mais rápido de trabalhar e no meu modo de ver mais seguro também. Abs BL From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Ricardo Cabral Sent: segunda-feira, 5 de maio de 2008 13:34 To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Gravar imagens no Banco Interbase/Firebir Acho que seria mais interessante gravar somento o caminho da imagem no BD e gravar a imagem numa pasta. rafaelpinto19 [EMAIL PROTECTED]mailto:rafaelpinto%40cdsol.com.br escreveu: Olá galera, Alguém poderia me explicar como gravar imagens no Banco de dados pelo delphi, Estou usandon o componente Tcamera para Visualizar a imagem pela webcam e o componente TImage para Capturar. Agora salvar a imagem no Banco eu nnão sei ainda. Se tive rum rotina ou um código simples. Eu vou agradecer bastante. Obrigado pela atenção!!! Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Abraços, Ricardo Cabral - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] -- E-mail Seguro Vetorial.net Mensagem classificada como NÃO-SPAM. Para classificar como SPAM, encaminhe para [EMAIL PROTECTED] Chave de Identificação: 54568,481f3db9196851913172569 [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Questão de eficiência no SGDB. Par a discussão....
no caso de usar a msm consulta em varios lugares, cria uma constante com o conteudo da query dai quando voce for alterar, acrescentar ou excluir campos e so alterar a constante... julio cesar - Original Message - From: Valfrid-Ly Silva Couto To: delphi-br@yahoogrupos.com.br Sent: Monday, May 05, 2008 2:02 PM Subject: Re: [delphi-br] Questão de eficiência no SGDB. Para discussão Flávio, Pode até reduzir a manutenção das queries, porém, na execução, isso é mais lento, pois o SGBD fará uma consulta as suas tabelas internas para determinar quais são as colunas pertencentes aquela tabela e, caso você tenha colunas que não necessita na consulta, também aumentará o tamanho do resultset, pois as mesmas também serão retornadas! Rgs, Valfrid Flavio [EMAIL PROTECTED] escreveu: Olá galera do mal, bom dia, então, esses dias atrás o meu chefe disse para eu não colocar ' * ' nas consultas feitas em banco de dados, porque prejudicava a velocidade da consulta (uso Oracle 9i). Pois bem, não tive tempo de pesquisar, mas andei pensando sobre. Vamos supor que então não coloco ' * ' nas consultas e sim todos os nomes dos campos q serão úteis. Certo, mas pensando na futura manutenção do software, caso precisemos adicionar um campo na tabela e que será util nas pesquisas, fazendo assim precisaremos acrescentar o campo em todas as consultas feitas por todo o programa, o que seria completamente aborrecedor. Porém, podemos colocar essas consultas em métodos de classes, sendo assim, alterando só os métodos que utilizem essa query em questão. Sobre isso, gostaria de ouvir a sugestão do pessoal, para tentar chegarmos ao melhor caminho. Obrigado pela atenção de todos. Flávio. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Sistema on-line X off-line
Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em colocar um campo pra servir como flag e quando o sistema tiver off line todo registro alterado ou incluído ficaria com essa flag. Ai quando a maquina voltasse pra rede ele sincronizava. Alguém já teve que fazer isso? Outra coisa... não vai ser apenas um pc que vai ficar off line não. Vai ser vários. E entre esse meio tempo os pc´s on line serão alimentados e tal. Obrigado. T+ --- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. --- [As partes desta mensagem que não continham texto foram removidas]
Res: [delphi-br] Sistema on-line X off-line
Antes de pensar em programação. Já pensou em fazer uma conexão remota via internet? Luciano Calenzani Simões - Mensagem original De: Rafael Jorge [EMAIL PROTECTED] Para: delphi-br delphi-br@yahoogrupos.com.br Enviadas: Segunda-feira, 5 de Maio de 2008 16:49:20 Assunto: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em colocar um campo pra servir como flag e quando o sistema tiver off line todo registro alterado ou incluído ficaria com essa flag. Ai quando a maquina voltasse pra rede ele sincronizava. Alguém já teve que fazer isso? Outra coisa... não vai ser apenas um pc que vai ficar off line não. Vai ser vários. E entre esse meio tempo os pc´s on line serão alimentados e tal. Obrigado. T+ - - - - - - Rafael jorge alves (Analista/desenvolv edor) www.sistemafocus. com.br sistema focus de gestão comercial e serviços em informatica. - - - - - - [As partes desta mensagem que não continham texto foram removidas] !-- #ygrp-mkp{ border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;} #ygrp-mkp hr{ border:1px solid #d8d8d8;} #ygrp-mkp #hd{ color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;} #ygrp-mkp #ads{ margin-bottom:10px;} #ygrp-mkp .ad{ padding:0 0;} #ygrp-mkp .ad a{ color:#ff;text-decoration:none;} -- !-- #ygrp-sponsor #ygrp-lc{ font-family:Arial;} #ygrp-sponsor #ygrp-lc #hd{ margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;} #ygrp-sponsor #ygrp-lc .ad{ margin-bottom:10px;padding:0 0;} -- !-- #ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;} #ygrp-mlmsg table {font-size:inherit;font:100%;} #ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, sans-serif;} #ygrp-mlmsg pre, code {font:115% monospace;} #ygrp-mlmsg * {line-height:1.22em;} #ygrp-text{ font-family:Georgia; } #ygrp-text p{ margin:0 0 1em 0;} #ygrp-tpmsgs{ font-family:Arial; clear:both;} #ygrp-vitnav{ padding-top:10px;font-family:Verdana;font-size:77%;margin:0;} #ygrp-vitnav a{ padding:0 1px;} #ygrp-actbar{ clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;} #ygrp-actbar .left{ float:left;white-space:nowrap;} .bld{font-weight:bold;} #ygrp-grft{ font-family:Verdana;font-size:77%;padding:15px 0;} #ygrp-ft{ font-family:verdana;font-size:77%;border-top:1px solid #666; padding:5px 0; } #ygrp-mlmsg #logo{ padding-bottom:10px;} #ygrp-reco { margin-bottom:20px;padding:0px;} #ygrp-reco #reco-head { font-weight:bold;color:#ff7900;} #reco-grpname{ font-weight:bold;margin-top:10px;} #reco-category{ font-size:77%;} #reco-desc{ font-size:77%;} #ygrp-vital{ background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;} #ygrp-vital #vithd{ font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;} #ygrp-vital ul{ padding:0;margin:2px 0;} #ygrp-vital ul li{ list-style-type:none;clear:both;border:1px solid #e0ecee; } #ygrp-vital ul li .ct{ font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;} #ygrp-vital ul li .cat{ font-weight:bold;} #ygrp-vital a{ text-decoration:none;} #ygrp-vital a:hover{ text-decoration:underline;} #ygrp-sponsor #hd{ color:#999;font-size:77%;} #ygrp-sponsor #ov{ padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;} #ygrp-sponsor #ov ul{ padding:0 0 0 8px;margin:0;} #ygrp-sponsor #ov li{ list-style-type:square;padding:6px 0;font-size:77%;} #ygrp-sponsor #ov li a{ text-decoration:none;font-size:130%;} #ygrp-sponsor #nc{ background-color:#eee;margin-bottom:20px;padding:0 8px;} #ygrp-sponsor .ad{ padding:8px 0;} #ygrp-sponsor .ad #hd1{
RE: [delphi-br] Sistema on-line X off-line
De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em colocar um campo pra servir como flag e quando o sistema tiver off line todo registro alterado ou incluído ficaria com essa flag. Ai quando a maquina voltasse pra rede ele sincronizava. Alguém já teve que fazer isso? Outra coisa... não vai ser apenas um pc que vai ficar off line não. Vai ser vários. E entre esse meio tempo os pc´s on line serão alimentados e tal. Obrigado. T+ -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] _ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/
Re: [delphi-br] Re: URGENTE: Consulta incremental LIKE
Na verdade eu andei verificando a minha situação e o like não resolve o meu problema. Eu preciso usar a claúsula IN para retorna dados entre determinando intervalo da seguinte forma: select co_agrupado from tabela where co_agrupado in ['A001'..'A999'], onde ele precisa me retornar todos os registro dentro desse intervalo tipo: A119|B333|C8282|D822 A113|B323|A003|D8292 A559|B343|C223|D6552 Obs: Esse select eu não tó conseguindo montar. Valew pessoal 2008/5/5 carlos alberto do amaral [EMAIL PROTECTED]: Olá Jorge, Bom, pelo menos no exemplo, não vejo a necessidade de utilização do upper... Cuidado, dependendo da situação, vc terá que criar um índice para a consulta com a função... Seria interessante, gravar já com o upper para evitar transtornos... Quando vc utiliza um select assim: Select co_agrupado from tabela where upper(co_agrupado) like Vc tem que ter um índice com a função upper, correndo o risco de caso não tê-lo, o banco fazer um full scan na table... Claro, caso a sua table tenha muitas linhas... Por que não assim ?? Select co_agrupado from tabela where co_agrupado like '%E668%A668%D654%C333%'; Um abraço, Carlos P.S.: A primeira vez que vi desta forma o like, foi aqui na lista... --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br, Jorge Ericsson [EMAIL PROTECTED] escreveu Olá amigos delphianos, Meio confuso meu problema, mas crio que a solução está apenas na monstagem da minha instrução SQL. Bom, eu estou com um problema de pesquisa incremental genérica pois utilizo uma aplicação que pode retorna informções de 3 bancos Firebird, PostgreeSql e Oracle ao mesmo tempo. Na minha tabela eu possuo campos da seguinte forma: CO_AGRUPADO A124|B545|C785|D999|E478 *A334|B767|C333|D354|E809 B786|A792|D654|C333|E668 * Eu gostaria de ao pesquisar por um código tipo E668A334D654C333 - sem informa a barra de divisão - ele me retornasse por exemplo a *2ª e 3ª linhas de registro apenas*, ignorando a 1ª linha pois não existem nenhuma informação nela que atenda a solicitação do usuário. Eu tentei da seguinte forma: Select co_agrupado from tabela where upper(co_agrupado) like upper(E668) or upper(co_agrupado) like upper(A668) or upper(co_agrupado) like upper(D654) or upper(co_agrupado) like upper(C333) Mas, apresenta problemas na montagem do FILTER nos componentes usando Zeos(Firebird), ADO(Oarcle) e DBExpress(PostgreSql) dando erro. Alguém poderia dar uma dica ? Valew pessoal Att, Jorge Ericsson S. Pinheiro Analista/Projetista de Sistemas Ericsson Sistemas e Soluções http://www.jericsson.com.br 61 9227.4785 / 3967.6172 Brasília - DF [As partes desta mensagem que não continham texto foram removidas] -- Att, Jorge Ericsson S. Pinheiro Analista/Projetista de Sistemas Ericsson Sistemas e Soluções http://www.jericsson.com.br 61 9227.4785 / 3967.6172 Brasília - DF [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Sistema on-line X off-line
primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]: De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em colocar um campo pra servir como flag e quando o sistema tiver off line todo registro alterado ou incluído ficaria com essa flag. Ai quando a maquina voltasse pra rede ele sincronizava. Alguém já teve que fazer isso? Outra coisa... não vai ser apenas um pc que vai ficar off line não. Vai ser vários. E entre esse meio tempo os pc´s on line serão alimentados e tal. Obrigado. T+ -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] __ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/ -- --- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. --- [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] Sistema on-line X off-line
Particularmente, num vejo problema em codificar uma rotina que copie os dados de um clientdataset local para um clientdataset com um provider para um banco de dados ou aplicação servidora e, neste ultimo, executar um ApplyUpdates. Que tipo de dificuldade vc vê na sincronização? Poderia enumerá-las para discutirmos no grupo? Sds. To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Mon, 5 May 2008 17:06:14 -0300 Subject: Re: [delphi-br] Sistema on-line X off-line primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]: De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em colocar um campo pra servir como flag e quando o sistema tiver off line todo registro alterado ou incluído ficaria com essa flag. Ai quando a maquina voltasse pra rede ele sincronizava. Alguém já teve que fazer isso? Outra coisa... não vai ser apenas um pc que vai ficar off line não. Vai ser vários. E entre esse meio tempo os pc´s on line serão alimentados e tal. Obrigado. T+ -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] __ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/ -- -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] _ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/
Re: [delphi-br] Sistema on-line X off-line
vamos la.. quando o sistema estiver off line nao vai estar conectado na net.. intao nao tem como sincronizar usando a net. e tipo.. um sistema de agronomia.. o agornomo vai pro meio do mato e lanca os dados.. so depois quando chegar na cidade e que vai siscronizar com o sistema on line. passo a passo: 1) o sistema vai estar rodando em rede.. todo mundo insere, exclui e altera tudo. 2) um dia alquem sai e ela o sistema consigo. antes de sair ele tem que rodar a rotina de preparação para levar consigo os dados. vai ser gerado tudo em XML e tal (tudo mesmo. pois ele precisa de todas as infos do sistema) eu to falando de 326 tabelas e milhares de regsitros. 3) ele vai e lanca seus dados off line. 4) ele volta pra rede onde roda a rotina de sincronismo onde o sistrma vai colocar no banco de dados tudo que ele cadastrou quando estava off line. (aqui esta minha maior bronca). e pegar tudo o que cadastraram quando ele estava off tambem. analizando bem agora.. nao vi bronca do jeito que eu estou fazendo atualmente. minha bronca é, se dois ou mais pc´s estiverem off line quando eles voltarem e lancarem como proceder pra nao haver conflitos de chaves e etc. usando o XML resolve muita coisa em vez de um bando de dados off (outro .FDB). mas ai fica no ar..como resolver os conflitos de chaves? 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]: Particularmente, num vejo problema em codificar uma rotina que copie os dados de um clientdataset local para um clientdataset com um provider para um banco de dados ou aplicação servidora e, neste ultimo, executar um ApplyUpdates. Que tipo de dificuldade vc vê na sincronização? Poderia enumerá-las para discutirmos no grupo? Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com Date: Mon, 5 May 2008 17:06:14 -0300 Subject: Re: [delphi-br] Sistema on-line X off-line primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com : De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em colocar um campo pra servir como flag e quando o sistema tiver off line todo registro alterado ou incluído ficaria com essa flag. Ai quando a maquina voltasse pra rede ele sincronizava. Alguém já teve que fazer isso? Outra coisa... não vai ser apenas um pc que vai ficar off line não. Vai ser vários. E entre esse meio
RE: [delphi-br] Sistema on-line X off-line
Tb não consigo enxergar essa dificuldade de sincronização. Vc iria trabalhar com o Delta que é a grosso modo o conjunto de alterações que os dados receberam. Não há muito motivo pra preocupação com isso. Atte, Ricardo. Rubem Nascimento da Rocha [EMAIL PROTECTED] escreveu: Particularmente, num vejo problema em codificar uma rotina que copie os dados de um clientdataset local para um clientdataset com um provider para um banco de dados ou aplicação servidora e, neste ultimo, executar um ApplyUpdates. Que tipo de dificuldade vc vê na sincronização? Poderia enumerá-las para discutirmos no grupo? Sds. To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Mon, 5 May 2008 17:06:14 -0300 Subject: Re: [delphi-br] Sistema on-line X off-line primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]: De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em colocar um campo pra servir como flag e quando o sistema tiver off line todo registro alterado ou incluído ficaria com essa flag. Ai quando a maquina voltasse pra rede ele sincronizava. Alguém já teve que fazer isso? Outra coisa... não vai ser apenas um pc que vai ficar off line não. Vai ser vários. E entre esse meio tempo os pc´s on line serão alimentados e tal. Obrigado. T+ -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] __ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/ -- -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] __ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/ _ - Abra sua conta no Yahoo! Mail, o único sem limite de
Re: [delphi-br] Sistema on-line X off-line
Eu tentaria resolver os conflitos de chaves usando um valor provisório para elas. Por exemplo, quando sua aplicação perceber que está offline, ao invés de usar uma determinada política de geração de chaves primárias, usa outra. Quando eu fiz meu TCC eu fazia isso gerando números negativos em sequência, já que a política que eu adotava pra geração de chaves primárias era uma sequência numérica. Quando eu ia sincronizar, bastava eu varrer todos os pontos onde haviam valores negativos e fazer a substituição pelos respectivos valores obtidos do banco ( os valores reais ). Veja se isso já resolve. Atte, Ricardo. Rafael Jorge [EMAIL PROTECTED] escreveu: vamos la.. quando o sistema estiver off line nao vai estar conectado na net.. intao nao tem como sincronizar usando a net. e tipo.. um sistema de agronomia.. o agornomo vai pro meio do mato e lanca os dados.. so depois quando chegar na cidade e que vai siscronizar com o sistema on line. passo a passo: 1) o sistema vai estar rodando em rede.. todo mundo insere, exclui e altera tudo. 2) um dia alquem sai e ela o sistema consigo. antes de sair ele tem que rodar a rotina de preparação para levar consigo os dados. vai ser gerado tudo em XML e tal (tudo mesmo. pois ele precisa de todas as infos do sistema) eu to falando de 326 tabelas e milhares de regsitros. 3) ele vai e lanca seus dados off line. 4) ele volta pra rede onde roda a rotina de sincronismo onde o sistrma vai colocar no banco de dados tudo que ele cadastrou quando estava off line. (aqui esta minha maior bronca). e pegar tudo o que cadastraram quando ele estava off tambem. analizando bem agora.. nao vi bronca do jeito que eu estou fazendo atualmente. minha bronca é, se dois ou mais pc´s estiverem off line quando eles voltarem e lancarem como proceder pra nao haver conflitos de chaves e etc. usando o XML resolve muita coisa em vez de um bando de dados off (outro .FDB). mas ai fica no ar..como resolver os conflitos de chaves? 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]: Particularmente, num vejo problema em codificar uma rotina que copie os dados de um clientdataset local para um clientdataset com um provider para um banco de dados ou aplicação servidora e, neste ultimo, executar um ApplyUpdates. Que tipo de dificuldade vc vê na sincronização? Poderia enumerá-las para discutirmos no grupo? Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com Date: Mon, 5 May 2008 17:06:14 -0300 Subject: Re: [delphi-br] Sistema on-line X off-line primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com : De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem
[delphi-br] Off - Banco de dados distribuido
Alguem aqui ja teve experiencia com banco de dados distribuido? Existe algum banco free que tenha essa funcionalidade? Meu problema é o seguinte: Como o cliente pode ficar sem acesso ao servidor de banco de dados que pode estar em outra cidade, e por algum motivo a conexão ficou fora do ar, e o trabalho não pode parar, quando a conexão voltar ao normal, os dados gravados localmente seriam atualizado no servidor. O banco de dados distribuido é a melhor opção para meu problema? E facil implementar sem mudar codigo do programa?
Re: [delphi-br] Sistema on-line X off-line
gostei da ideia de usar campos negativos. vou ver se isso resolve. valeu a todos pela ajuda. t+ 2008/5/5 Ricardo César Cardoso [EMAIL PROTECTED]: Eu tentaria resolver os conflitos de chaves usando um valor provisório para elas. Por exemplo, quando sua aplicação perceber que está offline, ao invés de usar uma determinada política de geração de chaves primárias, usa outra. Quando eu fiz meu TCC eu fazia isso gerando números negativos em sequência, já que a política que eu adotava pra geração de chaves primárias era uma sequência numérica. Quando eu ia sincronizar, bastava eu varrer todos os pontos onde haviam valores negativos e fazer a substituição pelos respectivos valores obtidos do banco ( os valores reais ). Veja se isso já resolve. Atte, Ricardo. Rafael Jorge [EMAIL PROTECTED] rafael.jorge%40gmail.com escreveu: vamos la.. quando o sistema estiver off line nao vai estar conectado na net.. intao nao tem como sincronizar usando a net. e tipo.. um sistema de agronomia.. o agornomo vai pro meio do mato e lanca os dados.. so depois quando chegar na cidade e que vai siscronizar com o sistema on line. passo a passo: 1) o sistema vai estar rodando em rede.. todo mundo insere, exclui e altera tudo. 2) um dia alquem sai e ela o sistema consigo. antes de sair ele tem que rodar a rotina de preparação para levar consigo os dados. vai ser gerado tudo em XML e tal (tudo mesmo. pois ele precisa de todas as infos do sistema) eu to falando de 326 tabelas e milhares de regsitros. 3) ele vai e lanca seus dados off line. 4) ele volta pra rede onde roda a rotina de sincronismo onde o sistrma vai colocar no banco de dados tudo que ele cadastrou quando estava off line. (aqui esta minha maior bronca). e pegar tudo o que cadastraram quando ele estava off tambem. analizando bem agora.. nao vi bronca do jeito que eu estou fazendo atualmente. minha bronca é, se dois ou mais pc´s estiverem off line quando eles voltarem e lancarem como proceder pra nao haver conflitos de chaves e etc. usando o XML resolve muita coisa em vez de um bando de dados off (outro .FDB). mas ai fica no ar..como resolver os conflitos de chaves? 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com : Particularmente, num vejo problema em codificar uma rotina que copie os dados de um clientdataset local para um clientdataset com um provider para um banco de dados ou aplicação servidora e, neste ultimo, executar um ApplyUpdates. Que tipo de dificuldade vc vê na sincronização? Poderia enumerá-las para discutirmos no grupo? Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brdelphi-br% 40yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com rafael.jorge% 40gmail.com Date: Mon, 5 May 2008 17:06:14 -0300 Subject: Re: [delphi-br] Sistema on-line X off-line primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com djpardalrocha%40hotmail.com : De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brdelphi-br% 40yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com rafael.jorge% 40gmail.com Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações.
RES: [delphi-br] Sistema on-line X off-line
Como não? Esse é um problema barra pesada. Então vamos a um exemplo pratico para analisarmos o problema do colega. O cara leva o note pra casa com a base toda sincronizada e tudo igual ao servidor. Chega em casa ou no cliente e começa a cadastrar digamos um PEDIDO gerando com isso um novo código auto-incremento para este pedido. Começa a incluir itens nesse pedido (gerando códigos auto-incremento para cada item) e pendurando esses itens no pedido. Ai ele nota que esta faltando um produto no cadastro dele e cadastra esse produto. Enquanto isso, na empresa o pessoal também esta lançando PEDIDOS e cadastrando outros produtos. Quando ele voltar como vocês acham que vão conciliar isso tudo? Pela chave primaria (auto-incremento)? Quando for jogar isso tudo no servidor, primeiro vai precisar incluir o produto que provavelmente vai ganhar um código diferente, depois incluir o pedido que também vai ter um código diferente e depois disso tudo inserir os itens e desse pedido apontando para o produto correto. Ou seja, ClientDataSet não vai resolver. Ele não faz milagres. Isso requer uma ótima lógica, e muito trabalho. [ ] s De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Ricardo César Cardoso Enviada em: segunda-feira, 5 de maio de 2008 17:27 Para: delphi-br@yahoogrupos.com.br Assunto: RE: [delphi-br] Sistema on-line X off-line Tb não consigo enxergar essa dificuldade de sincronização. Vc iria trabalhar com o Delta que é a grosso modo o conjunto de alterações que os dados receberam. Não há muito motivo pra preocupação com isso. Atte, Ricardo. Rubem Nascimento da Rocha [EMAIL PROTECTED] mailto:djpardalrocha%40hotmail.com escreveu: Particularmente, num vejo problema em codificar uma rotina que copie os dados de um clientdataset local para um clientdataset com um provider para um banco de dados ou aplicação servidora e, neste ultimo, executar um ApplyUpdates. Que tipo de dificuldade vc vê na sincronização? Poderia enumerá-las para discutirmos no grupo? Sds. To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br From: [EMAIL PROTECTED] mailto:rafael.jorge%40gmail.com Date: Mon, 5 May 2008 17:06:14 -0300 Subject: Re: [delphi-br] Sistema on-line X off-line primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED] mailto:djpardalrocha%40hotmail.com : De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br From: [EMAIL PROTECTED] mailto:rafael.jorge%40gmail.com Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá... Tenho uma aplicação que roda numa rede.. ai um cliente meu quer que ele possa pegar o note book dele por exemplo, com o sistema instalado nele sair mexendo a vontade no sistema na rede.. Incluindo, excluindo e alteando registros, ate ai tudo bem.. o trivial. Só que ele quer de vez em quando levar o note book pra casa e ainda assim trabalhar no sistema. E depois quando voltar sincronizar as informações. Minha pergunta é qual o melhor jeito de fazer isso? Tive a idéia de colocar uma tela de sincronização de dados. Onde eu digo o banco de origem e o destino.. Ai o sistema sai tabela por tabela, registro por registro vendo o que foi esta cadastrado no banco de origem que não tem no de destino e colocar ele la.. Bem não to louco de fazer isso via programação, se eu abrir tabela por tabela (são 326) e registro por registro de cada uma procurando pra ver se já ta cadastrado alem de ser um trabalho gigante vai demorar muito. Então como faço isso via SQL? Como eu consulto em dois bancos ao mesmo tempo? Estou usando firebird 1.5. Outra coisa, como deve proceder de uma forma pra saber qual os registros foram inseridos em off-line (o PC fora da rede)? Pensei em
Re: [delphi-br] Sistema on-line X off-line
bem.. erra isso que eu queria dizer des do inicio.. mas a logina da chave negativa me pareceu bastante legal. vou fazer o sequinte.. vou criar uma tabela de sinconismo onde vou dizer tabela, chave e campo.. com base nessa tabela vou pegar tudo que nao tem no banco online e vou colocar nela. exemplo um produto. ai ficaria quardado a chave dele e os campos (no sistema off line). ai vou inserir o produto com a chave nova e colocar la na tabela a chave nova.. ai vou fazer uma troca onde tiver a chave antiga pela nova e vou sair inserindo.. vai ser um processo meio gambiarra..e to vendo que é muito facil de dar pau.. mas ate agora é a melhor solução. 2008/5/5 Gerhard Roger Nack [EMAIL PROTECTED]: Como não? Esse é um problema barra pesada. Então vamos a um exemplo pratico para analisarmos o problema do colega. O cara leva o note pra casa com a base toda sincronizada e tudo igual ao servidor. Chega em casa ou no cliente e começa a cadastrar digamos um PEDIDO gerando com isso um novo código auto-incremento para este pedido. Começa a incluir itens nesse pedido (gerando códigos auto-incremento para cada item) e pendurando esses itens no pedido. Ai ele nota que esta faltando um produto no cadastro dele e cadastra esse produto. Enquanto isso, na empresa o pessoal também esta lançando PEDIDOS e cadastrando outros produtos. Quando ele voltar como vocês acham que vão conciliar isso tudo? Pela chave primaria (auto-incremento)? Quando for jogar isso tudo no servidor, primeiro vai precisar incluir o produto que provavelmente vai ganhar um código diferente, depois incluir o pedido que também vai ter um código diferente e depois disso tudo inserir os itens e desse pedido apontando para o produto correto. Ou seja, ClientDataSet não vai resolver. Ele não faz milagres. Isso requer uma ótima lógica, e muito trabalho. [ ] s De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br [mailto: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br] Em nome de Ricardo César Cardoso Enviada em: segunda-feira, 5 de maio de 2008 17:27 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Assunto: RE: [delphi-br] Sistema on-line X off-line Tb não consigo enxergar essa dificuldade de sincronização. Vc iria trabalhar com o Delta que é a grosso modo o conjunto de alterações que os dados receberam. Não há muito motivo pra preocupação com isso. Atte, Ricardo. Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.commailto: djpardalrocha%40hotmail.com djpardalrocha%2540hotmail.com escreveu: Particularmente, num vejo problema em codificar uma rotina que copie os dados de um clientdataset local para um clientdataset com um provider para um banco de dados ou aplicação servidora e, neste ultimo, executar um ApplyUpdates. Que tipo de dificuldade vc vê na sincronização? Poderia enumerá-las para discutirmos no grupo? Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com mailto: rafael.jorge%40gmail.com rafael.jorge%2540gmail.com Date: Mon, 5 May 2008 17:06:14 -0300 Subject: Re: [delphi-br] Sistema on-line X off-line primeiro respondendo a sugestao da conexao via internet.. nao é viavel pois é justamente nao ter internet e um requisito dessa estrututra de off-line. ja sobre quardar os arquivos em XML eu ja tinha pensado.. mas ai nao resolve o problema de sincronismo. pq minha principal duvida e como eu vou sincronizar a base sem ser uma rotina trabalhosa e demorada. valeu pela atencao. t+ 2008/5/5 Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.commailto: djpardalrocha%40hotmail.com djpardalrocha%2540hotmail.com : De prima, uma alternativa seria fazer as manutenções com ClientDataSet, mantendo os dados salvos localmente em um arquivo binário ou XML. Soh teria que ver a questão de segurança pra esses dados não serem corrompidos ou sofrerem intervenção externa(proteção dos dados). Usaria um ClientDataSet pra editar os dados localmente, e quando fosse aplicar isso em um banco de dados, copiaria os dados deste ClientDataSet para um outro devidamente ligado ao provider de dados e neste ultimo aplicaria tudo no banco de dados. Obviamente q os dois ClientDataSets deveriam ter a mesma estrutura. Esta eh a minha humilde sugestao. Se alguem tiver ideia melhor, eh sempre bom compartilhar e discutir, principalmente aqui no grupo! Sds. To: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brmailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br From: [EMAIL PROTECTED] rafael.jorge%40gmail.com mailto: rafael.jorge%40gmail.com rafael.jorge%2540gmail.com Date: Mon, 5 May 2008 16:49:20 -0300 Subject: [delphi-br] Sistema on-line X off-line Vamos lá...
Re: [delphi-br] Off - Banco de dados distribuido
no meu posto de sistema on line X off line to discutindo isso ai que tu ta querendo.. to nesse barco tambem.. t+ 2008/5/5 Márcio Cota [EMAIL PROTECTED]: Alguem aqui ja teve experiencia com banco de dados distribuido? Existe algum banco free que tenha essa funcionalidade? Meu problema é o seguinte: Como o cliente pode ficar sem acesso ao servidor de banco de dados que pode estar em outra cidade, e por algum motivo a conexão ficou fora do ar, e o trabalho não pode parar, quando a conexão voltar ao normal, os dados gravados localmente seriam atualizado no servidor. O banco de dados distribuido é a melhor opção para meu problema? E facil implementar sem mudar codigo do programa? -- --- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. --- [As partes desta mensagem que não continham texto foram removidas]
Re: RES: [delphi-br] Sistema on-line X off-line
Gerhard Roger Nack wrote: Quando ele voltar como vocês acham que vão conciliar isso tudo? Pela chave primaria (auto-incremento)? GUID.
Re: RES: [delphi-br] Sistema on-line X off-line
se os campos fossem string ai resolvia.. mas e um sistema ja rodando a 3 anos.. com chaves do tipo inteiro.. pensei em GUID tambem.. mas nao tem como restruturar a essa altura. t+ 2008/5/5 Joao Morais [EMAIL PROTECTED]: Gerhard Roger Nack wrote: Quando ele voltar como vocês acham que vão conciliar isso tudo? Pela chave primaria (auto-incremento)? GUID. -- --- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. --- [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Int64 x Variant no Delphi 6
Pessoal, algum dos presentes poderia mandar um Ctrl+C + Ctrl+V da função TLargeintField.GetAsVariant, que encontra-se na unit source\vcl\db.pas do Delphi 6? Gostaria de conhecer a compatibilidade do Int64 do Delphi 6 com Variant. Obrigado, Joao Morais
Re: [delphi-br] Off - Banco de dados distribuido
Não estava pensando em criar codigo no programa para poder fazer isso. Tenho certeza que os bancos de dados ja tem essa funcionalidade. Não estou querendo programar para uma funcionalidade que ja existe e que funciona. Só não sei se consigo isso com banco de dados distribuido Nem como fazer. Por isso estou perguntando se alguem ja tem expericia com isso e pode me dar alguma sugestao Abraços - Original Message - From: Rafael Jorge To: delphi-br@yahoogrupos.com.br Sent: Monday, May 05, 2008 5:47 PM Subject: Re: [delphi-br] Off - Banco de dados distribuido no meu posto de sistema on line X off line to discutindo isso ai que tu ta querendo.. to nesse barco tambem.. t+ 2008/5/5 Márcio Cota [EMAIL PROTECTED]: Alguem aqui ja teve experiencia com banco de dados distribuido? Existe algum banco free que tenha essa funcionalidade? Meu problema é o seguinte: Como o cliente pode ficar sem acesso ao servidor de banco de dados que pode estar em outra cidade, e por algum motivo a conexão ficou fora do ar, e o trabalho não pode parar, quando a conexão voltar ao normal, os dados gravados localmente seriam atualizado no servidor. O banco de dados distribuido é a melhor opção para meu problema? E facil implementar sem mudar codigo do programa? --
Re: [delphi-br] Off - Banco de dados distribuido
De uma pesquisada sobre replicação do banco de dados. O MySQL eu sei que possui isso. Márcio Cota escreveu: Não estava pensando em criar codigo no programa para poder fazer isso. Tenho certeza que os bancos de dados ja tem essa funcionalidade. Não estou querendo programar para uma funcionalidade que ja existe e que funciona. Só não sei se consigo isso com banco de dados distribuido Nem como fazer. Por isso estou perguntando se alguem ja tem expericia com isso e pode me dar alguma sugestao Abraços - Original Message - From: Rafael Jorge To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Sent: Monday, May 05, 2008 5:47 PM Subject: Re: [delphi-br] Off - Banco de dados distribuido no meu posto de sistema on line X off line to discutindo isso ai que tu ta querendo.. to nesse barco tambem.. t+ 2008/5/5 Márcio Cota [EMAIL PROTECTED] mailto:marciocota%40gmail.com: Alguem aqui ja teve experiencia com banco de dados distribuido? Existe algum banco free que tenha essa funcionalidade? Meu problema é o seguinte: Como o cliente pode ficar sem acesso ao servidor de banco de dados que pode estar em outra cidade, e por algum motivo a conexão ficou fora do ar, e o trabalho não pode parar, quando a conexão voltar ao normal, os dados gravados localmente seriam atualizado no servidor. O banco de dados distribuido é a melhor opção para meu problema? E facil implementar sem mudar codigo do programa? -- __ Faça ligações para outros computadores com o novo Yahoo! Messenger http://br.beta.messenger.yahoo.com/
Re: RES: [delphi-br] Sistema on-line X off-line
No ponto, João! A evolução do meu TCC ( ou seja, quando entrou em produção ), foi abandonar chaves primárias geradas por incremento por chave primária baseada em GUID. Resolveu o problema por completo. Atte, Ricardo. Joao Morais [EMAIL PROTECTED] escreveu: Gerhard Roger Nack wrote: Quando ele voltar como vocês acham que vão conciliar isso tudo? Pela chave primaria (auto-incremento)? GUID. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
Re: RES: [delphi-br] Sistema on-line X off-line
Nesse caso então o melhor mesmo é usar os números negativos. Foi justamente nesse momento que descobri o ponto fraco de chaves primárias geradas por incremento... quando precisava usar o sistema offline. Dava muito trabalho, mesmo com os números negativos. E como ia entrar em produção ainda, pude mudar pra usar os GUIDs. Espero que lhe seja útil, Ricardo. Rafael Jorge [EMAIL PROTECTED] escreveu: se os campos fossem string ai resolvia.. mas e um sistema ja rodando a 3 anos.. com chaves do tipo inteiro.. pensei em GUID tambem.. mas nao tem como restruturar a essa altura. t+ 2008/5/5 Joao Morais [EMAIL PROTECTED]: Gerhard Roger Nack wrote: Quando ele voltar como vocês acham que vão conciliar isso tudo? Pela chave primaria (auto-incremento)? GUID. -- -- Rafael jorge alves (Analista/desenvolvedor) www.sistemafocus.com.br sistema focus de gestão comercial e serviços em informatica. -- [As partes desta mensagem que não continham texto foram removidas] - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
Re: RES: [delphi-br] Sistema on-line X off-line
Retificação da resposta: Fui pesquisar na Wikipedia sobre GUID e vejo a seguinte informação: The GUID is a 16-byte (128-bit) number. [ http://en.wikipedia.org/wiki/GUID ] Então acho que há esperança! Ou não... Alguém pode tirar a dúvida? Grato, Ricardo. Ricardo César Cardoso [EMAIL PROTECTED] escreveu: Nesse caso então o melhor mesmo é usar os números negativos. Foi justamente nesse momento que descobri o ponto fraco de chaves primárias geradas por incremento... quando precisava usar o sistema offline. Dava muito trabalho, mesmo com os números negativos. E como ia entrar em produção ainda, pude mudar pra usar os GUIDs. Espero que lhe seja útil, Ricardo. - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Off - Banco de dados distribuido
Só complementando: * Os bancos majors ( MySQL, MSSQL e Oracle ) já tem isso embutido. * Para o IB e o FB tem uma ferramenta de terceiros, paga, que faz a replicação. * PostGre provavelmente deve ter nativo tb , assim como o DB2. Atte, Ricardo. Alexandre Rodrigues [EMAIL PROTECTED] escreveu: De uma pesquisada sobre replicação do banco de dados. O MySQL eu sei que possui isso. Márcio Cota escreveu: Não estava pensando em criar codigo no programa para poder fazer isso. Tenho certeza que os bancos de dados ja tem essa funcionalidade. Não estou querendo programar para uma funcionalidade que ja existe e que funciona. Só não sei se consigo isso com banco de dados distribuido Nem como fazer. Por isso estou perguntando se alguem ja tem expericia com isso e pode me dar alguma sugestao Abraços - Original Message - From: Rafael Jorge To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Sent: Monday, May 05, 2008 5:47 PM Subject: Re: [delphi-br] Off - Banco de dados distribuido no meu posto de sistema on line X off line to discutindo isso ai que tu ta querendo.. to nesse barco tambem.. t+ 2008/5/5 Márcio Cota [EMAIL PROTECTED] mailto:marciocota%40gmail.com: Alguem aqui ja teve experiencia com banco de dados distribuido? Existe algum banco free que tenha essa funcionalidade? Meu problema é o seguinte: Como o cliente pode ficar sem acesso ao servidor de banco de dados que pode estar em outra cidade, e por algum motivo a conexão ficou fora do ar, e o trabalho não pode parar, quando a conexão voltar ao normal, os dados gravados localmente seriam atualizado no servidor. O banco de dados distribuido é a melhor opção para meu problema? E facil implementar sem mudar codigo do programa? -- __ Faça ligações para outros computadores com o novo Yahoo! Messenger http://br.beta.messenger.yahoo.com/ - Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas]