MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


4 participantes

    Trabalhar offline e online com banco de dados

    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 18/10/2023, 14:09

    Bom dia, tudo bem?

    Tenho um sistema em VBA Excel que usa Acess como banco de dados. O sistema está disponível em rede para vários usuários utilizarem e funcionando normalmente quando há internet. Ocorre que alguns usuários ficam sem conexão de internet durante o dia por falha do sinal ou internet muito lenta, e para evitar deixar alguns formulários sem lançar, queria fazer um banco de dados temporário local, no PC desse usuário, para salvar os lançamentos e depois criar um código que fizesse a cópia desses registros para o arquivo final que estivesse na rede online.
    Procurei mas não achei algo que me ajudasse a desenvolver essa ferramenta.

    Minha maior dificuldade, até agora, é criar o código para copiar os dados da tabela offline para a online.

    Alguém poderia me ajudar? What a Face
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 18/10/2023, 18:04

    Olá diegocabralf, boa-tarde!

    Não acredito que você encontrará uma solução completa para a sua necessidade. O que você descreve é totalmente possível, mas é necessário mapear todas as entradas possíveis e quais as tabelas que possuem as informações para depois avaliar se os dados já existem no online ou não.

    Se não existirem você insere nas tabelas e se existirem é pq o sistema estava online. Isso se você quiser manter essa questão do online. Outra possibilidade é você fazer com que todos que utilizam o sistema trabalhem offline e ter uma rotina comum para todas as máquinas para coletar os dados e atualizar a base principal.

    No final não é algo simples pq é necessário entender todo o seu banco de dados para saber como inserir ou atualizar dados que podem ter sido alterados nas bases offline.

    entende?
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 19/10/2023, 01:46

    Boa noite!
    Muito obrigado por responder abreuluiston. Entendi seus pontos...
    No computador do usuário ficaria apenas o banco de dados offline dos lançamentos que ele fez, sem ter a posssibilidade de executar qualquer alteração nos demais itens que estão no banco de dados principal. Ele teria apenas como editar ou excluir os lançamentos que ele fez que ainda não foram sincronizados. Somente na "versão online" do aplicativo que seria possível editar, consultar e excluir os dados na base principal, fora isso apenas nos registros offline que o usuario lançou.

    Estou travado em construir o código que copia e cola os itens da tabela offline para tabela online do banco de dados access e excluir os registros offline quando confirmar que os registros foram copiados com êxito.

    Gostei também da idéia em programar um horário pra fazer a rotina de atualização nos arquivos que estam offline para a base principal online.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 19/10/2023, 12:24

    Bom dia!

    Certo, do ponto de vista do que fazer eu diria que é possível criar um formulário denominado, por exemplo, como exportar_dados. Então, a lógica seria a seguinte:

    1) o usuário que está trabalhando na base offline se coloca online através desse formulário. Ou seja, ele entra na tela e esse formulário conecta a base online;
    2) se não tiver problemas de conexão com a rede é liberado um botão que dispara a atualização dos dados e se, por algum motivo, a conexão não se der o botão ficaria desabilitado;
    3) ao clicar no botão o evento clique dispara os INSERTs tendo como origem os dados da base offline e grava na base online. A rotina deverá ser capaz de identificar também através de lógica se todos os dados foram exportados e se forem os dados da base offline podem ser eliminados e o processo se finaliza.

    É por ai, mas, considere o seguinte: você terá replicado esse código e de outros formulários também em cada uma das bases offline. Do ponto de vista de manutenção isso é complicado pq toda vez que tiver que fazer uma alteração de rotina essa alteração deverá ser feita em todos os bancos.

    Veja, não é algo complicado se não existirem muitas tabelas no BD, mas, se a base estiver com relacionamento complicado (varias tabelas interligadas) ai sim pode se tornar complicado fazer. Então, o próximo passo é saber quantas tabelas sofrem alteração e devem ter seus registros exportados.

    Mais um ponto a ser observado: é necessário verificar se as bases offline também precisam ser atualizadas em relação ao banco de dados principal. Se isso for necessário também será necessário a sincronização ao iniciar o dia. Vou tentar explicar. Imagina que você tem uma tabela de produtos, mas, essa tabela não é atualizada nas bases offline. Ela só se altera na base principal por exemplo quando entra um produto novo. Então, essa é uma brecha pq se a tabela produtos não for atualizada no BD offline o usuário não poderia, por exemplo, vender esse produto pq ele não existe na tabela.

    Não sei se é possível pelo tamanho dos arquivos, mas, se quiser compartilhar aqui eu poderia ajudar a construir essa lógica.
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 20/10/2023, 19:39

    Boa tarde,
    Exatamente abreuluiston!!

    Disponibilizei uma cópia adaptada do que seria a idéia.
    Ha um banco de dados online (que estaria no servidor) e um offline que ficaria no PC do usuário.
    Na base há duas tabelas, uma pra fazer os lançamentos (db_desmonte) e outra onde fica os colarabores (db_colab). Essa db_colab, deveria ser sincronizada toda vez que fizesse a sincronização para atualizar a base offline que fica no PC do usuário com os novos colaboradores caso tivesse no servidor. A tabela desmonte somente jogaria as informações pra tabela principal, online.

    A offline ficaria vinculada na online as tabelas necessáras. Ao entrar, coloquei um botao pra selecionar se deseja lançar online ou offline no sistema.
    Estou com um problema em difinir a variável que identifica a consultar a tabela online ou offline. Ex: Coloquei na variável offline o valor 0 (zero), porém quando adiciono na string para consultar a tabela ocorre o erro onde tabeladesmonte = (db_desmonte_0), o que significa que deve-se consultar a tabela desmonte offline. Caso tivesse o 1, iria consultar a tabela desmonte online (db_desmonte_1). Esse seria meu primeiro problema. Acredito que esse erro seja facil de corrigir, porem nao estou sabendo.

    No botão sincronizar joga pra tela onde mostra os botões visualizar onffine e sincronizar (não esta funcionando). Nesse visualizar offline mostraria sempre os dados que estão offline, e o botão sincronizar seria para transferir os dados da tabela db_desmonte_0 para db_desmonte_1 e atualizar a tabela db_colab_0 com base na db_colab_1.

    Deu pra entender? rsr
    Anexos
    Trabalhar offline e online com banco de dados Attachmentsistema.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (353 Kb) Baixado 23 vez(es)
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 20/10/2023, 23:38

    Na verdade a meu ver está confuso e você também não disponibilizou um exemplo de banco com formulário. Tem um arquivo em excel junto no pacote zip e esse sim tem um botão, mas, em nenhum momento falamos de excel.

    Você numerou as tabelas com _0 e _1 o que significa que você está duplicando as tabelas. Olha só o que eu faria:

    As bases são espelho então elas devem ser idênticas, ou seja, ambas com duas tabelas e sem víncular a tabela da base online dentro da base offline. O controle ficaria no formulário que deveria:

    1) no início da atividade do usuário na base offline ele executaria uma rotina que obteria os dados existentes nas tabelas da base online e atualizaria nas tabelas offline. Poderia, inclusive, eliminar todos os dados das duas tabelas e repor todos eles com base nos dados existentes na base online, ou fazer selects identificando as diferenças e inserindo esses dados. Tanto faz, eliminar e inserir novamente é mais fácil com certeza. O importante é que essa ação garantiria que os dados existentes na base offline estariam espelhadas com base nos dados existentes da tabela online.

    2) ao término da atividade ou quando o usuário entender que deve sincronizar as informações ele executa a sincronização e os dados da base offline são inseridos na base online. Nesse caso não dá para eliminar os dados da base online pq alguém poderia ter entrado na base e atualizado alguma informação. Então, seria realmente necessário fazer selects identificando as alterações para ai sim efetivá-las na base online.

    Volto a dizer, no seu exemplo não existe nenhum formulário. Então, como o usuário atualiza os dados na tabela offline diretamente na tabela? Ou existe um sistema que você não disponibilizou os formulários e a rotina de utilização da base é feita por esse sistema?
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 21/10/2023, 01:13

    Boa noite abreuluiston!
    Obrigado pelas observações e dicas. O sistema está o no arquivo Excel, ao abri-lo só clicar em abrir pra executar a macro. Desculpe mas pensei que havia falado na 1 mensagem quando falei que tenho um sistema em VBA Excel.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 21/10/2023, 13:48

    Pior que você falou sim, está estampado na primeira mensagem. Eu que desviei o assunto para o Access.

    Vamos recomeçar:

    Você tem duas tabelas no banco de dados que interagem com o Excel que pode estar em uma ou mais máquinas que podem ou não estar online. Seria interessante entender a volumetria, quantidade de registros que estamos falando.

    Começo a achar que vc não precisa de um banco offline e um online. Talvez somente a base online e o Excel obtém os dados para iniciar o trabalho e ao comando do usuário sobe os dados para a base novamente.

    Dessa forma você fica com um repositório atualizado e o Excel é o seu frontend. O que acha?
    Antonio Haele Arnaut
    Antonio Haele Arnaut
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 81
    Registrado : 21/02/2012

    Trabalhar offline e online com banco de dados Empty Trabalhar offline e online com banco de dados

    Mensagem  Antonio Haele Arnaut 21/10/2023, 22:08

    Olá ao Diego e à todos neste belíssimo site, que muito nos tem ajudado!

    Tenho um BD com diversos Back-ends para um único Front-end, dividido em módulos; e compartilhado com os usuários em rede intranet. Atualmente consigo trabalhar em Home Office através de CONEXÃO VPN. Utilizo o RADMIN, mas há vários aplicativos para a mesma finalidade, todos com custos bem accessíveis.

    Funciona perfitamente.
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 23/10/2023, 16:39

    Bom dia abreuluiston e Antonio Haele Arnaut!!
    abreuluiston, não havia pensando nessa possibilidade de usar o excel como banco de dados offline (provisório) para depois jogar pro arquivo online... Como voce disse, teria que analisar se a quantidade de dados daria para usar o excel provisório... mas é uma possibilidade válida. Acho que não havia pensado antes pq quando iniciei esse sistema, fazia a base no proprio excel, como foi crescendo o uso do aplicativo, tive que jogar pra rede online e evitar percas...O excel travava muito e as vezes corrompia a planilha o que fazia perder o que tinha lançado. Tive essa experiencia com o excel =\

    Antonio, o meu sistema tambem faço isso: utilizo VPN para rodar nas maquinas que estao fora da rede, e compartilho com alguns usuários apenas os modulos que necessitam... Porém o problema é que queria fazer uma base offline e quando tivesse internet ou o usuário deseja-se, ele sincronizaria o que havia lançado e salvo no seu PC com o arquivo que estivesse na rede.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 24/10/2023, 13:46

    Diego, bom-dia!

    Estou montando um exemplo que a partir do Excel a rotina obtém os dados da tabela "db_desmonte" da base offline e insere na tabela de mesmo nome da base online.

    A ideia desse exemplo é que ambas as bases sejam idênticas, ou seja, estruturalmente possuem as mesmas tabelas o que difere são os registros que podem existir na tabela offline e que ainda não foram inseridas no banco de dados online.

    Então, a rotina abre os dois bancos de dados (online e offline), obtém os dados da base offline e em seguida insere os dados na tabela online. Já está praticamente pronta, só não coloquei o código porque esbarrei num sério problema:

    Você está utilizando a coluna "idauto" (campo autonumerado) como chave primária da tabela "db_desmonte", porém, você também possui uma coluna chamada "id" que, aparentemente, é a sua chave do registro.

    Não sei como você preenche a id, mas, certamente será um problema porque será necessário controlar essa codificação, caso contrário haverá duplicação de registros. Porém, controlar essa numeração não será uma tarefa muito fácil pq, como você menciona na sua primeira mensagem, existirão várias máquinas trabalhando com a base offline para posteriormente exportarem os dados.

    Mesmo se retirarmos a coluna autonumerada e deixarmos somente a coluna id o problema persistirá pq a questão está no controle do código que daria a unicidade do registro. Consegue entender?

    Só vejo uma saída: cada máquina que utilizar o sistema terá que ter uma faixa de código a ser gerado (exemplo: maquina A faixa de 1-10000; máquina B faixa de 10001-20000 e assim por diante). Claro que é outro problema controlar as faixas pq para calculá-las sem o risco de que elas atinjam seu limite dependerá da sua volumetria de entrada e, mesmo assim, estar sempre preocupado com o estouro das faixas.

    Importante você entender isso pq mesmo se as tabelas estivessem vinculadas o problema existiria.

    diegocabralf gosta desta mensagem

    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 25/10/2023, 11:09

    Bom dia abreuluiston, obg pelo retorno!

    Sobre o campo id não tem problema, podemos criar um id provisório na base offline e um id definitivo na base online. Quando jogar da base offline para online, podemos criar um código que pega o último registro na base online e adiciona 1, fazendo um loop nos registros. Podemos permanecer com a coluna "idoff" por exemplo para conferir se os itens foram copiados antes de excluir da base offline.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 25/10/2023, 17:53

    Diego, boa-tarde!

    Vou anexar um pacote contendo seus dois arquivos BD e um novo Excel contendo o código exemplo. Inspecione o código pq dentro dele eu coloquei
    diversas informações do que ele está fazendo em cada etapa. Tem várias observações.

    Importante: é só um exemplo que se você seguir poderá aprimorar colocando outras tabelas que podem ser necessárias atualizar (fiz o código considerando apenas uma das tabelas). Veja, durante nossa interação eu comentei diversas coisas e esse código não pretende resolver 100% do que eu apontei. Novamente, ele é apenas um caminho que pode ser seguido para melhorar muito, só que dependerá do seu estudo sobre ele e do seu entendimento de lógica para deixar seu sistema redondo.

    Outra coisa importante para finalizar: acho que você deveria seriamente considerar transferir seu sistema para o Access e abandonar o Excel para efeito de sistema. Pode utilizar o Excel para explorar os dados para fazer relatórios e gráficos. Isso acho muito viável, mas ter o código inteiramente no Access mesmo que dividido em FRONTEND e BACKEND seria bem interessante. Mas, veja, é apenas a minha opinião.

    Espero ter ajudado.

    Forte abraço

    Luis Abreu
    Anexos
    Trabalhar offline e online com banco de dados Attachmentpacote.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (90 Kb) Baixado 17 vez(es)

    diegocabralf gosta desta mensagem

    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 25/10/2023, 20:31

    Boa tarde abreuluiston

    Muito obrigado, vou analisar o arquivo que voce enviou. Sobre ter o FRONTEND e BACKEND no próprio access já vi que pode ser feito assim, mas pra te falar a verdade nunca cheguei a ir mais afundo de como funcionari...
    No meu caso em que o arquivo da base de dados fica na rede tenho essa dúvida se daria certo Outra dúvida também que nos demais computadores não possuem o Access, somente o pacote offine basico e não sei se daria para rodar o sistema ou roda mesmo sem o access.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 26/10/2023, 01:44

    Sim, tudo é possível resolver desde que seja pensado e estruturado para fazer acontecer. Entenda, o Excel e o Access são duas ferramentas fantásticas e que são utilizadas até mesmo em mundos corporativos exigentes. Porém, tem hora que é necessário, inclusive, repensar se um sistema feito em .Net, Java ou outra linguagem não seria melhor. Não estou dizendo que esse é o caso pq o que vc coloca como problema é possível resolver. Mas, para resolver é necessário ter real conhecimento das ferramentas.

    Quanto ao meu exemplo entenda que ele está dentro do que falamos, ou seja, há dois arquivos de banco de dados idênticos um rodando na máquina offLine e outro rodando na máquina onLine o que implica que a máquina offline tem que rodar o Access.

    Dois pontos que não mencionei no momento que enviei os arquivos, desculpe a falha:

    1) A rotina está no Excel e que no VBA do arquivo está definido o endereço: C:\TEMP\BaseOnEOff\. Para que ela funcione sem você fazer alteração de caminho crie essa pasta e coloque os arquivos todos dentro dela. Nenhum problema se você colocar em outro caminho, desde que altere a variável que possui esse endereço. Veja que os dois estão na mesma pasta, mas o que importa é que são dois arquivos. Na versão final um pode estar na rede e outro na máquina local, a questão é que no código as variáveis devem ser apontadas para os endereços dos arquivos.

    2) Por se tratar de abertura de banco de dados a partir do Excel é necessário que as referências do office na sua máquina tenha as referências corretas. O que eu mandei está com a referência do meu SO, ou seja, da versão do office da minha máquina que pode não ser as DLLs da sua máquina. Então, o que você precisa confirmar se as referências que eu vou listar abaixo estão configuradas corretamente, caso contrário não haverá a conexão correta.

    Para se certificar disso siga o seguinte caminho:

    a) abra o VBA que contém o código. Isso pode ser feito clicando com o botão direito do mouse no botão da aplicação no Excel. Selecione "atribuir macro" e no quadro que surgir clique em editar.
    b) o código VBA aparecerá. Nesse momento clique em: "Ferramentas" e no submenu "Referências". Para que a rotina funcione deverão aparecer as seguintes indicações clicadas e ativas:

    - Visual Basic For Appications
    - Microsoft Excel xx.x Object Library
    - OLE Automation
    - Microsoft Office xx.x Access database engine Objects
    - Microsoft Access xx.x Object Library.

    O xx.x acima indica que você deverá ter o que está na sua versão instalada. O que eu mandei é 16.0 se o seu for diferente basta procurar todas essas referências da sua versão que a aplicação funcionará.

    Desculpe não ter mencionado isso antes.

    At.
    Luis Abreu

    diegocabralf gosta desta mensagem

    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3217
    Registrado : 13/12/2016

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  Alexandre Fim 26/10/2023, 14:25

    Bom dia Senhores,

    Apenas um pitaco da minha parte.

    Parabenizar o Luis Abreu que definiu pontos importantes e demonstrou conhecimento e interesse em ajudar a resolver o problema.

    Pelo que eu vi na 1a mensagem, existe um problema no serviço de internet, onde alguns colaboradores ficam sem acesso à rede.

    Na minha ótica é necessário resolver a questão do serviço de internet, e não ter que adotar medidas paliativas para resolver o problema.

    Diego, se você ou a empresa paga um serviço de disponibilidade de internet, no mínimo, a empresa tem que cumprir com o serviço conforme contrato. Se o sistema sempre funcionou bem e por causa da internet os colaboradores não conseguem trabalhar, o problema não é o sistema e sim o serviço.

    O sistema não tem que se adaptar ao serviço de internet (que pelo visto, não é dos melhores).

    É isso.

    Att,

    Alexandre Fim


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    Trabalhar offline e online com banco de dados Setinf11
    Sistemas e Tecnologia Ltda

    diegocabralf e abreuluiston gostam desta mensagem

    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 26/10/2023, 20:54

    Boa tarde!!

    Obrigado pelas observações e ajuda Luis! Muito obrigado! Abri o arquivo e vi que voce colocou algumas observações também. Testei em rede e funcionou. Irei adaptar no programa e verificar se vai ser viável... mas pelo que testei deu certo. Agora vou pensar sobre um código para checar se o item foi copiado pro online antes de excluir o que está no offline, mas dessa forma já consigo fazer alguns testes aqui.

    Alexandre, concordo plenamente com você. O ruim é depender apenas de um fornecedor na região ou ser apenas satélite. Ai quando usa o VPN fica bem lento... e demora pra caramba os lançamentos. Dessa forma, os lançamentos iriam ser feitos e quando o usuário quisesse, ele sincronizaria, o que adiantaria o processo...Mas concordo, acho que é um paleativo bobo, mas não tenho outra opção. Praticamente todas as filiais não possuem internet estável, e por ser na zona rural acontece várias interrupções ao longo da semana/mês, mas vlw sobre o pitaco kkkk, vou até ficar em cima desse assunto novamente.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 27/10/2023, 13:19

    Diego, bom-dia!

    Que bom que funcionou fico feliz em ter ajudado. Tem bastante coisa pra se pensar, mas esse exemplo já dá uma luz pra onde caminhar.

    Obrigado também ao amigo que escreveu um "pitaco" mais do que pertinente.

    Forte abraço e boa sorte!
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 6/11/2023, 17:18

    Boa tarde, abreuluiston

    Queria desenvolver um contador de registros e uma verificação no final se o item foi copiado para ser excluído da base offline. Com relação ao ID, pensei em usar a função datetime (data e hora atual) + o nome do usuário para deixar como único o id para ser copiado. Na base online continua o idauto conforme vc colocou. Consegue me ajudar? Não tenho muito conhecimento, e vi que vc colocou algumas obervações bacanas no código.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 7/11/2023, 18:45

    Olá Diego, boa-tarde!

    Isso pode ser feito de várias formas, com ctz se outra pessoa olhar as notas pode até ter outra lógica. O que eu acho é que você deveria normatizar suas tabelas e optar por um índice numérico e simples sem a necessidade de colocar data e hora e também usuário no índice.

    A questão principal que eu comentei é que seu índice é um campo auto-numerado e, portanto, você não controla ele, mas sim o próprio Access. Se optar por manter esse índice criado na auto-numeração a primeira coisa a fazer é eliminar o outro código ou, se ele é um código importante para você optar por ele e retirar o campo de auto-numeração. Veja:

    A) Se optar por permanecer e excluir o campo próprio de código os registros são inseridos na base e cada um ganhará um código definido pelo Access e, dessa forma, você não precisa se preocupar com essa chave primária.

    B) Se optar por ter você o controle do código e a chave primária ser o seu campo ai sim é necessário controlar para saber qual a numeração que os registros devem receber ao serem exportados para a base online.

    Nesse caso uma forma seria a seguinte: uma tabela simples de configuração do sistema que um dos campos seja o próximo código (veja, essa tabela possui apenas uma linha e nesse exemplo apenas um campo). Vou usar de exemplo um campo chamado proxCod. Então, o proxCod deverá sempre ser o próximo código válido para a entrada de um registro. Mas, importante, lembre-se que você trabalha num ambiente de rede e, portanto, um ou mais usuários podem estar exportando os registros ao mesmo tempo. Nesse caso um dos caminhos possíveis seria:

    1) fazer uma consulta na base offline e obter o total de registros a serem exportados. Digamos que a resposta foi de 7 registros;
    2) abrir um recordset (porém esse recordset deve ser do tipo que bloqueia a tabela enquanto está aberto) da tabela de configurações e pegar o valor presente para o proxCod e, imediatamente, somar os 7 +1 e o resultado gravar no campo proxCod e fechar o recordset. Isso garante que você já tenha pego a range de códigos que serão usados nessa instância e se outro usuário entrar no momento em que essa operação estiver acontecendo o Access retornará um erro que pode ser controlado. Assim a rotina pode insistir até que a tabela esteja liberada. Veja, esse procedimento é rápido, mas é necessário controlar pq é um ambiente de rede.
    3) A partir desse momento você deveria gravar os dados utilizando um loop e utilizar os 7 códigos que estão na range conhecida.

    Para se certificar que os registros foram inseridos a checagem poderia ser cruzando outras informações (outro campo ou um conjunto de campos que você sabe que dificilmente estariam cadastrados em outra máquina). Então, também a partir de loops você checaria a partir dos dados existentes na sua tabela se eles estão na base online e se estivessem bastaria eliminá-los da base offline.

    Veja, como mencionei, é complicado eu desenvolver toda essa lógica pq dá um certo trabalho e eu teria que simular um ambiente de rede para checar se a rotina está fazendo corretamente a simultaneidade no momento da checagem e gravação do próximo novo código válido. Insisto, num ambiente de rede se não observar esse critério de controle em campos sensíveis como uma chave primária registros podem sim ser perdidos. A lógica é exatamente a que descrevi, mas, claro que a codificação exige um pouco de prática com lógica e com banco de dados.

    O caminho "A" é bem mais simples e você deveria apenas se preocupar com a checagem/validação de que os registros foram todos exportados com sucesso. Porém, na minha opnião, não gosto de campos auto-numerados pq gosto de normalizar meu banco de dados relacionando tabelas e gosto mais de criar meus próprios índices. Mas isso não significa que não funcione no seu caso e derrepente sua base não é tão complexa a ponto de precisar de uma normalização de tabelas.

    Se optar por ele (caminho A) ainda posso ajudar no sentido de equalizar erros da sua lógica de checagem ou em como fazer. Mas se optar pelo caminho B para te ajudar talvez fosse melhor uma parceria minha acessando diretamente também o seu ambiente de rede. Contudo fazer isso está mais para assessoria do que auxílio tirando suas dúvidas.

    Espero que tenha entendido minha explicação de todos os pontos e do meu argumento final.

    At.
    Luis Abreu

    diegocabralf gosta desta mensagem

    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 9/11/2023, 11:23

    Bom dia, abreuluiston

    Fiz as adaptações no código e agora deu certo, muito obrigado pela ajuda!!!

    Código:
        Do Until SSOffLine.EOF()
            Sql = "Insert Into db_desmonte(id, filial, Datainicio, Local, Piso, Tipo, Movimento, Colab,idunico ) "
            Sql = Sql & "Values(" & SSOffLine!ID & ", '" & SSOffLine!filial & "','" & SSOffLine!Datainicio & "', '"
            Sql = Sql & SSOffLine!Local & "','" & SSOffLine!Piso & "','" & SSOffLine!Tipo & "','"
            Sql = Sql & SSOffLine!Movimento & "','" & SSOffLine!Colab & "','" & SSOffLine!idunico & "')"
           
            appOnLine.DoCmd.RunSQL Sql
           
            Sql = "Select * From db_desmonte Where idunico = '" & SSOffLine!idunico & "'"
            Set SSOnLine = appOnLine.CurrentDb.OpenRecordset(Sql, dbOpenSnapshot)
           
            If Not SSOnLine.EOF Then
                Sql = "Delete From db_desmonte Where idunico = '" & SSOffLine!idunico & "'"
                appOffLine.DoCmd.RunSQL Sql
                contaReg = contaReg + 1 ' Incrementa o contador
            End If
           
            SSOffLine.MoveNext
        Loop

        MsgBox contaReg & " itens foram copiados da base offline para a base online."
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 9/11/2023, 17:28

    Se deu certo fico feliz em ter ajudado. Mas, eu fiquei com uma dúvida. Para deletar você está checando o registro através do idUnico e pelo que entendi quem gerou esse idUnico foi a base offLine. É isso?
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 9/11/2023, 19:37

    Boa tarde. Exato. Fiz o seguinte:

    Atribui um código a cada usuário no sistema;
    Ao abrir, o usuário seleciona se deseja usar online ou offline: a partir daqui, criei outra variável que pega o usuário&status (online ou offline)
    Ao salvar, o id (cód. usuário & status) fica em uma coluna;
    Na tabela do access, deixei o campo idauto para ser autonumerado e criei um campo novo chamado idunico, que pega o idauto&id. Assim ao salvar offline por exemplo, tenho o código (11200) que significa,1=meu usuário;1=offline;200 gerado pelo acess.
    Ai depois ao sincronizar, ele pega esse idunico e cola no campo da base online.

    abreuluiston gosta desta mensagem

    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 10/11/2023, 12:24

    Legal! O importante é que está funcionando e te atendendo e mais importante ainda é que você fez então saberá dar manutenção.
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 22/11/2023, 01:32

    Boa noite! abreuluiston, me deparei com um problema ao rodar o aplicativo de teste em outros computadores: precisa ter o access instalado para executar a parte do código abaixo, conforme vc informou nas mensagens anteriores.

    Código:
       ' Criando as instancias do Microsoft Access.
        Set appOnLine = CreateObject("Access.Application")
        Set appOffLine = CreateObject("Access.Application")

    Há alguma forma se rodar sem precisar ter o aplicativo do access instalado no computador do usuário?
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 11/12/2023, 13:01

    Olá Diego, bom-dia!

    Desculpe, estive desconectado nessas últimas semanas. Devo ter mencionado sim em algum momento isso. Realmente da forma como foi feito você precisa do Access instalado nas máquinas pq o Excel instancia as DLLs considerando que está instalado.

    Nunca tive um ambiente em que o Access não está instalado e mesmo assim utiliza uma aplicação MDB, porém tem como fazer sim. Você já pesquisou no fórum?
    diegocabralf
    diegocabralf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 19/04/2020

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  diegocabralf 18/12/2023, 11:46

    Bom dia abreuluiston. Não conseguir encontrar, se souber poderia me enviar? Caso contrário podemos encerrar o tópico.
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 24/07/2023

    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  abreuluiston 18/12/2023, 22:33

    Olá Diego, boa-noite!

    Vou disponibilizar um link se por acaso ele não funcionar procure no google pelo seguinte contexto: Baixar e instalar o Microsoft 365 Access Runtime

    https://support.microsoft.com/pt-br/office/baixar-e-instalar-o-microsoft-365-access-runtime-185c5a32-8ba9-491e-ac76-91cbe3ea09c9#:~:text=O%20Microsoft%20365%20Access%20Runtime%20inclui%20o%20Mecanismo%20de%20Banco,OLEDB%2C%20ODBC%2C%20DAO).

    Acredito que deve ter algum artigo a respeito do Runtime. Acho que vale procurar e estudar pra entender, mas, aparentemente ele fará o que você precisa.

    Abs.
    Luis Abreu

    Conteúdo patrocinado


    Trabalhar offline e online com banco de dados Empty Re: Trabalhar offline e online com banco de dados

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 17:17