Artigo: 171146 - Última revisão: quinta-feira, 15 de Julho de 2004 - Revisão: 3.3

Como criar e remover um DSN no Visual Basic

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Na versão de 32 bits do Visual Basic 4.0, é possível utilizar ligações de DSN, mas uma vez que a versão de 16 bits do ODBC não pode processar esta sintaxe, não é possível efectuar este procedimento na versão de 16 bits do Visual Basic 4.0. É possível emular esta capacidade criando e remover um nome de origem de dados (DSN) a compor uma mensagem utilizando a chamada de API de ODBC SQLConfigDataSource dinamicamente.

Segue-se um 16- e 32 bits exemplo que demonstra esta técnica. O código de 32 bits foi incluído uma vez que esta técnica tem outras utilizações, conforme descrito abaixo. As técnicas de 32 bits apresentadas neste artigo também se aplicam ao Visual Basic 5.0.

Mais Informação

A capacidade ODBC de 32 bits para utilizar uma ligação sem DSN tem várias utilizações:
  1. Simplicidade do cliente. O utilizador não é necessário preocupar em configurar um DSN de nomenclatura correctamente, configurar opções, etc.. Tudo que isto pode ser feito dinamicamente pela aplicação.
  2. Este procedimento resolve muitos ligação do motor JET e cadeia cache problemas de ligação.
  3. Aumenta a flexibilidade da aplicação.
Todas estas utilizações podem ser realizadas no ODBC de 16 bits, criar e eliminando um DSN ao compor uma mensagem. Este método também é útil para gestão de DSN simples. O código poderia ser utilizado para criar automaticamente, modificar ou eliminar um DSN em qualquer altura. Visual Basic fornecer a capacidade de criar um DSN utilizando o método DBEngine.RegisterDatabase(), mas a API fornece maior funcionalidade e a capacidade de modificar e remover um DSN.

Exemplo passo a passo

  1. Inicie um novo projecto.
  2. No separador Avançadas da caixa de diálogo Opções no menu Ferramentas, defina um argumento de compilação condicional denominado Win32 igual a 1 se utilizar o Visual Basic 4.0 32-bit ou 0 se utilizar o Visual Basic 4.0 16-bit.
  3. Adicione dois CommandButtons ao formulário predefinido.
  4. Adicione o seguinte código ao General Declarations:
          Option Explicit
    
          'Constant Declaration
          Private Const ODBC_ADD_DSN = 1        ' Add data source
          Private Const ODBC_CONFIG_DSN = 2     ' Configure (edit) data source
          Private Const ODBC_REMOVE_DSN = 3     ' Remove data source
          Private Const vbAPINull As Long = 0&  ' NULL Pointer
    
          'Function Declare
          #If WIN32 Then
    
              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
          #Else
              Private Declare Function SQLConfigDataSource Lib "ODBCINST.DLL" _
              (ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal _
              lpszDriver As String, ByVal lpszAttributes As String) As Integer
          #End If
    					
  5. Adicione o seguinte código para o evento clicar de Command1:
          #If WIN32 Then
              Dim intRet As Long
          #Else
              Dim intRet As Integer
          #End If
          Dim strDriver As String
          Dim strAttributes As String
    
          'Set the driver to SQL Server because it is most common.
          strDriver = "SQL Server"
          'Set the attributes delimited by null.
          'See driver documentation for a complete
          'list of supported attributes.
          strAttributes = "SERVER=SomeServer" & Chr$(0)
          strAttributes = strAttributes & "DESCRIPTION=Temp DSN" & Chr$(0)
          strAttributes = strAttributes & "DSN=DSN_TEMP" & Chr$(0)
          strAttributes = strAttributes & "DATABASE=pubs" & Chr$(0)
          'To show dialog, use Form1.Hwnd instead of vbAPINull.
          intRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_DSN, _
          strDriver, strAttributes)
          If intRet Then
              MsgBox "DSN Created"
          Else
              MsgBox "Create Failed"
          End If
    					
  6. Adicione o seguinte código para o evento clicar de Command2:
          #If WIN32 Then
              Dim intRet As Long
          #Else
              Dim intRet As Integer
          #End If
          Dim strDriver As String
          Dim strAttributes As String
    
          'Set the driver to SQL Server because most common.
          strDriver = "SQL Server"
          'Set the attributes delimited by null.
          'See driver documentation for a complete list of attributes.
          strAttributes = "DSN=DSN_TEMP" & Chr$(0)
          'To show dialog, use Form1.Hwnd instead of vbAPINull.
          intRet = SQLConfigDataSource(vbAPINull, ODBC_REMOVE_DSN, _
          strDriver, strAttributes)
          If intRet Then
              MsgBox "DSN Deleted"
          Else
              MsgBox "Delete Failed"
          End If
    					
  7. Execute o projecto.
  8. Clique em Command1 para adicionar um DSN chamado DSN_TEMP.
  9. Clique em Command2 para remover o DSN chamado DSN_TEMP.

Referências

ODBC 2.0 SDK manual e referência para programadores
A Microsoft Press 1993
ISBN 1-55615-658-8

(c) 1997 Microsoft Corporation, todos os direitos reservados. Contribuições de Troy Cambra, Microsoft Corporation

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
Palavras-chave: 
kbmt kbhowto KB171146 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 171146  (http://support.microsoft.com/kb/171146/en-us/ )