建一个模块
Option ExplicitPublic Declare Function RegCloseKey Lib "advapi32" Alias "RegCloseKeyA" (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Public Declare Function RegSetValueNumEx Lib "advapi32" Alias "RegSetValueNumExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPublic Const HKEY_LOCAL_MACHINE = &H80000002
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Const REG_SZ = 1
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4
Public WinSysPath As StringPublic Function GetWinSysPath() As String
Dim n As Long
Dim TmpStr As String
TmpStr = Space(255)
n = GetSystemDirectory(TmpStr, 255)
TmpStr = Trim(TmpStr)
GetWinSysPath = Left(TmpStr, Len(TmpStr) - 1)
End Function建一个类(ACCESS)Public Function Create(ODBCName As String, DatabasePath As String) As Long
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
'获得WINDOWS系统目录
WinSysPath = GetWinSysPath
Dim DriveStr As String
DriveStr = WinSysPath & "\odbcjt32.dll"
n = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\" & ODBCName, regTmp)
n = RegSetValueEx(regTmp, "DBQ", 0, REG_SZ, DatabasePath, Len(DatabasePath))
n = RegSetValueEx(regTmp, "Driver", 0, REG_SZ, DriveStr, Len(DriveStr))
n = RegSetValueNumEx(regTmp, "DriverID", 0, REG_DWORD, 25, 4)
n = RegSetValueEx(regTmp, "FIL", 0, REG_SZ, "MS Access;", 10)
n = RegSetValueEx(regTmp, "UID", 0, REG_SZ, "", 0)
End FunctionPublic Function Delete(ODBCName As String) As Long
On Error GoTo Err_Handle
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
n = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\", regTmp)
n = RegDeleteKey(regTmp, ODBCName)
Delete = 0
Exit Function
Err_Handle:
Delete = -1
End Function
第二个类(SQLSERVER)
Public Function Create(ODBCName As String, Server As String, User As String, Optional Database As String) As Long
On Error GoTo Err_Handle
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
'获得WINDOWS系统目录
WinSysPath = GetWinSysPath
Dim DriveStr As String
DriveStr = WinSysPath & "\SQLSRV32.dll"
n = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\" & ODBCName, regTmp)
n = RegSetValueEx(regTmp, "Server", 0, REG_SZ, Server, Len(Server))
n = RegSetValueEx(regTmp, "Driver", 0, REG_SZ, DriveStr, Len(DriveStr))
n = RegSetValueEx(regTmp, "LastUser", 0, REG_SZ, User, Len(User))
If Database <> "" Then
n = RegSetValueEx(regTmp, "Database", 0, REG_SZ, Database, Len(Database))
End If
Create = 0
Exit Function
Err_Handle:
Create = -1
End FunctionPublic Function Delete(ODBCName As String) As Long
On Error GoTo Err_Handle
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
n = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\", regTmp)
n = RegDeleteKey(regTmp, ODBCName)
Delete = 0
Exit Function
Err_Handle:
Delete = -1
End Function
Option ExplicitPublic Declare Function RegCloseKey Lib "advapi32" Alias "RegCloseKeyA" (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Public Declare Function RegSetValueNumEx Lib "advapi32" Alias "RegSetValueNumExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPublic Const HKEY_LOCAL_MACHINE = &H80000002
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Const REG_SZ = 1
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4
Public WinSysPath As StringPublic Function GetWinSysPath() As String
Dim n As Long
Dim TmpStr As String
TmpStr = Space(255)
n = GetSystemDirectory(TmpStr, 255)
TmpStr = Trim(TmpStr)
GetWinSysPath = Left(TmpStr, Len(TmpStr) - 1)
End Function建一个类(ACCESS)Public Function Create(ODBCName As String, DatabasePath As String) As Long
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
'获得WINDOWS系统目录
WinSysPath = GetWinSysPath
Dim DriveStr As String
DriveStr = WinSysPath & "\odbcjt32.dll"
n = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\" & ODBCName, regTmp)
n = RegSetValueEx(regTmp, "DBQ", 0, REG_SZ, DatabasePath, Len(DatabasePath))
n = RegSetValueEx(regTmp, "Driver", 0, REG_SZ, DriveStr, Len(DriveStr))
n = RegSetValueNumEx(regTmp, "DriverID", 0, REG_DWORD, 25, 4)
n = RegSetValueEx(regTmp, "FIL", 0, REG_SZ, "MS Access;", 10)
n = RegSetValueEx(regTmp, "UID", 0, REG_SZ, "", 0)
End FunctionPublic Function Delete(ODBCName As String) As Long
On Error GoTo Err_Handle
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
n = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\", regTmp)
n = RegDeleteKey(regTmp, ODBCName)
Delete = 0
Exit Function
Err_Handle:
Delete = -1
End Function
第二个类(SQLSERVER)
Public Function Create(ODBCName As String, Server As String, User As String, Optional Database As String) As Long
On Error GoTo Err_Handle
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
'获得WINDOWS系统目录
WinSysPath = GetWinSysPath
Dim DriveStr As String
DriveStr = WinSysPath & "\SQLSRV32.dll"
n = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\" & ODBCName, regTmp)
n = RegSetValueEx(regTmp, "Server", 0, REG_SZ, Server, Len(Server))
n = RegSetValueEx(regTmp, "Driver", 0, REG_SZ, DriveStr, Len(DriveStr))
n = RegSetValueEx(regTmp, "LastUser", 0, REG_SZ, User, Len(User))
If Database <> "" Then
n = RegSetValueEx(regTmp, "Database", 0, REG_SZ, Database, Len(Database))
End If
Create = 0
Exit Function
Err_Handle:
Create = -1
End FunctionPublic Function Delete(ODBCName As String) As Long
On Error GoTo Err_Handle
Dim regTmp As Long '新建的注册表值
Dim n As Long '对注册表操作返回值
n = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBC.INI\", regTmp)
n = RegDeleteKey(regTmp, ODBCName)
Delete = 0
Exit Function
Err_Handle:
Delete = -1
End Function
我在当地使用一个mysql数据库,是不是只要在MS Access改成mysql
n = RegSetValueEx(regTmp, "FIL", 0, REG_SZ, "MS Access;", 10)
问题二、
新建注册表的值regTmp变量是何意思,我在ODBC里设置的值赋给哪个变量。
如果别人机子上没有mysql运行库,我如何把它带过去,并随这个软件一起安装到别人的机子里?