CONEXAO AO BD ACCESS EM REDE

CRISTIANOLIVE 09/12/2006 15:27:09
#189022
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:

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.
ESLEYSANCHES 09/12/2006 16:39:29
#189024
é 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 !!
WEBER 09/12/2006 17:28:28
#189027
PEra tem alguma coisa errada primeiro

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.
HUGOSSOUZA 09/12/2006 22:37:40
#189063
Citação:

WEBER escreveu:
PEra tem alguma coisa errada primeiro

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 \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.


CRISTIANOLIVE 11/12/2006 15:05:40
#189316
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.
CRISTIANOLIVE 13/12/2006 16:46:35
#189789
Weber, alguma idéia?

Ainda estou sem sucesso.

Obrigado.
CRISTIANOLIVE 16/12/2006 13:43:50
#190379
Ainda estou sem sucesso, me ajudem por favor

Obrigado
RONALD.OTAVIO 16/12/2006 14:39:29
#190387
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.

USUARIO.EXCLUIDOS 16/12/2006 16:50:43
#190409
na abertura do banco de dados você pode colocar a instrução adoptimistc que vai funcionar essa inserção da outra máquina

WEBER 16/12/2006 18:25:37
#190412
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

Set TBDados = BancodeDados.OpenRecordset("SELECT * FROM DADOS ORDE BY campo_tabela", , , 3)

Tópico encerrado , respostas não são mais permitidas