DUVIDAS SOBRE SISTEMA MULTI USUARIO
Tenho um sistema de O.S feito pra rodar somente em uma maquina... como seria a forma de abrir o mesmo banco de dados nos terminais?
Obs: Utilizo o DAO.
Obs: Utilizo o DAO.
\\maquinadaRede\compartilhamento\banco.mdb
Onde vc coloca a sting de conexão em seu sistema.
ao invés de caminho fisico ou app.path vc coloca o caminho do banco na rede.
Onde vc coloca a sting de conexão em seu sistema.
ao invés de caminho fisico ou app.path vc coloca o caminho do banco na rede.
Brother e como feria a questão de inserir registros via rede? seria o mesmo que eu uso ?
UMA VEZ QUE VOCÃÅ FEZ A CONEXAO INDICANDO O BANCO DE DADOS E SEMPRE QUE VOCÃÅ PASSAR UM COMANDO USANDO A CONEXAO ELA VIA EXECUTAR NO LOCAL QUE FOI ESPECIFICADO NA SUA CONEXAO.
Bem...eu ja tinha escrito tudo, q qdo fui gravar o topico deu erro no site....e perdi todo o texto...
mas vou resumir, para ficar mais prático.
Na verdade não eh soh isso naum.......
Imagine a seguinte situação: o USUÃÂÂRIO A abre a tela de cadastro de cliente e começa editar o cliente de codigo 100, antes mesmo do USUÃÂÂRIO A terminar de editar o registro, o USUÃÂÂRIO B, abre o cliente de codigo 100, edita, salva e fecha o cadastro. Então o USUÃÂÂRIO A faz a alteração necessária e também salva o registro. Pronto, aconteceu que as alterações feitas pelo USUÃÂÂRIO B, foram todas perdidas.
Para contornar tal problema vc necessita, criar um campo na tabela, sugiro do tipo BOOLEAN, que irá identificar se o registro atual está ou não sendo alterado por outro usuário.
Um outro problema muito comum é com as adições de registros. é importante vc criar uma rotina para gerar os códigos únicos para os novos registros.
Tem quem não goste de utilizar o autonumeração (eu sou um deles), por isso recomendo que crie uma rotina para tal procedimento.
Qualquer duvida posta ae.......
mas vou resumir, para ficar mais prático.
Na verdade não eh soh isso naum.......
Imagine a seguinte situação: o USUÃÂÂRIO A abre a tela de cadastro de cliente e começa editar o cliente de codigo 100, antes mesmo do USUÃÂÂRIO A terminar de editar o registro, o USUÃÂÂRIO B, abre o cliente de codigo 100, edita, salva e fecha o cadastro. Então o USUÃÂÂRIO A faz a alteração necessária e também salva o registro. Pronto, aconteceu que as alterações feitas pelo USUÃÂÂRIO B, foram todas perdidas.
Para contornar tal problema vc necessita, criar um campo na tabela, sugiro do tipo BOOLEAN, que irá identificar se o registro atual está ou não sendo alterado por outro usuário.
Um outro problema muito comum é com as adições de registros. é importante vc criar uma rotina para gerar os códigos únicos para os novos registros.
Tem quem não goste de utilizar o autonumeração (eu sou um deles), por isso recomendo que crie uma rotina para tal procedimento.
Qualquer duvida posta ae.......
Brother tem como vc me dar um exemplo pratico do que vc disse ai... estou precisando mesmo....
em todas as tabelas adicione um campo chamado editReg (por exemplo).do tipo(verdadeiro ou falso) ou text "SIM" ou "NÃO" ou ainda 0 ou 1, em fim uma condição realmente verdadeira ou falsa.
Quando for editar um registro vc vai verificar se o campo editReg, esta verdadeiro ou falso.....
tipo :
No exemplo a seguir coloquei o codio em um botão chamado alterar.
você pode colocar esse código logo que vc abrir o cadastro para edição.
mais ou menos isso ae......
Acredito q outros usuários utilizem de outra forma...
mas essa ae para mim...resolve.
Quando for editar um registro vc vai verificar se o campo editReg, esta verdadeiro ou falso.....
tipo :
No exemplo a seguir coloquei o codio em um botão chamado alterar.
você pode colocar esse código logo que vc abrir o cadastro para edição.
Set rsProdutos = New ADODB.Recordset
rsProdutos.Open "select * from produtos WHERE CODBARRAS='" & txt.Item(2).Text & "' order by codproduto", bd, adOpenStatic, adLockOptimistic
LerRegistroAtual ' esta função le os dados do registro atual cujo codbarras = a txt.item(2)
On Error GoTo SAIFUNC
Select Case rsProdutos.Fields("editReg")
Case Is <> 1
rsProdutos.Fields("editReg") = 1
rsProdutos.Update
Dim I As Integer
For I = 0 To 20
If txt(I).Locked = True Then: txt(I).Locked = False
If txt(I).Enabled = False Then: txt(I).Enabled = True
Next I
txtUnidade.Enabled = True
Check3.Enabled = True
chkATIVO.Enabled = True
chkPromocional.Enabled = True
cmdSalvar.Enabled = True
cmdAdicionar.Enabled = False
cmdAlterar.Enabled = False
cmdCancelar.Enabled = True
Case Is = 1
MsgBox "Este registro não poderá ser editado." & vbCrLf & "Tente novamente mais tarde !!!!", vbInformation, "Edição de registro"
cmdExcluir.Enabled = False
cmdSair.Enabled = True
End Select
SAIFUNC:
Select Case Err.Number
Case 0
Case -2147217864
MsgBox Err.Description
End Select
mais ou menos isso ae......
Acredito q outros usuários utilizem de outra forma...
mas essa ae para mim...resolve.
Foxman,
Você ja parou para pensar no caso de acabar a energia ou reset na maquina
com esse campo editreg como verdadeiro ?
Você ja parou para pensar no caso de acabar a energia ou reset na maquina
com esse campo editreg como verdadeiro ?
ja...soh naum apresentei ae..nas instrução, pois serve somente para o amigo ter noção.
Por isso utilizo BeginTrans,CommitTrans e RollbackTrans
Por isso utilizo BeginTrans,CommitTrans e RollbackTrans
Foxman vc nao tem um exemplo usando DAO nao?
Infelizmente naum utilizo DAO
Tópico encerrado , respostas não são mais permitidas