標(biāo)準(zhǔn)模塊就是指的模塊。
成都創(chuàng)新互聯(lián)主營(yíng)新賓網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),新賓h5微信小程序開(kāi)發(fā)搭建,新賓網(wǎng)站營(yíng)銷(xiāo)推廣歡迎新賓等地區(qū)企業(yè)咨詢(xún)
因?yàn)閺V義上窗體、類(lèi)、用戶(hù)定義控件都叫模塊。故用“標(biāo)準(zhǔn)模塊”來(lái)指代“模塊”。
======================================================
菜單:“工程”=“添加模塊”=“打開(kāi)”
這樣就在工程里添加了一個(gè)標(biāo)準(zhǔn)模塊。這時(shí)按“保存”按鈕就可以保存為bas文件。
使用ADO控件可以方便的在VB6中訪問(wèn)ODBC數(shù)據(jù)庫(kù),但是通過(guò)直接放置ADODS控件來(lái)獲得ADO的數(shù)據(jù)連接比較麻煩,我們可以在VB工程中創(chuàng)建一個(gè)公共數(shù)據(jù)模塊,將ADO控件的初始化、建立連接、關(guān)閉連接等操作都寫(xiě)到函數(shù)中,這樣就可以在工程的其他模塊中共享調(diào)用這個(gè)ADO連接。
一次完整的ADO調(diào)用操作分為如下幾個(gè)步驟:
打開(kāi)ADO到數(shù)據(jù)庫(kù)的連接,初始化ADO RECORDSET集。
通過(guò)寫(xiě)入SQL語(yǔ)句執(zhí)行查詢(xún)并返回查詢(xún)結(jié)果RECORDSET集;或者可以通過(guò)寫(xiě)入SQL語(yǔ)句執(zhí)行相應(yīng)數(shù)據(jù)庫(kù)操作。
釋放RECORDSET集,關(guān)閉數(shù)據(jù)庫(kù)連接。
需要注意的是,每個(gè)動(dòng)態(tài)創(chuàng)建的ADO同時(shí)只能被一個(gè)過(guò)程調(diào)用,如果需要進(jìn)行多表并行操作,可能需要在公共數(shù)據(jù)模塊中建立多個(gè)動(dòng)態(tài)ADO。
下面是相關(guān)的代碼:
'-----------------------------------------------------------------
'如下代碼保存在名為my.bas的工程模塊中
Public CONN As Adodb.Connection '定義ADO CONNECTION對(duì)象
Public RS As Adodb.Recordset '定義ADO RECORDSET對(duì)象
'****************************
'打開(kāi)數(shù)據(jù)庫(kù)連接
'****************************
Function ConnOpen()
Dim ASTR As String
Set CONN = New Adodb.Connection
ASTR = GetDatabasePath 'MDB文件數(shù)據(jù)庫(kù)路徑
CONN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" ASTR ";Persist Security Info=False"
'本例的ODBC連接為JET4.0的直接到MDB文件的連接,如果使用ODBC數(shù)據(jù)源可以使用如下CONNECTION串:
'Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=數(shù)據(jù)源名稱(chēng);Initial Catalog=數(shù)據(jù)表庫(kù)名稱(chēng)
Option?Explicit
'mTextUTF.bas
'模塊:UTF文本文件訪問(wèn)
'作者:zyl910
'版本:1.0
'日期:2006-1-23
'==?說(shuō)明?===================================================
'支持Unicode編碼的文本文件讀寫(xiě)。暫時(shí)支持ANSI、UTF-8、UTF-16LE、UTF-16BE這幾種編碼文本
'==?更新記錄?===============================================
'[V1.0]?2006-1-23
'1.支持最常見(jiàn)的ANSI、UTF-8、UTF-16LE、UTF-16BE這幾種編碼文本
'##?編譯預(yù)處理常數(shù)?#########################################
'==?全局常數(shù)?===============================================
'IncludeAPILib:引用了API庫(kù),此時(shí)不需要手動(dòng)寫(xiě)API聲明
'##?API?####################################################
#If?IncludeAPILib?=?0?Then
'==?File?===================================================
Private?Declare?Function?CreateFile?Lib?"kernel32"?Alias?"CreateFileA"?(ByVal?lpFileName?As?String,?ByVal?dwDesiredAccess?As?Long,?ByVal?dwShareMode?As?Long,?ByVal?lpSecurityAttributes?As?Long,?ByVal?dwCreationDisposition?As?Long,?ByVal?dwFlagsAndAttributes?As?Long,?ByVal?hTemplateFile?As?Long)?As?Long
Private?Declare?Function?CloseHandle?Lib?"kernel32"?(ByVal?hObject?As?Long)?As?Long
Private?Declare?Function?ReadFile?Lib?"kernel32"?(ByVal?hFile?As?Long,?lpBuffer?As?Any,?ByVal?nNumberOfBytesToRead?As?Long,?lpNumberOfBytesRead?As?Long,?ByVal?lpOverlapped?As?Long)?As?Long
Private?Declare?Function?WriteFile?Lib?"kernel32"?(ByVal?hFile?As?Long,?lpBuffer?As?Any,?ByVal?nNumberOfBytesToWrite?As?Long,?lpNumberOfBytesWritten?As?Long,?ByVal?lpOverlapped?As?Long)?As?Long
Private?Declare?Function?GetFileSize?Lib?"kernel32"?(ByVal?hFile?As?Long,?lpFileSizeHigh?As?Long)?As?Long
Private?Declare?Function?SetFilePointer?Lib?"kernel32"?(ByVal?hFile?As?Long,?ByVal?lDistanceToMove?As?Long,?lpDistanceToMoveHigh?As?Long,?ByVal?dwMoveMethod?As?Long)?As?Long
Private?Const?INVALID_HANDLE_VALUE?=?-1
Private?Const?GENERIC_READ?=?H80000000
Private?Const?GENERIC_WRITE?=?H40000000
Private?Const?FILE_SHARE_READ?=?H1
Private?Const?FILE_SHARE_WRITE?=?H2
Private?Const?Create_NEW?=?1
Private?Const?Create_ALWAYS?=?2
Private?Const?OPEN_EXISTING?=?3
Private?Const?OPEN_ALWAYS?=?4
Private?Const?TRUNCATE_EXISTING?=?5
Private?Const?FILE_ATTRIBUTE_NORMAL?=?H80
Private?Const?FILE_BEGIN?=?0
Private?Const?FILE_CURRENT?=?1
Private?Const?FILE_END?=?2
'==?Unicode?================================================
Private?Declare?Function?MultiByteToWideChar?Lib?"kernel32"?(ByVal?CodePage?As?Long,?ByVal?dwFlags?As?Long,?ByRef?lpMultiByteStr?As?Any,?ByVal?cchMultiByte?As?Long,?ByRef?lpWideCharStr?As?Any,?ByVal?cchWideChar?As?Long)?As?Long
Private?Declare?Function?WideCharToMultiByte?Lib?"kernel32"?(ByVal?CodePage?As?Long,?ByVal?dwFlags?As?Long,?ByRef?lpWideCharStr?As?Any,?ByVal?cchWideChar?As?Long,?ByRef?lpMultiByteStr?As?Any,?ByVal?cchMultiByte?As?Long,?ByRef?lpDefaultChar?As?Any,?ByVal?lpUsedDefaultChar?As?Long)?As?Long
Private?Const?CP_UTF8?As?Long?=?65001
#End?If
'###########################################################
'Unicode編碼格式
Public?Enum?UnicodeEncodeFormat
UEF_ANSI?=?0?'ANSI+DBCS
UEF_UTF8?'UTF-8
UEF_UTF16LE?'UTF-16LE
UEF_UTF16BE?'UTF-16BE
UEF_UTF32LE?'UTF-32LE
UEF_UTF32BE?'UTF-32BE
UEF_Auto?=?-1?'自動(dòng)識(shí)別編碼
'隱藏項(xiàng)目
[_UEF_Min]?=?UEF_ANSI
[_UEF_Max]?=?UEF_UTF32BE
End?Enum
'ANSI+DBCS方式的文本所使用的代碼頁(yè)。默認(rèn)為0,表示使用系統(tǒng)當(dāng)前代碼頁(yè)。可以利用該參數(shù)實(shí)現(xiàn)讀取其他代碼編碼的文本,比如想在?簡(jiǎn)體中文平臺(tái)下?讀取?繁體中文平臺(tái)生成的txt,就將它設(shè)為950
Public?UEFCodePage?As?Long
'判斷BOM
'返回值:BOM所占字節(jié)
'dwFirst:[in]文件最開(kāi)始的4個(gè)字節(jié)
'fmt:[out]返回編碼類(lèi)型
Public?Function?UEFCheckBOM(ByVal?dwFirst?As?Long,?ByRef?fmt?As?UnicodeEncodeFormat)?As?Long
If?dwFirst?=?HFEFF?Then
fmt?=?UEF_UTF32LE
UEFCheckBOM?=?4
ElseIf?dwFirst?=?HFFFE0000?Then
fmt?=?UEF_UTF32BE
UEFCheckBOM?=?4
ElseIf?(dwFirst?And?HFFFF)?=?HFEFF?Then
fmt?=?UEF_UTF16LE
UEFCheckBOM?=?2
ElseIf?(dwFirst?And?HFFFF)?=?HFFFE?Then
fmt?=?UEF_UTF16BE
UEFCheckBOM?=?2
ElseIf?(dwFirst?And?HFFFFFF)?=?HBFBBEF?Then
fmt?=?UEF_UTF8
UEFCheckBOM?=?3
Else
fmt?=?UEF_ANSI
UEFCheckBOM?=?0
End?If
End?Function
'生成BOM
'返回值:BOM所占字節(jié)
'fmt:[in]編碼類(lèi)型
'dwFirst:[out]文件最開(kāi)始的4個(gè)字節(jié)
Public?Function?UEFMakeBOM(ByVal?fmt?As?UnicodeEncodeFormat,?ByRef?dwFirst?As?Long)?As?Long
Select?Case?fmt
Case?UEF_UTF8
dwFirst?=?HBFBBEF
UEFMakeBOM?=?3
Case?UEF_UTF16LE
dwFirst?=?HFEFF
UEFMakeBOM?=?2
Case?UEF_UTF16BE
dwFirst?=?HFFFE
UEFMakeBOM?=?2
Case?UEF_UTF32LE
dwFirst?=?HFEFF
UEFMakeBOM?=?4
Case?UEF_UTF32BE
dwFirst?=?HFFFE0000
UEFMakeBOM?=?4
Case?Else
dwFirst?=?0
UEFMakeBOM?=?0
End?Select
End?Function
'判斷文本文件的編碼類(lèi)型
'返回值:編碼類(lèi)型。文件無(wú)法打開(kāi)時(shí),返回UEF_Auto
'FileName:文件名
Public?Function?UEFCheckTextFileFormat(ByVal?FileName?As?String)?As?UnicodeEncodeFormat
Dim?hFile?As?Long
Dim?dwFirst?As?Long
Dim?nNumRead?As?Long
'打開(kāi)文件
hFile?=?CreateFile(FileName,?GENERIC_READ,?FILE_SHARE_READ?Or?FILE_SHARE_WRITE,?ByVal?0,?OPEN_EXISTING,?FILE_ATTRIBUTE_NORMAL,?ByVal?0)
If?INVALID_HANDLE_VALUE?=?hFile?Then?'文件無(wú)法打開(kāi)
UEFCheckTextFileFormat?=?UEF_Auto
Exit?Function
End?If
'判斷BOM
dwFirst?=?0
Call?ReadFile(hFile,?dwFirst,?4,?nNumRead,?ByVal?0)
nNumRead?=?UEFCheckBOM(dwFirst,?UEFCheckTextFileFormat)
'Debug.Print?nNumRead
'關(guān)閉文件
Call?CloseHandle(hFile)
End?Function
'讀取文本文件
'返回值:讀取的文本。返回vbNullString表示文件無(wú)法打開(kāi)
'FileName:[in]文件名
'fmt:[in,out]使用何種文本編碼格式來(lái)讀取文本。為UEF_Auto時(shí)表示自動(dòng)判斷,且在fmt參數(shù)返回文本所用編碼格式
Public?Function?UEFLoadTextFile(ByVal?FileName?As?String,?Optional?ByRef?fmt?As?UnicodeEncodeFormat?=?UEF_Auto)?As?String
Dim?hFile?As?Long
Dim?nFileSize?As?Long
Dim?nNumRead?As?Long
Dim?dwFirst?As?Long
Dim?CurFmt?As?UnicodeEncodeFormat
Dim?cbBOM?As?Long
Dim?cbTextData?As?Long
Dim?CurCP?As?Long
Dim?byBuf()?As?Byte
Dim?cchStr?As?Long
Dim?I?As?Long
Dim?byTemp?As?Byte
'判斷fmt范圍
If?fmt??UEF_Auto?Then
If?fmt??[_UEF_Min]?Or?fmt??[_UEF_Max]?Then
GoTo?FunEnd
End?If
End?If
'打開(kāi)文件
hFile?=?CreateFile(FileName,?GENERIC_READ,?FILE_SHARE_READ?Or?FILE_SHARE_WRITE,?ByVal?0,?OPEN_EXISTING,?FILE_ATTRIBUTE_NORMAL,?ByVal?0)
If?INVALID_HANDLE_VALUE?=?hFile?Then?'文件無(wú)法打開(kāi)
GoTo?FunEnd
End?If
'判斷文件大小
nFileSize?=?GetFileSize(hFile,?nNumRead)
If?nNumRead??0?Then?'超過(guò)4GB
GoTo?FreeHandle
End?If
If?nFileSize??0?Then?'超過(guò)2GB
GoTo?FreeHandle
End?If
'判斷BOM
dwFirst?=?0
Call?ReadFile(hFile,?dwFirst,?4,?nNumRead,?ByVal?0)
cbBOM?=?UEFCheckBOM(dwFirst,?CurFmt)
'恢復(fù)文件指針
If?fmt?=?UEF_Auto?Then?'自動(dòng)判斷
fmt?=?CurFmt
'cbBOM?=?cbBOM
Else?'手動(dòng)設(shè)置編碼
If?fmt?=?CurFmt?Then?'若編碼相同,則忽略BOM標(biāo)記
'cbBOM?=?cbBOM
Else?'編碼不同,那么都是數(shù)據(jù)
cbBOM?=?0
End?If
End?If
Call?SetFilePointer(hFile,?cbBOM,?ByVal?0,?FILE_BEGIN)
cbTextData?=?nFileSize?-?cbBOM
'讀取數(shù)據(jù)
UEFLoadTextFile?=?""
Select?Case?fmt
Case?UEF_ANSI,?UEF_UTF8
'判斷應(yīng)使用的CodePage
CurCP?=?IIf(fmt?=?UEF_UTF8,?CP_UTF8,?UEFCodePage)
名稱(chēng)欄目:vb.netbas VBNET把sql寫(xiě)在config文件里
文章分享:http://m.newbst.com/article22/dopgjcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、軟件開(kāi)發(fā)、電子商務(wù)、微信公眾號(hào)、移動(dòng)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)