Newsgroup: it.comp.lang.visual-basic
Titolo: [?] - Creare un ODBC al volo

Ciao a tutti, la mia domanda č questa:
    E' possibile verificare l'esistenza di una connessione ODBC e nel caso
none sista crearla al volo ?
Ciao, Rocco

none sista crearla al volo ?
Prova a prendere spunto da qui:
HOWTO: Programmatically Create a DSN for SQL Server with VB 
Q184608
-- 
hth, hal

Copia incolla il codice qui sotto nel form: form1.frm
VERSION 5.00
Begin VB.Form Form1
   BorderStyle     =   1  'Fixed Single
   Caption         =   "Creazione di un DSN"
   ClientHeight    =   3825
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   4905
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   3825
   ScaleWidth      =   4905
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton PulsanteOK
      Caption         =   "OK"
      Height          =   375
      Left            =   2520
      TabIndex        =   18
      Top             =   3360
      Width           =   2175
   End
   Begin VB.CheckBox WizardCheck
      Caption         =   "Con interfaccia guidata"
      Height          =   315
      Left            =   120
      TabIndex        =   17
      Top             =   3420
      Width           =   2055
   End
   Begin VB.Frame ParametriFrame
      Caption         =   "Parametri DSN"
      Height          =   2775
      Left            =   120
      TabIndex        =   2
      Top             =   480
      Width           =   4695
      Begin VB.TextBox NomeDriver
         Height          =   285
         Left            =   1920
         TabIndex        =   4
         Top             =   240
         Width           =   2655
      End
      Begin VB.OptionButton TipoDSN
         Caption         =   "DSN di sistema"
         Height          =   315
         Index           =   1
         Left            =   1920
         TabIndex        =   16
         Top             =   2400
         Width           =   1575
      End
      Begin VB.OptionButton TipoDSN
         Caption         =   "DSN utente"
         Height          =   315
         Index           =   0
         Left            =   120
         TabIndex        =   15
         Top             =   2400
         Value           =   -1  'True
         Width           =   1575
      End
      Begin VB.TextBox DatabasePred
         Height          =   285
         Left            =   1920
         TabIndex        =   14
         Top             =   2040
         Width           =   2655
      End
      Begin VB.TextBox Password
         Height          =   285
         Left            =   1920
         TabIndex        =   12
         Top             =   1680
         Width           =   2655
      End
      Begin VB.TextBox Utente
         Height          =   285
         Left            =   1920
         TabIndex        =   10
         Top             =   1320
         Width           =   2655
      End
      Begin VB.TextBox Descrizione
         Height          =   285
         Left            =   1920
         TabIndex        =   8
         Top             =   960
         Width           =   2655
      End
      Begin VB.TextBox PathDB
         Height          =   285
         Left            =   1920
         TabIndex        =   6
         Top             =   600
         Width           =   2655
      End
      Begin VB.Label NomeDriverLabel
         AutoSize        =   -1  'True
         Caption         =   "Nome del driver:"
         Height          =   195
         Left            =   120
         TabIndex        =   3
         Top             =   300
         Width           =   1155
      End
      Begin VB.Label DatabasePredLabel
         AutoSize        =   -1  'True
         Caption         =   "Database predefinito:"
         Height          =   195
         Left            =   120
         TabIndex        =   13
         Top             =   2100
         Width           =   1515
      End
      Begin VB.Label PasswordLabel
         AutoSize        =   -1  'True
         Caption         =   "Password:"
         Height          =   195
         Left            =   120
         TabIndex        =   11
         Top             =   1740
         Width           =   735
      End
      Begin VB.Label UtenteLabel
         AutoSize        =   -1  'True
         Caption         =   "Nome Utente:"
         Height          =   195
         Left            =   120
         TabIndex        =   9
         Top             =   1380
         Width           =   990
      End
      Begin VB.Label DescrizioneLabel
         AutoSize        =   -1  'True
         Caption         =   "Descrizione:"
         Height          =   195
         Left            =   120
         TabIndex        =   7
         Top             =   1020
         Width           =   870
      End
      Begin VB.Label PathDBLabel
         AutoSize        =   -1  'True
         Caption         =   "Percorso DB:"
         Height          =   195
         Left            =   120
         TabIndex        =   5
         Top             =   660
         Width           =   945
      End
   End
   Begin VB.TextBox NomeDSN
      Height          =   255
      Left            =   2040
      TabIndex        =   1
      Text            =   "NomeDSN"
      Top             =   120
      Width           =   2775
   End
   Begin VB.Label NomeDSNLabel
      AutoSize        =   -1  'True
      Caption         =   "Nome del DSN da creare:"
      Height          =   195
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   1830
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Long, ByVal
fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
Private Declare Function SQLCreateDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Long, ByVal
lpszDSN As String) As Long
Private Const ODBC_ADD_DSN = 1
Private Const ODBC_ADD_SYS_DSN = 4
Private Sub PulsanteOK_Click()
    Dim ODBCSTRING As String
    Dim RISULTATO As Long
    If WizardCheck.Value = vbChecked Then
        ODBCSTRING = NomeDSN.Text
        RISULTATO = SQLCreateDataSource(Me.hWnd, ODBCSTRING)
    Else
        ODBCSTRING = "DSN=" & NomeDSN.Text & vbNullChar
        ODBCSTRING = ODBCSTRING & "DBQ=" & PathDB.Text & vbNullChar
        ODBCSTRING = ODBCSTRING & "DESCRIPTION=" & Descrizione.Text & vbNullChar
        ODBCSTRING = ODBCSTRING & "UID=" & Utente.Text & vbNullChar
        ODBCSTRING = ODBCSTRING & "PWD=" & Password.Text & vbNullChar
        ODBCSTRING = ODBCSTRING & "DATABASE=" & DatabasePred.Text & vbNullChar
        ODBCSTRING = ODBCSTRING & vbNullChar
        If TipoDSN(0).Value = True Then
            RISULTATO = SQLConfigDataSource(ByVal 0&, ODBC_ADD_DSN, NomeDriver.Text, ODBCSTRING)
        Else
            RISULTATO = SQLConfigDataSource(ByVal 0&, ODBC_ADD_SYS_DSN, NomeDriver.Text, ODBCSTRING)
        End If
    End If
    If RISULTATO <> 0 Then
        MsgBox "Creazione DSN riuscita!", vbInformation + vbOKOnly, "Crea DSN"
    Else
        MsgBox "Creazione DSN fallita!", vbCritical + vbOKOnly, "Crea DSN"
    End If
End Sub
Private Sub WizardCheck_Click()
    Dim STATO As Boolean
    STATO = (WizardCheck.Value = vbUnchecked)
    ParametriFrame.Enabled = STATO
    NomeDriverLabel.Enabled = STATO
    NomeDriver.Enabled = STATO
    PathDBLabel.Enabled = STATO
    PathDB.Enabled = STATO
    DescrizioneLabel.Enabled = STATO
    Descrizione.Enabled = STATO
    UtenteLabel.Enabled = STATO
    Utente.Enabled = STATO
    PasswordLabel.Enabled = STATO
    Password.Enabled = STATO
    DatabasePredLabel.Enabled = STATO
    DatabasePred.Enabled = STATO
    TipoDSN(0).Enabled = STATO
    TipoDSN(1).Enabled = STATO
End Sub