这是以前帖子上有的,我给抄过来了,先谢谢那位:)
设置ODBC数据源的方法先在窗体中添加三个textbox控件,名分别是txtPathToData、txtDsnName、txtDriver,一个CommonDialog1,一个控纽名为cmdBrowse,一个控纽名cmdAddDSN。
下面是代码,考过去即可Private Declare Function SQLConfigDataSource Lib "odbccp32.dll" ( _
ByVal hwndParent As Long, _
ByVal fRequest As Integer, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As LongPrivate Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As LongPrivate Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
ByRef lpType As Long, _
ByVal lpData As String, _
ByRef lpcbData As Long) As LongPrivate Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal Reserved As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long Private Const REG_BINARY& = 3 ' Free form binary
Private Const REG_SZ& = 1 ' Unicode null terminated string
Private Const HKEY_CURRENT_USER& = &H80000001
Private Const HKEY_LOCAL_MACHINE& = &H80000002
Private Const KEY_ALL_ACCESS& = &H2003F'系统DSN特性仅在 ODBC 2.5以上环境下有效
Public Enum ACTION
ODBC_ADD_DSN& = 1 ' 添加一个用户数据源(DSN)
ODBC_CONFIGURE_DSN& = 2 ' 配置已存在的用户数据源DSN
ODBC_REMOVE_DSN& = 3 ' 删除一个指定的数据源
ODBC_ADD_SYS_DSN& = 4 ' 添加一个系统数据源(DSN)
ODBC_CONFIG_SYS_DSN& = 5 ' 修改一个已存在的系统数据源(DSN)
ODBC_REMOVE_SYS_DSN = 6 ' 删除指定的已存在的系统数据源(DSN)
ODBC_REMOVE_DEFAULT_DSN& = 7 ' 删除缺省的数据源
End EnumPublic Sub ConfigureSystemDSN(ByVal sDSN As String, _
ByVal sDriver As String, _
ByVal sDBFile As String, _
ByVal eAction As ACTION _
) Dim sAttributes As String
Dim sDBQ As String
Dim sRegValue As String
Dim lRetVal As Long
Dim hKey As Long
Dim lValueType As Long
Dim sMessage As String If RegOpenKeyEx(HKEY_CURRENT_USER, _
"Software\ODBC\ODBC.INI\" & sDSN, _
0, _
KEY_ALL_ACCESS, hKey _
) = 0 Then sRegValue = String(1024, 0) If RegQueryValueEx(hKey, _
"DBQ", _
0, _
lValueType, _
sRegValue, _
Len(sRegValue) _
) = 0 Then If lValueType = REG_SZ Then
sDBQ = Left(sRegValue, InStr(sRegValue, vbNullChar) - 1)
End If
End If RegCloseKey hKey
End If If (sDBQ = "" And (eAction = ODBC_ADD_DSN Or eAction = ODBC_ADD_SYS_DSN)) _
Or _
(sDBQ <> "" And (eAction = ODBC_REMOVE_DSN Or eAction = ODBC_CONFIGURE_DSN)) Then If Len(Dir(sDBFile)) = 0 Then
MsgBox "数据库文件不存在!", vbOKOnly + vbCritical, "错误,无法继续"
Else
sAttributes = "DSN=" & sDSN & vbNullChar & "DBQ=" & sDBFile & vbNullChar
lRetVal = SQLConfigDataSource(0&, eAction, sDriver, sAttributes)
MsgBox "完成!"
End If
Else
If eAction = ODBC_ADD_DSN Or _
eAction = ODBC_ADD_SYS_DSN Then sMessage = " 已经存在!"
Else
sMessage = " 不存在!"
End If MsgBox "DSN: " & txtDsnName.Text & sMessage
End IfEnd Sub
Private Sub cmdAddDSN_Click() ConfigureSystemDSN txtDsnName.Text, txtDriver.Text, txtPathToData, ODBC_ADD_DSNEnd Sub
Private Sub cmdBrowse_Click() With CommonDialog1
.Filter = "*.*"
.ShowOpen txtPathToData = .FileName
End WithEnd Sub
设置ODBC数据源的方法先在窗体中添加三个textbox控件,名分别是txtPathToData、txtDsnName、txtDriver,一个CommonDialog1,一个控纽名为cmdBrowse,一个控纽名cmdAddDSN。
下面是代码,考过去即可Private Declare Function SQLConfigDataSource Lib "odbccp32.dll" ( _
ByVal hwndParent As Long, _
ByVal fRequest As Integer, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As LongPrivate Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As LongPrivate Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
ByRef lpType As Long, _
ByVal lpData As String, _
ByRef lpcbData As Long) As LongPrivate Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal Reserved As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long Private Const REG_BINARY& = 3 ' Free form binary
Private Const REG_SZ& = 1 ' Unicode null terminated string
Private Const HKEY_CURRENT_USER& = &H80000001
Private Const HKEY_LOCAL_MACHINE& = &H80000002
Private Const KEY_ALL_ACCESS& = &H2003F'系统DSN特性仅在 ODBC 2.5以上环境下有效
Public Enum ACTION
ODBC_ADD_DSN& = 1 ' 添加一个用户数据源(DSN)
ODBC_CONFIGURE_DSN& = 2 ' 配置已存在的用户数据源DSN
ODBC_REMOVE_DSN& = 3 ' 删除一个指定的数据源
ODBC_ADD_SYS_DSN& = 4 ' 添加一个系统数据源(DSN)
ODBC_CONFIG_SYS_DSN& = 5 ' 修改一个已存在的系统数据源(DSN)
ODBC_REMOVE_SYS_DSN = 6 ' 删除指定的已存在的系统数据源(DSN)
ODBC_REMOVE_DEFAULT_DSN& = 7 ' 删除缺省的数据源
End EnumPublic Sub ConfigureSystemDSN(ByVal sDSN As String, _
ByVal sDriver As String, _
ByVal sDBFile As String, _
ByVal eAction As ACTION _
) Dim sAttributes As String
Dim sDBQ As String
Dim sRegValue As String
Dim lRetVal As Long
Dim hKey As Long
Dim lValueType As Long
Dim sMessage As String If RegOpenKeyEx(HKEY_CURRENT_USER, _
"Software\ODBC\ODBC.INI\" & sDSN, _
0, _
KEY_ALL_ACCESS, hKey _
) = 0 Then sRegValue = String(1024, 0) If RegQueryValueEx(hKey, _
"DBQ", _
0, _
lValueType, _
sRegValue, _
Len(sRegValue) _
) = 0 Then If lValueType = REG_SZ Then
sDBQ = Left(sRegValue, InStr(sRegValue, vbNullChar) - 1)
End If
End If RegCloseKey hKey
End If If (sDBQ = "" And (eAction = ODBC_ADD_DSN Or eAction = ODBC_ADD_SYS_DSN)) _
Or _
(sDBQ <> "" And (eAction = ODBC_REMOVE_DSN Or eAction = ODBC_CONFIGURE_DSN)) Then If Len(Dir(sDBFile)) = 0 Then
MsgBox "数据库文件不存在!", vbOKOnly + vbCritical, "错误,无法继续"
Else
sAttributes = "DSN=" & sDSN & vbNullChar & "DBQ=" & sDBFile & vbNullChar
lRetVal = SQLConfigDataSource(0&, eAction, sDriver, sAttributes)
MsgBox "完成!"
End If
Else
If eAction = ODBC_ADD_DSN Or _
eAction = ODBC_ADD_SYS_DSN Then sMessage = " 已经存在!"
Else
sMessage = " 不存在!"
End If MsgBox "DSN: " & txtDsnName.Text & sMessage
End IfEnd Sub
Private Sub cmdAddDSN_Click() ConfigureSystemDSN txtDsnName.Text, txtDriver.Text, txtPathToData, ODBC_ADD_DSNEnd Sub
Private Sub cmdBrowse_Click() With CommonDialog1
.Filter = "*.*"
.ShowOpen txtPathToData = .FileName
End WithEnd Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货