CONEXAO AO BD ACCESS EM REDE
Estou com um problema, trabalho com um banco de dados Access 97 em rede, são 5 micros diferentes enviando registros para este BD, o problema está sendo o seguinte:
Enquanto um micro está enviando registros sem problemas, todas as informações estão OK, ao ser enviado por outro micro as informações que o micro anterior havia enviado é substituÃdo por estas novas informações.
Como posso resolver isto:
Faço a chamada do BD da seguinte maneira:
para incluir dados utilizo:
TBRelatório.AddNew
e para editar:
TBRelatório.Edit
Conto com toda ajuda possÃvel,
Grato.
Enquanto um micro está enviando registros sem problemas, todas as informações estão OK, ao ser enviado por outro micro as informações que o micro anterior havia enviado é substituÃdo por estas novas informações.
Como posso resolver isto:
Faço a chamada do BD da seguinte maneira:
Private Sub Form_Load()
Set BancodeDados = OpenDatabase(App.Path & "\SOQ.MDB")
Set TBDados = BancodeDados.OpenRecordset("Dados")
Set TBRelatório = BancodeDados.OpenRecordset("Relatório")
End Sub
para incluir dados utilizo:
TBRelatório.AddNew
e para editar:
TBRelatório.Edit
Conto com toda ajuda possÃvel,
Grato.
é como uma alteração ?
Você poderia incluir um campo na tabela chamado EDICAO, para ele aceitar apenas valores Integer (números) quando alguém for editar um registro colocar o valor 1 neste campo. Assim quando alguém for alterar diz que esse registro já está sendo atualizado. Depois do usuário alterar o registro deixe o valor como 0 !!
Veja se isso te ajuda !!
Abraços !!
Você poderia incluir um campo na tabela chamado EDICAO, para ele aceitar apenas valores Integer (números) quando alguém for editar um registro colocar o valor 1 neste campo. Assim quando alguém for alterar diz que esse registro já está sendo atualizado. Depois do usuário alterar o registro deixe o valor como 0 !!
Veja se isso te ajuda !!
Abraços !!
PEra tem alguma coisa errada primeiro
ao meu ver vc nao pode estar abrindo o banco de dados assim
vc deveria estar abrindo usando o caminho da rede \\maquina\pasta\soq.mdb
bom vamos ver pelo jeito vc esta usando DAO
1-verifique se vc esta usando a referencia Microsoft DAO 2.5/3.5 comp....
2-ao declarar uma variavel exemplo
TBDados tente fazelo assim
3-bom eu faria a abertura da seguinte forma
e os recordsets assim
com esse tipo de abertura possivelmente se um usuario estiver alterando um registro e outro tentar alterar irá gerar um erro ai basta tratar esse erro com alguma mensagem
4-qnto a usar o metodo addnew ou o edit e depois o Update nao vejo problema nenhum
outra dica é vc migrar do access 97 para o 2000/xp basta mudar a ref. para DAO 3.6 e para trabalhar em rede em acho q seria interessante tb vc migrar para a tecnologia ADO.
ao meu ver vc nao pode estar abrindo o banco de dados assim
Set BancodeDados = OpenDatabase(App.Path & "\SOQ.MDB")
vc deveria estar abrindo usando o caminho da rede \\maquina\pasta\soq.mdb
bom vamos ver pelo jeito vc esta usando DAO
1-verifique se vc esta usando a referencia Microsoft DAO 2.5/3.5 comp....
2-ao declarar uma variavel exemplo
TBDados tente fazelo assim
dim ou public TBDados as DAO.Database
e para o recordset a mesma coisa DAO.recordset.
3-bom eu faria a abertura da seguinte forma
Set BancodeDados = OpenDatabase(caminho, False, False)
e os recordsets assim
Set TBDados = BancodeDados.OpenRecordset("SELECT * FROM DADOS", , , 3)
com esse tipo de abertura possivelmente se um usuario estiver alterando um registro e outro tentar alterar irá gerar um erro ai basta tratar esse erro com alguma mensagem
4-qnto a usar o metodo addnew ou o edit e depois o Update nao vejo problema nenhum
outra dica é vc migrar do access 97 para o 2000/xp basta mudar a ref. para DAO 3.6 e para trabalhar em rede em acho q seria interessante tb vc migrar para a tecnologia ADO.
Citação:WEBER escreveu:
PEra tem alguma coisa errada primeiro
ao meu ver vc nao pode estar abrindo o banco de dados assimSet BancodeDados = OpenDatabase(App.Path & [Ãâ€ÂÂ]SOQ.MDB[Ãâ€ÂÂ])
vc deveria estar abrindo usando o caminho da rede \maquinapastasoq.mdb
eu uso access em rede usando o app.path e funciona normal...
oq vc pode tentar fazer é abrir o RS na hora que o usuario for alterar o registro... ai evita de deixar o recordset conectado.
Weber, fiz como vc disse
dim ou public TBDados as DAO.Database
e para o recordset a mesma coisa DAO.recordset.
Declarei Set BancodeDados = OpenDatabase(caminho, False, False)
Set TBDados = BancodeDados.OpenRecordset("SELECT * FROM DADOS", , , 3)
Mas agora está dando erro 3251 ("operação não suportada para este tipo de objeto")
Este erro está ocorrendo no TBDados.Index = "EAN". aqui é onde faço a consulta
Também troquei o Access 97 pelo 2000.
Se lembrar mais alguma coisa eu agradeço.
Um abraço a todos.
dim ou public TBDados as DAO.Database
e para o recordset a mesma coisa DAO.recordset.
Declarei Set BancodeDados = OpenDatabase(caminho, False, False)
Set TBDados = BancodeDados.OpenRecordset("SELECT * FROM DADOS", , , 3)
Mas agora está dando erro 3251 ("operação não suportada para este tipo de objeto")
Este erro está ocorrendo no TBDados.Index = "EAN". aqui é onde faço a consulta
Também troquei o Access 97 pelo 2000.
Se lembrar mais alguma coisa eu agradeço.
Um abraço a todos.
Weber, alguma idéia?
Ainda estou sem sucesso.
Obrigado.
Ainda estou sem sucesso.
Obrigado.
Ainda estou sem sucesso, me ajudem por favor
Obrigado
Obrigado
você colocou a seguinte linha:
Set TBDados = BancodeDados.OpenRecordset("SELECT * FROM DADOS", , , 3)
quando você pede o index haverá este erro mesmo, porque você está abrindo na forma SQL.
Você pode optar o tipo do Ãndice na linha anterior colocando no final "order by", ou então, abrir novamente o recordset
Set TBDados = BancodeDados.OpenRecordset("DADOS")
Assim aceitará o indice.
Set TBDados = BancodeDados.OpenRecordset("SELECT * FROM DADOS", , , 3)
quando você pede o index haverá este erro mesmo, porque você está abrindo na forma SQL.
Você pode optar o tipo do Ãndice na linha anterior colocando no final "order by", ou então, abrir novamente o recordset
Set TBDados = BancodeDados.OpenRecordset("DADOS")
Assim aceitará o indice.
na abertura do banco de dados você pode colocar a instrução adoptimistc que vai funcionar essa inserção da outra máquina
Oerro é gerado pq vc esta abrindo a tabela como uma consulta em SQL e vc abre como dynaset e para usar indices vc teria que abrir como Table ou seja apenas informando o nome da tabela que esta no banco de dados.
Porem se o seu problema é apenas ordenar vc poderia simplesmente usar
Porem se o seu problema é apenas ordenar vc poderia simplesmente usar
Set TBDados = BancodeDados.OpenRecordset("SELECT * FROM DADOS ORDE BY campo_tabela", , , 3)
Tópico encerrado , respostas não são mais permitidas