|
|
|
|
|
Dicas
|
|
Visual Basic (Banco de Dados)
|
|
|
Título da Dica: DAO , proibir acesso ao banco enquanto alguem salva nele
|
|
|
|
Postada em 10/10/2003 por ^HEAVY-METAL^
'Bom, devido a muitos pedidos que recebi nos ultimos dias, estou 'colocando aqui como fazer para abrir o banco, para que apenas um 'usuário possa mexer no banco.
'Quando for preciso usar o banco de dados utilize esse método de 'abertura de banco On Error GoTo TrataErro 'Caso ocorra um erro ele irá para a rotina TrataErro Set banco = OpenDatabase(App.Path & "\db5.mdb") 'Abro o banco de dados Set tborc = banco.OpenRecordset("PedOrc", dbOpenTable, dbDenyWrite) 'Abro a tabela como dbDenyWrite - ou seja o banco de dados ficará disponível apenas para essa pessoa .
TrataErro: 'Caso de erro ( outra pessoa tenta abrir a base de dados virá para essa rotina ) If MsgBox("Não é possível efetuar esta operação no momento. Aguardar?", vbYesNo + vbQuestion, "Orçamentos e Pedidos") = vbYes Then 'Faço um pergunta se deseja esperar a liberação da base de dados Resume 'Se quiser esperar, mando o Resume para que o programa continue da linha que deu o erro Else 'Senão Unload Me 'Fecho a tela End If End Sub 'O que acontece com esse código é o seguinte. 2 usuários vão abrir a 'mesma tela, para gravar um código de cliente ( exemplo ). Pela lógica 'você não pode ter o mesmo número de registro para 2 clientes distintos, 'correto? Intão, essa rotina faz com que por mais preciso que os 2 'apertem o botão de incluir ( exemplo do cliente ) nunca abrirá nas 2 'máquinas. Um deles terá a base aberta, o outro irá para a rotina de erro 'até que a liberação da base seja feita. 'Problemas: se você abrir a base e esquiecer de fechá-la, ninguem da sua 'rede conseguirar acessar a tabela enquanto a mesma estiver aberta 'nesse modo. 'Soluções: garantia de que quando você for incluir, alterar ou excluir um 'registro, saberá que o mesmo será feito sem nenhum problema. 'PS: abre o banco de dados desse jeito ( mostrado acima ) apenas para 'rotinas de inclusão, alteração e exclusão de registros. Para consulta 'troque o dbDenyWrite para dbReadOnly. 'Dica: trabalhe sempre com o banco de dados fechado, abrá-o apenas 'quando realmente for incluir, alterar ( ambos quando for gravar no 'banco ) e excluir do seu banco de dados que você não terá problemas. Bom galera vou ficando por aqui e espero ajudar muitos usuários :o)
T+,
Manuel
|
|
|
|
|