Jump to content
Fórum Script Brasil
  • 0

Vb6_Access 2000_Rede


George Ferraz

Question

Tarde amigos, tenho um problema em um sistema que quero rodar em rede e não consigo exito.

2 - maquinas:

1-maquina sistema instalado assim:

c:\syscheirodapaz\sistema = executavel

inicia em: = c:\bdcheirodapaz = pasta com o bancocheirodapaz.MDB (banco access 2000)

2-maquina sistema instaldo assim:

c:\syscheirodapaz\sistema = executavel

inicia em: = \\centro_2-pc\c\bdcheirodapaz = pasta com o bancocheirodapaz.MDB banco access 2000

Tudo esta compartilhado completo com todas as permissoes por completo e com o usuario "todos"

Ocorre este erro aqui:

Erro: -2147467259 (driver ODBC para access) A operacao deve usar uma consulta atualizavel.

Minha conexao:

Private Sub Main()

Dim strArquivo As String
Dim strLocal As String
Dim ConectaAccess As String
Dim USER As String
Dim SENHA As String

Load MDISysCheirodaPaz
MDISysCheirodaPaz.Show
DoEvents

Set Cnn = New ADODB.Connection
Set rs = New ADODB.Recordset


strArquivo = ("\BdCheirodaPaz\BancoCheirodaPaz.mdb")
strLocal = App.Path
Set Cnn = CreateObject("ADODB.Connection")
ConectaAccess = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=" & strArquivo & ";" & _
"DefaultDir=" & strLocal & ";" & _
"Uid=" & USER & ";" & _
"PWD=" & SENHA & ";" & _
"Option=3;"

Cnn.Open ConectaAccess

End Sub

A rede é simples apenas duas maquinas e não consigo fazer que a maquina 2 atualize os dados, apenas consulta porque ?

já venho buscando solucao e nada encontrei ate o momento.

Caros amigos, alguém já passou por isto e pode me ajudar a resolver.

Fico grato a todos desde já. B)

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

acho q não tem nd a ver com rede nem com pasta nem com conexao, na verdade acho q é alguma query de update q não permite atualizacao, muito provavelmente por conta do modo como a query esta formada (exemplo, update com group by não é permitido - pelo menos não no access).

se tiver dificuldade em encontrar, tente rodar o sistema a partir do codigo fonte. assim quando acontecer o erro, a execucao é pausada e vai te mostrar exatamente qual o codigo q ele tentou executar q deu erro.

ai você corrige o codigo.

ou o problema esta acontecendo em apenas um dos computadores e outro não?? se for o caso ai tb não entendi...

ai pode ser problema de permissao na pasta onde esta o banco mesmo. faca um teste, esse usuario consegue salvar um arquivo qualquer dentro dessa pasta??

Edited by kuroi
Link to comment
Share on other sites

  • 0

Kuroi, boas amigo.

acho q não tem nd a ver com rede nem com pasta nem com conexao, na verdade acho q é alguma query de update q não permite atualizacao, muito provavelmente por conta do modo como a query esta formada (exemplo, update com group by não é permitido - pelo menos não no access).

se tiver dificuldade em encontrar, tente rodar o sistema a partir do codigo fonte. assim quando acontecer o erro, a execucao é pausada e vai te mostrar exatamente qual o codigo q ele tentou executar q deu erro.

ai você corrige o codigo.

Boa ideia de roda em codigo fonte, terei que instalar o vb6 no wiw 7, e tentar resolver em projeto seria isso certo, o duro que vejo os colegas reclamarem o win 7 com o vb6, mais existem varios topicos sobre o assunto e acho que não terei problemas, mais qualquer coisa eu posto.

na maquina 1 roda sem problemas, so quando eu pego o atalho e executo na maquina 2, ai so consigo consultar e mais nada.

estou sem a query de uptade agora pois estou no cliente, vou postar aqui pra você olha e dar sua opniao.

Muito obrigado e boa noite.

Link to comment
Share on other sites

  • 0

Kuroi, tarde,

Meu amigo sucesso ! eu fiz uma pequena modificação na minha query, seguindo uma de suas sugestoes e supinpa, agora já consigo editar na maquina 2.

Veja o que fiz:

'***================================***

'em um modulo tenho minhas variaveis globais para o ADO:

Option Explicit
Global Cnn As ADODB.Connection
Global rs As ADODB.Recordset
Global Fechar As Boolean

Meu sub main:

Private Sub Main()
'===========================================================================================================
'Aqui eu uso um form main no projeto e nele eu trato as variaveis de conecxao com o banco de dados.
'===========================================================================================================

Dim ConectaAccess As String

Load MDISysCheirodaPaz
MDISysCheirodaPaz.Show
DoEvents

Set Cnn = New ADODB.Connection

Set Cnn = CreateObject("ADODB.Connection")
ConectaAccess = "Driver={Microsoft Access Driver (*.mdb)};Dbq=\\10.1.1.2\C\BdCheirodaPaz\BancoCheirodaPaz.mdb;Uid=Administrador; Pwd=ferraz"

Cnn.Open ConectaAccess

Set rs = New ADODB.Recordset
Cnn.CursorLocation = adUseServer
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
'=====================================================================================
End Sub
'***==================================================================================
'Aqui eu tenho minha strings e query para o novo usuario

Public Function NewUser(ByVal strRegistro As String, _
strData As String, strUser As String, _
strSenha As String, strChkPermit1 As String, _
strChkPermit2 As String, strChkPermit3 As String) As Variant
'Campos base
'Registro = numero
'Data = data/hora
'Nome = texto
'Senha = text
'ChkPermit1 = text
'ChkPermit2 = text
'ChkPermit3 = text
Cnn.Execute ("Insert Into TbUsuario(Registro,Data,Nome,Senha,ChkPermit1,ChkPermit2,ChkPermit3)" _
& "values('" & strRegistro & "','" & _
strData & "','" & strUser & "','" & _
strSenha & "','" & strChkPermit1 & "','" & _
strChkPermit2 & "','" & strChkPermit3 & "')")

NewUser = True

End Function

'***==================================================================================
'Aqui eu tenho minha strings e query para o update do usuario

Public Function UpdateUser(ByVal strRegistro As String, _
strData As String, strUser As String, _
strSenha As String, strChkPermit1 As String, _
strChkPermit2 As String, strChkPermit3 As String) As Variant
'Campos base
'Registro = numero
'Data = data/hora
'Nome = texto
'Senha = text
'ChkPermit1 = text
'ChkPermit2 = text
'ChkPermit3 = text
Cnn.Execute "Update TbUsuario Set" _
& " Data= '" & strData & "'," _
& " Nome= '" & strUser & "', " _
& " Senha= '" & strSenha & "', " _
& " ChkPermit1= '" & strChkPermit1 & "', " _
& " ChkPermit2= '" & strChkPermit2 & "', " _
& " ChkPermit3= '" & strChkPermit3 & "'" _
& " Where Registro = " & strRegistro

UpdateUser = True

End Function

'***==================================================================================
'Aqui eu tenho minha strings e query para o delate do usuario

Public Function DeleteUser(ByVal strRegistro As String, _
strData As String, strUser As String, _
strSenha As String, strChkPermit1 As String, _
strChkPermit2 As String, strChkPermit3 As String) As Variant

Cnn.Execute "Delete * From TbUsuario Where Registro=" & strRegistro & ""

DeleteUser = True

End Function

'***==================================================================================
'Agora no formCadUser

Private Sub lvBConf_Click()
'***==================================================================================
'Aqui eu chamo a veriavel que criei no modulo para gravar o novo usuario.

Dim NovoUser As Variant
On Error GoTo Erro

NovoUser = NewUser(TxtReg.Text, TxtDta.Text, TxtNome.Text, _
TxtSenha.Text, ChkAltera.Value, ChkIncluir.Value, ChkConsulta.Value)

If NovoUser = True Then
Erro:
TrataErro
MsgBox "Novo Usuário incluido com sucesso !", vbInformation
End If
Unload Me
End Sub

Private Sub lvBAltera_Click()
'***==================================================================================
'Aqui eu crio uma variavel e chamo a funcao updateuser, para
'efetuar as alteracoes.

Dim AtualUser As Variant
On Error GoTo Erro

AtualUser = UpdateUser(TxtReg.Text, TxtDta.Text, TxtNome.Text, _
TxtSenha.Text, ChkAltera.Value, ChkIncluir.Value, ChkConsulta.Value)

If AtualUser = True Then
Erro:
TrataErro
MsgBox "Alteração concluida com sucesso"
Else
MsgBox "Erro na alteração !", vbCritical
End If
Unload Me

End Sub

Private Sub lvBExcluir_Click()
'***==================================================================================
'Aqui eu chamo a variavel que fica responsavel pela exclussao solicitada,

Dim DeleteUsuario As Variant
On Error GoTo Erro

With FrmCadUser
.lvBConsulta.Enabled = True
If .TxtNome.Text = "" Then
MsgBox "Impossível continua, existe campos inválidos !", vbExclamation
.lvBConsulta.SetFocus
Exit Sub
Else

DeleteUsuario = DeleteUser(.TxtReg.Text, .TxtDta.Text, .TxtNome.Text, _
.TxtSenha.Text, .ChkAltera.Value, .ChkIncluir.Value, .ChkIncluir.Value)

If DeleteUsuario = True Then
Erro:
TrataErro
MsgBox "Parabens usuário Excluido Com Sucesso. !", vbExclamation
Else
MsgBox "Erro na excluisão, Antes Consulte Um Registro.", vbCritical
End If
End If
End With
Unload Me

End Sub

Valeu kuroi tudo de bom, meu amigo. (tópico Resolvido) B)

Link to comment
Share on other sites

  • 0

Kuroi, rapaziada, tarde.

Vejam este codico abaixo:

Option Explicit
Global Cnn As ADODB.Connection
Global rs As ADODB.Recordset
Global Fechar As Boolean

Meu sub main:

Private Sub Main()
'============================================================================
'Aqui eu uso um form main no projeto e nele eu trato as variaveis de conecxao com o banco de dados.
'============================================================================

Dim ConectaAccess As String

Load MDISysCheirodaPaz
MDISysCheirodaPaz.Show
DoEvents

Set Cnn = New ADODB.Connection

Set Cnn = CreateObject("ADODB.Connection")
ConectaAccess = "Driver={Microsoft Access Driver (*.mdb)};Dbq=\\10.1.1.2\C\BdCheirodaPaz\BancoCheirodaPaz.mdb;Uid=Administrador; Pwd=ferraz"

Cnn.Open ConectaAccess

Set rs = New ADODB.Recordset
Cnn.CursorLocation = adUseServer 'mudei aqui para adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic

Como eu concluir o tópico afirmando que estava tudo funcionando bem e fiquei super feliz com isso. O meu cliente reclamou que os relatorios não estava funcionando, ai fui verificar e realmente não esta, o que fiz de imediato, criei uma fonte de dados ODBC e fiz um set em todos os reports para o ODBC, copilei o sistema e não alterei nada na minha conexao acima.

Voltei no cliente instalei o crystal e apontei o set para o ODBC fiz a atualizacao, os relatorios funcionaram na boa, porem o sistema voltou a apresentar a velha mensagem de erro (a operacao necessita de uma consulta atualizavel -2147217900) quando eu tento atualizar ou inserir algo no banco.

Alguma dica do que pode ser ?

Fico grato a todos desde já.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...