CONEXAO VB6 ACCESS WINDOS7

RIBEIROSA 13/02/2012 15:50:58
#394599
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
MARCELO.TREZE 13/02/2012 17:31:32
#394612
posta sua string de conexão

é uma rede particular, ou o servidor será acessado remotamente?
RIBEIROSA 14/02/2012 08:29:14
#394645
Marcelo,

valeu pela atenção !

é uma rede particular com 25 usuários.

MARCELO.TREZE 14/02/2012 09:18:57
#394653
posta sua string de conexão para analizarmos
RIBEIROSA 14/02/2012 09:26:44
#394655
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
MARCELO.TREZE 14/02/2012 09:40:58
#394658
e como este caminho está escrito

pois deveria ser algo mais ou menos assim:

\
ome do pc\pasta compartilhada
omedobanco.mdb
RIBEIROSA 14/02/2012 09:57:28
#394660

Este é o caminho !

[Ô]\\BCK_SV\Sigecon\BD\Sigecon.mdb[Ô]
MARCELO.TREZE 14/02/2012 10:21:07
#394664
tentou jogar o servidor em outra maquina com windows xp
RIBEIROSA 14/02/2012 10:25:18
#394667
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.
RIBEIROSA 14/02/2012 10:55:48
#394673
Vou me ausentar por dois dias !
RIBEIROSA 14/03/2012 09:07:01
#397121
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 !
Tópico encerrado , respostas não são mais permitidas