1 怎样加速数据库的访问速度?
2 怎么对付数据库中的空字符?
3 怎样打开或关闭CD-ROM?
4 怎样使用VB程序退出Windows?
5 怎样用VB断开与internet的连接?
6 怎样用VB得知系统当前是否处于internet链结状态?
7 放置“透明”的图片
8 设置打印边距
怎样加速数据库的访问速度? 下面的窍门将教会你如何加速数据库的访问速度,当人们要读取一个数据库时往往会这么做: Do while not records.eof combo1.additem records![Full Name] records.movenext loop 经常遇到的问题是每次数据库移动到下一条记录的时候,它必须检查是否到达文件底部,这将使数据的访问速度大打折扣。当你需要在一个巨大的数据库中移动或寻找时,最好是这样做: records.movelast intRecCount=records.RecordCount records.movefirstfor intCounter=1 to intRecCount combo1.additem records![Full Name] records.movenext next intCounter 试试看,你将得到33%的速度提升! 缺省时的数据库字段为空字符(并不是指一个字符串值为“空格”,而是什么也没有),当你读取这些字段的时候把它们赋值给VB的String变量,你就会得到“变量类型不匹配”的错误。最好的解决方法应当是嵌入一串空格和字段连接起来,请看下面的代码: Dim DB As Database Dim RS As Recordset Dim sYear As String Set DB = OpenDatabase("Biblio.mdb") Set RS = DB.OpenRecordset("Authors") sYear = ""
& RS![Year Born] 如果你想通过VB打开或者关闭CD-ROM,你可以向Windows Multimedia DLL发出一条相关的命令请求,但是你必须先声明DLL: 在模块文件中加入以下代码: Declare Function mciSendString Lib "winmm.dll" Alias _"mciSendStringA" (ByVal lpstrCommand As String, ByVal _lpstrReturnString As String, ByVal uReturnLength As Long, _ ByVal hwndCallback As Long) As Long 以下是打开CD-ROM的过程代码: retvalue = mcisendstring("set CDAudio door open", _ returnstring, 127, 0) 关闭CD-ROM用以下代码: retvalue =
mcisendstring("set CDAudio door closed",
_returnstring, 127, 0) Public Const EWX_LOGOFF = 0 Public Const EWX_SHUTDOWN = 1 Public Const EWX_REBOOT = 2 Public Const EWX_FORCE = 4 Declare Function ExitWindowsEx Lib "user32" Alias _ "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved _ As Long) As Long 退出Windows: t& =
ExitWindowsEx(EWX_FORCE OR EWX_REBOOT, 0) 如果你想终止与internet的连接,可以使用断开连接的方法,首先你必须声明以下函数和变量: Declarations Public Const RAS_MAXENTRYNAME As Integer = 256Public Const RAS_MAXDEVICETYPE As Integer = 16 Public Const RAS_MAXDEVICENAME As Integer = 128 Public Const RAS_RASCONNSIZE As Integer = 412Public Const ERROR_SUCCESS = 0& Public Type RasEntryName dwSize As Long szEntryName(RAS_MAXENTRYNAME) As Byte End Type Public Type RasConn dwSize As Long hRasConn As Long szEntryName(RAS_MAXENTRYNAME) As Byte szDeviceType(RAS_MAXDEVICETYPE) As Byte szDeviceName(RAS_MAXDEVICENAME) As Byte End Type Public Declare Function RasEnumConnections Lib _ "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As _ Any, lpcb As Long, lpcConnections As Long) As Long Public Declare Function RasHangUp Lib "rasapi32.dll" Alias _ "RasHangUpA" (ByVal hRasConn As Long) As Long Public gstrISPName As String Public ReturnCode As Long 断开过程: Public Sub HangUp() Dim i As Long Dim lpRasConn(255) As RasConn Dim lpcb As Long Dim lpcConnections As Long Dim hRasConn As Long lpRasConn(0).dwSize = RAS_RASCONNSIZE lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize lpcConnections = 0 ReturnCode = RasEnumConnections(lpRasConn(0), lpcb, _ lpcConnections) If ReturnCode = ERROR_SUCCESS Then For i = 0 To lpcConnections - 1 If Trim(ByteToString(lpRasConn(i).szEntryName)) _ = Trim(gstrISPName) Then hRasConn = lpRasConn(i).hRasConn ReturnCode = RasHangUp(ByVal hRasConn) End If Next i End If End Sub Public Function ByteToString(bytString() As Byte) As String Dim i As Integer ByteToString = "" i = 0 While bytString(i) = 0& ByteToString = ByteToString & Chr(bytString(i)) i = i + 1 Wend End Function 调用断开过程: Call HangUp 对于那些必须和internet链结才能工作的程序来说,知道当前计算机是否处于链结状态是非常有意义的。当Windows系统处于链结状态时,它会在注册表里改动一个键值,下面的例子告诉你如何读取这个键值,并得知系统是否与internet相连。 声明以下函数变量常量: Public Const ERROR_SUCCESS = 0& Public Const APINULL = 0& Public Const HKEY_LOCAL_MACHINE = &H80000002 Public ReturnCode As Long Declare Function RegCloseKey Lib "advapi32.dll" (ByVal _hKey As Long) As LongDeclare Function RegOpenKey Lib "advapi32.dll" Alias _"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As _ String, phkResult As Long) As Long Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _ "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName _ As String, ByVal lpReserved As Long, lpType As Long, _ lpData As Any, lpcbData As Long) As Long 代码: Public Function ActiveConnection() As Boolean Dim hKey As Long Dim lpSubKey As String Dim phkResult As Long Dim lpValueName As String Dim lpReserved As Long Dim lpType As Long Dim lpData As Long Dim lpcbData As Long ActiveConnection = False lpSubKey = "System\CurrentControlSet\Services\RemoteAccess" ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, _ phkResult) If ReturnCode = ERROR_SUCCESS Then hKey = phkResult lpValueName = "Remote Connection" lpReserved = APINULL lpType = APINULL lpData = APINULL lpcbData = APINULL ReturnCode = RegQueryValueEx(hKey, lpValueName, _ lpReserved, lpType, ByVal lpData, lpcbData) lpcbData = Len(lpData) ReturnCode = RegQueryValueEx(hKey, lpValueName, _ lpReserved, lpType, lpData, lpcbData) If ReturnCode = ERROR_SUCCESS Then If lpData = 0 Then ActiveConnection = False Else ActiveConnection = True End If End If RegCloseKey (hKey) End If End Function 下面是使用以上代码的例子: If ActiveConnection = True then Call MsgBox("现在处于链结状态。",vbInformation) Else Call MsgBox("现在处于断开状态。", vbInformation) End If 放置“透明”的图片
设置打印页边距
|