Ir para conteúdo
Fórum Script Brasil
  • 0

Criar DSN via VBA


May_C

Pergunta

Ei gente,

Então, o tendo dificuldade de criar um DSN via código. O código é:

'################################################# API para criar DSN

Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal _

hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, _

ByVal lpszAttributes As String) As Long

Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" _

(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _

ByVal samDesired As Long, ByRef phkResult As Long) As Long

Const REG_SZ = 1

Const KEY_ALL_ACCESS = &H2003F

Const HKEY_CURRENT_USER = &H80000001

Const HKEY_LOCAL_MACHINE = &H80000002

Const ODBC_ADD_DSN = 1 '4 ' cria o DSN

Const ODBC_REMOVE_DSN = 3 '6 ' excluir o DSN

Private Const SQL_SUCCESS = 0

Private Const SQL_SUCCESS_WITH_INFO = 1

Private Const SQL_NO_DATA = 100

Private Const SQL_ERROR = (-1)

Private Const SQL_MAX_MESSAGE_LENGTH = 512

Sub Chamada()

Dim ret

'chamada da função

Call CriaDSN("Teste2", "192.168.11.95", "SQL Server", "eet", "eet")

End Sub

'#################################################

Sub CriaDSN(pDSN As String, pServer As String, pDataBase As String, pUsuario As String, pSenha As String)

Dim strAttributes As String

Dim sDBQ As String

Dim lngRet As Long

Dim hKey As Long

Dim regValue As String

Dim valueType As Long

' consulta o registro para verificar se o DSN já esta instalado

' abre a chave

If RegOpenKeyEx(HKEY_CURRENT_USER, "Software\ODBC\ODBC.INI\" & pDSN, 0, KEY_ALL_ACCESS, hKey) = 0 Then

RegCloseKey hKey

Else

strAttributes = "SERVER=" & pServer & Chr$(0)

strAttributes = strAttributes & "DSN=" & pDSN & Chr$(0)

strAttributes = strAttributes & "DATABASE=" & pDataBase & Chr$(0)

'strAttributes = strAttributes & "UserName=" & pUsuario & Chr$(0)

strAttributes = strAttributes & "UID=" & pUsuario & Chr$(0)

strAttributes = strAttributes & "PWD=" & pSenha & Chr$(0)

'strAttributes = "UID = eet" & Chr$(0)

strAttributes = strAttributes & "WSID = PIMS01" & Chr$(0)

'strAttributes = strAttributes & "APP=Microsoft Data Access Components" & Chr$(0)

'strAttributes = strAttributes & "SERVER =192.168.11.95" & Chr$(0)

lngRet = SQLConfigDataSource(0&, ODBC_ADD_DSN, "SQL Server", strAttributes)

If lngRet <> 1 Then

MsgBox "Falha ao Criar Conexão com o Banco de Dados"

Else

MsgBox "Conexão com o Banco de Dados Concluida"

End If

End If

End Sub

O comando SQLConfigDataSource é o responsável pela criação do DSN, mas toda vez que rodo o programa ele retorna 0, indicando que o DSN não foi criado, alguém sabe como resolver?

Grata,

May

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...