ID do 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 | Recolher tudo

Sumário

Na versão de 32 bits do Visual Basic 4.0, é possível usar conexões sem DSN, mas como a versão de 16 bits do ODBC não pode lidar com essa sintaxe, não é possível fazer isso na versão de 16 bits do Visual Basic 4.0. É possível emular esse recurso Criando e removendo um nome de fonte de dados (DSN) imediatamente usando a chamada de API de ODBC SQLConfigDataSource dinamicamente.

A seguir está um 16- e exemplo de 32 bits que demonstra essa técnica. O código de 32 bits foi incluído porque essa técnica tem outros usos, conforme descrito abaixo. As técnicas de 32 bits apresentadas neste artigo também se aplicam ao Visual Basic 5.0.

Mais Informações

A capacidade de ODBC de 32 bits usar uma conexão sem DSN tem muitos usos:
  1. Simplicidade do cliente. O usuário não precisa se preocupar sobre como configurar um DSN, nomeando-corretamente, configurando opções etc.. Tudo isso pode ser feito dinamicamente pelo aplicativo.
  2. Ele resolve muitos mecanismo JET conexão e cache de problemas de seqüência de conexão.
  3. Aumenta a flexibilidade do aplicativo.
Todos esses usos podem ser obtidos no ODBC de 16 bits, criando e excluindo um DSN de forma dinâmica. Esse método também é útil para gerenciamento de DSN simples. O código pode ser usado para automaticamente criar, modificar ou excluir um DSN a qualquer momento. Visual Basic fornecem a capacidade de criar um DSN usando 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 projeto.
  2. Na guia Avançado da caixa de diálogo Opções no menu Ferramentas, defina um argumento de compilação condicional chamada Win32 igual a 1 se usando o Visual Basic 4.0 de 32 bits ou 0 se usando o Visual Basic 4.0 16 bits.
  3. Adicione dois CommandButtons ao formulário padrão.
  4. Adicione o seguinte código para a declaração geral:
          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. Adicionar o seguinte código ao evento Click 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. Adicionar o seguinte código ao evento Click do 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 projeto.
  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 Programmer Reference e SDK Guide
Microsoft Press 1993
ISBN 1-55615-658-8

(c) 1997 Microsoft Corporation, todos os direitos reservados. Contribuições por 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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/ )