CONEXAO VB6 ACCESS WINDOS7
Boa tarde a todos,
Tenho uma aplicação em VB6 SP6, onde o BD esta em uma pasta protegida no Windows 7 (servidor provisório).
Não estou conseguindo fazer login no BD, pois preciso primeiro me conectar com o Windows 7.
Alguém poderia ajudar ?
Wagner
Tenho uma aplicação em VB6 SP6, onde o BD esta em uma pasta protegida no Windows 7 (servidor provisório).
Não estou conseguindo fazer login no BD, pois preciso primeiro me conectar com o Windows 7.
Alguém poderia ajudar ?
Wagner
posta sua string de conexão
é uma rede particular, ou o servidor será acessado remotamente?
é uma rede particular, ou o servidor será acessado remotamente?
Marcelo,
valeu pela atenção !
é uma rede particular com 25 usuários.
valeu pela atenção !
é uma rede particular com 25 usuários.
posta sua string de conexão para analizarmos
Marcelo,
Antes da conexão, eu crio um [Ô]DSN[Ô] temporário na máquina do usuário.
Usando a função abaixo.
Public Function fCria_Del_DSN_Access(ByVal lAction As Integer)
Err.Clear
On Error GoTo Erro:
Dim sAttributes As String
Dim sDBQ As String
Dim lngRet As Long
Dim hKey As Long
Dim regValue As String
Dim valueType As Long
[ô]hwndParent - indica o manipulador da janela pai e pode ser nulo (0& no VB)
[ô]fRequest - indica a ação ser realizada : 1 para incluir e 2 para configurar e 3 para excluir o DSN
[ô]lpszDriver - especifica o driver a ser usado . Para criar um DSN para um bd Access usamos : Microsoft Access Driver (*.mdb)[Ô]
[ô]lpszAttributes - contém muita informação sobre o DSN como o nome do DSN, o nome do arquivo de banco de dados , o nome do usuário , etc.
[ô]verifica se o DSN já existe
If RegOpenKeyEx(HKEY_CURRENT_USER, [Ô]Software\ODBC\ODBC.INI\[Ô] & gstDNS, 0, KEY_ALL_ACCESS, hKey) = 0 Then
[ô]zero significa sem errosr => Retorna o valor de chave [Ô]DBQ[Ô]
regValue = String$(1024, 0)
[ô]Aloca espaço para a variável
If RegQueryValueEx(hKey, [Ô]DBQ[Ô], 0, valueType, regValue, Len(regValue)) = 0 Then
[ô] zero signifia sem erros, podemo retornar o valor
If valueType = REG_SZ Then
sDBQ = Left$(regValue, InStr(regValue, vbNullChar) - 1)
End If
End If
RegCloseKey hKey
End If
[ô]Cria/Remove DSN
If (sDBQ = [Ô][Ô] And lAction = ODBC_ADD_DSN) Or (sDBQ <> [Ô][Ô] And lAction = ODBC_REMOVE_DSN) Then
[ô] verifica se BD existe
If Len(Dir$(gstPathBD)) = 0 Then
Exit Function
End If
sAttributes = [Ô]DSN=[Ô] & gstDNS & vbNullChar & [Ô]DBQ=[Ô] & gstPathBD & vbNullChar & [Ô]Uid=wrs[Ô] & vbNullChar & [Ô]Pwd=WRS1955wrs[Ô] & vbNullChar
lngRet = SQLConfigDataSource(0&, lAction, gstDrviver, sAttributes)
End If
Erro:
If Err <> 0 Then
MsgBox [Ô]Código: [Ô] & Err & Chr(10) & [Ô]Descrição: [Ô] & Err.Description, vbCritical, [Ô]Engespro - Erro[Ô]
Exit Function
End If
End Function
O erro ocorre no trecho abaixo.
[ô] verifica se BD existe
If Len(Dir$(gstPathBD)) = 0 Then
Exit Function
End If
[Ô]bad file name[Ô], ou seja a variável {gstPathBD) que contém o caminho do [Ô]BD[Ô],
não consegue ser executada, pois esbarra na necessidade de uma conexão com a pasta que contém o [Ô]BD[Ô], que esta protegida com senha.
Tudo esta funcionando bem no SQL Server 2008.
A dificuldade esta com o Access, que será usado para desenvolvimento devido a facilidade.
Não sei se fui claro.
Wagner
Antes da conexão, eu crio um [Ô]DSN[Ô] temporário na máquina do usuário.
Usando a função abaixo.
Public Function fCria_Del_DSN_Access(ByVal lAction As Integer)
Err.Clear
On Error GoTo Erro:
Dim sAttributes As String
Dim sDBQ As String
Dim lngRet As Long
Dim hKey As Long
Dim regValue As String
Dim valueType As Long
[ô]hwndParent - indica o manipulador da janela pai e pode ser nulo (0& no VB)
[ô]fRequest - indica a ação ser realizada : 1 para incluir e 2 para configurar e 3 para excluir o DSN
[ô]lpszDriver - especifica o driver a ser usado . Para criar um DSN para um bd Access usamos : Microsoft Access Driver (*.mdb)[Ô]
[ô]lpszAttributes - contém muita informação sobre o DSN como o nome do DSN, o nome do arquivo de banco de dados , o nome do usuário , etc.
[ô]verifica se o DSN já existe
If RegOpenKeyEx(HKEY_CURRENT_USER, [Ô]Software\ODBC\ODBC.INI\[Ô] & gstDNS, 0, KEY_ALL_ACCESS, hKey) = 0 Then
[ô]zero significa sem errosr => Retorna o valor de chave [Ô]DBQ[Ô]
regValue = String$(1024, 0)
[ô]Aloca espaço para a variável
If RegQueryValueEx(hKey, [Ô]DBQ[Ô], 0, valueType, regValue, Len(regValue)) = 0 Then
[ô] zero signifia sem erros, podemo retornar o valor
If valueType = REG_SZ Then
sDBQ = Left$(regValue, InStr(regValue, vbNullChar) - 1)
End If
End If
RegCloseKey hKey
End If
[ô]Cria/Remove DSN
If (sDBQ = [Ô][Ô] And lAction = ODBC_ADD_DSN) Or (sDBQ <> [Ô][Ô] And lAction = ODBC_REMOVE_DSN) Then
[ô] verifica se BD existe
If Len(Dir$(gstPathBD)) = 0 Then
Exit Function
End If
sAttributes = [Ô]DSN=[Ô] & gstDNS & vbNullChar & [Ô]DBQ=[Ô] & gstPathBD & vbNullChar & [Ô]Uid=wrs[Ô] & vbNullChar & [Ô]Pwd=WRS1955wrs[Ô] & vbNullChar
lngRet = SQLConfigDataSource(0&, lAction, gstDrviver, sAttributes)
End If
Erro:
If Err <> 0 Then
MsgBox [Ô]Código: [Ô] & Err & Chr(10) & [Ô]Descrição: [Ô] & Err.Description, vbCritical, [Ô]Engespro - Erro[Ô]
Exit Function
End If
End Function
O erro ocorre no trecho abaixo.
[ô] verifica se BD existe
If Len(Dir$(gstPathBD)) = 0 Then
Exit Function
End If
[Ô]bad file name[Ô], ou seja a variável {gstPathBD) que contém o caminho do [Ô]BD[Ô],
não consegue ser executada, pois esbarra na necessidade de uma conexão com a pasta que contém o [Ô]BD[Ô], que esta protegida com senha.
Tudo esta funcionando bem no SQL Server 2008.
A dificuldade esta com o Access, que será usado para desenvolvimento devido a facilidade.
Não sei se fui claro.
Wagner
e como este caminho está escrito
pois deveria ser algo mais ou menos assim:
pois deveria ser algo mais ou menos assim:
\
ome do pc\pasta compartilhada
omedobanco.mdb
Este é o caminho !
[Ô]\\BCK_SV\Sigecon\BD\Sigecon.mdb[Ô]
tentou jogar o servidor em outra maquina com windows xp
Não tenho máquinas com XP !
Tenho um servidor de produção com windows server 2008, e estou tentando fazer esta máquina com windows 7 para desenvolvimento.
Tenho um servidor de produção com windows server 2008, e estou tentando fazer esta máquina com windows 7 para desenvolvimento.
Vou me ausentar por dois dias !
Bom dia a todos,
Havia esquecido deste tópico !
Resolvi usando uma função que encontrei no site da Microsoft.
Fiz algumas mudanças !
Public Function Connection(compartilhamento As String, Optional conectar As Boolean = True, Optional id As String = vbNullString, Optional pwd As String = vbNullString) As Boolean
Dim ErrInfo As Long
Disconnection
Connection = False
NetR.dwScope = RESOURCE_GLOBALNET
NetR.dwType = RESOURCETYPE_DISK
NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
NetR.lpLocalName = [Ô]W:[Ô]
NetR.lpRemoteName = compartilhamento
ErrInfo = WNetAddConnection2(NetR, pwd, id, CONNECT_UPDATE_PROFILE)
If ErrInfo <> 0 Then
MsgBox [Ô]Não foi possivel conectar-se ao servidor... ! [Ô], vbInformation
Exit Function
Else
Connection = True
End If
If ErrInfo <> 0 Then
MsgBox [Ô]Código: [Ô] & ErrInfo & vbCritical, [Ô]Engespro - Erro[Ô]
Exit Function
End If
End Function
Valeu ao Marcelo-treze pela Atenção !
Havia esquecido deste tópico !
Resolvi usando uma função que encontrei no site da Microsoft.
Fiz algumas mudanças !
Public Function Connection(compartilhamento As String, Optional conectar As Boolean = True, Optional id As String = vbNullString, Optional pwd As String = vbNullString) As Boolean
Dim ErrInfo As Long
Disconnection
Connection = False
NetR.dwScope = RESOURCE_GLOBALNET
NetR.dwType = RESOURCETYPE_DISK
NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
NetR.lpLocalName = [Ô]W:[Ô]
NetR.lpRemoteName = compartilhamento
ErrInfo = WNetAddConnection2(NetR, pwd, id, CONNECT_UPDATE_PROFILE)
If ErrInfo <> 0 Then
MsgBox [Ô]Não foi possivel conectar-se ao servidor... ! [Ô], vbInformation
Exit Function
Else
Connection = True
End If
If ErrInfo <> 0 Then
MsgBox [Ô]Código: [Ô] & ErrInfo & vbCritical, [Ô]Engespro - Erro[Ô]
Exit Function
End If
End Function
Valeu ao Marcelo-treze pela Atenção !
Tópico encerrado , respostas não são mais permitidas