📄 135.htm
字号:
<p>vb设计数据库电子邮件程序</p>
<p></p>
<p></p>
<p> 以下是源代码</p>
<p></p>
<p> 下列数据对于API登录非常有用: </p>
<p></p>
<p></p>
<p>Public Const HKEY_CURRENT_USER = &H80000001 </p>
<p></p>
<p>Public Const ERROR_SUCCESS = 0& </p>
<p></p>
<p>Public Const SYNCHRONIZE = &H100000</p>
<p>Public Const STANDARD_RIGHTS_READ = &H20000</p>
<p>Public Const KEY_QUERY_VALUE = &H1</p>
<p>Public Const KEY_ENUMERATE_SUB_KEYS = &H8</p>
<p>Public Const KEY_NOTIFY = &H10 </p>
<p></p>
<p>Public Const KEY_READ = ((STANDARD_RIGHTS_READ</p>
<p>KEY_QUERY_VALUE Or _</p>
<p>KEY_ENUMERATE_SUB_KEYS Or _</p>
<p>KEY_NOTIFY) And _</p>
<p>(Not SYNCHRONIZE)) </p>
<p></p>
<p>Public Const REG_DWORD = 4 </p>
<p></p>
<p></p>
<p>Public Declare Function RegOpenKeyEx Lib "advapi32.dll" _</p>
<p>Alias "RegOpenKeyExA" _</p>
<p>(ByVal hKey As Long, _</p>
<p>ByVal lpSubKey As String, _</p>
<p>ByVal ulOptions As Long, _</p>
<p>ByVal samDesired As Long, phkResult As Long) As Long </p>
<p></p>
<p>Public Declare Function RegEnumValue Lib "advapi32.dll" _</p>
<p>Alias "RegEnumValueA" _</p>
<p>(ByVal hKey As Long, _</p>
<p>ByVal dwIndex As Long, _</p>
<p>ByVal lpValueName As String, _</p>
<p>lpcbValueName As Long, _</p>
<p>ByVal lpReserved As Long, _</p>
<p>lpType As Long, _</p>
<p>lpData As Any, _</p>
<p>lpcbData As Long) As Long </p>
<p></p>
<p>Public Declare Function RegCloseKey Lib "advapi32.dll" _</p>
<p>(ByVal hKey As Long) As Long </p>
<p></p>
<p>注释:-- The subroutine FillODBCCombo is called when the Properties form is loaded.</p>
<p>注释:-- First the root ODBC key is opened. By iterating through its sub-keys,</p>
<p>注释:-- all of the installed DNS注释:s are found and inserted into the DNS ComboBox. </p>
<p></p>
<p></p>
<p>Public Sub FillODBCCombo()</p>
<p></p>
<p>Dim hKey As Long </p>
<p></p>
<p>Dim dwIndex As Long</p>
<p>Dim lpData As Long</p>
<p>Dim lpcbData As Long</p>
<p></p>
<p>Dim lngResult As Long</p>
<p>Dim strResult As String</p>
<p>Dim lpValueName As String</p>
<p>Dim lpcbValueName As Long</p>
<p></p>
<p>注释:-- 每个ODBC数据源都有一个关键字位于</p>
<p>注释:-- HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources.上</p>
<p>注释:-- 通过查找每个关键字,能够收集到安装在ODBC上的所有数据源 </p>
<p></p>
<p>lngResult = RegOpenKeyEx(HKEY_CURRENT_USER, _</p>
<p>"Software\ODBC\ODBC.INI\ODBC Data Sources", _</p>
<p>0&, _</p>
<p>KEY_READ, _</p>
<p>hKey)</p>
<p>If lngResult <> ERROR_SUCCESS Then</p>
<p>MsgBox "Error opening ODBC registry key."</p>
<p>Exit Sub</p>
<p>End If</p>
<p></p>
<p>dwIndex = 0</p>
<p></p>
<p>注释:-- Add each DNS to the combo</p>
<p>Do</p>
<p>lpcbValueName = 1000</p>
<p>lpcbData = 1000</p>
<p>lpValueName = String(lpcbValueName, 0)</p>
<p></p>
<p></p>
<p>注释:-- The RegEnumValue function allows you to</p>
<p>注释:-- move through the subkeys one at a time</p>
<p>lngResult = RegEnumValue(hKey, _</p>
<p>dwIndex, _</p>
<p>ByVal lpValueName, _</p>
<p>lpcbValueName, _</p>
<p>0&, _</p>
<p>REG_DWORD, _</p>
<p>ByVal lpData, _</p>
<p>lpcbData)</p>
<p>If lngResult = ERROR_SUCCESS Then</p>
<p>strResult = Left(lpValueName, lpcbValueName)</p>
<p>DSNCombo.AddItem strResult</p>
<p>End If</p>
<p>dwIndex = dwIndex + 1</p>
<p>Loop While lngResult = ERROR_SUCCESS</p>
<p></p>
<p>RegCloseKey hKey</p>
<p>End Sub </p>
<p></p>
<p></p>
<p></p>
<p> RDO Tables </p>
<p></p>
<p> 为了进入RDO,我在"Microsoft Remote Data Objects 2.0"上添加了一个reference.这个子程序创立了与数据库的连接,而且为Table ComboBox.命名了每个Table 的</p>
<p></p>
<p> 名称 </p>
<p></p>
<p>Private Sub FillTableCombo() </p>
<p></p>
<p>注释:-- Find all the table names using RDO</p>
<p>On Error GoTo DSNTablesError </p>
<p></p>
<p>Dim myEnviroment As rdoEnvironment</p>
<p>Dim myConnection As rdoConnection </p>
<p></p>
<p>Dim strUID As String</p>
<p>Dim strPWD As String</p>
<p></p>
<p>strUID = PropertyForm.UserNameText</p>
<p>strPWD = PropertyForm.PasswordText</p>
<p></p>
<p>Set myEnviroment = rdoEngine.rdoEnvironments(0) </p>
<p></p>
<p>Set myConnection = myEnviroment.OpenConnection(PropertyForm.DSNCombo.Text, _</p>
<p>Connect:="uid=" & strUID & "; pwd=" & strPWD & ";") </p>
<p></p>
<p>TableCombo.Clear</p>
<p>For Each tb In myConnection.rdoTables</p>
<p>TableCombo.AddItem tb.Name</p>
<p>Next</p>
<p></p>
<p>注释:-- Clear Fields to avoid mismatched data</p>
<p>FieldCombo.Clear</p>
<p></p>
<p>myConnection.Close</p>
<p>myEnviroment.Close</p>
<p></p>
<p>DSNTablesError:</p>
<p>End Sub </p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -