標準模塊就是指的模塊。
成都創新互聯主營新賓網站建設的網絡公司,主營網站建設方案,成都App定制開發,新賓h5微信小程序開發搭建,新賓網站營銷推廣歡迎新賓等地區企業咨詢
因為廣義上窗體、類、用戶定義控件都叫模塊。故用“標準模塊”來指代“模塊”。
======================================================
菜單:“工程”=“添加模塊”=“打開”
這樣就在工程里添加了一個標準模塊。這時按“保存”按鈕就可以保存為bas文件。
使用ADO控件可以方便的在VB6中訪問ODBC數據庫,但是通過直接放置ADODS控件來獲得ADO的數據連接比較麻煩,我們可以在VB工程中創建一個公共數據模塊,將ADO控件的初始化、建立連接、關閉連接等操作都寫到函數中,這樣就可以在工程的其他模塊中共享調用這個ADO連接。
一次完整的ADO調用操作分為如下幾個步驟:
打開ADO到數據庫的連接,初始化ADO RECORDSET集。
通過寫入SQL語句執行查詢并返回查詢結果RECORDSET集;或者可以通過寫入SQL語句執行相應數據庫操作。
釋放RECORDSET集,關閉數據庫連接。
需要注意的是,每個動態創建的ADO同時只能被一個過程調用,如果需要進行多表并行操作,可能需要在公共數據模塊中建立多個動態ADO。
下面是相關的代碼:
'-----------------------------------------------------------------
'如下代碼保存在名為my.bas的工程模塊中
Public CONN As Adodb.Connection '定義ADO CONNECTION對象
Public RS As Adodb.Recordset '定義ADO RECORDSET對象
'****************************
'打開數據庫連接
'****************************
Function ConnOpen()
Dim ASTR As String
Set CONN = New Adodb.Connection
ASTR = GetDatabasePath 'MDB文件數據庫路徑
CONN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" ASTR ";Persist Security Info=False"
'本例的ODBC連接為JET4.0的直接到MDB文件的連接,如果使用ODBC數據源可以使用如下CONNECTION串:
'Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=數據源名稱;Initial Catalog=數據表庫名稱
Option?Explicit
'mTextUTF.bas
'模塊:UTF文本文件訪問
'作者:zyl910
'版本:1.0
'日期:2006-1-23
'==?說明?===================================================
'支持Unicode編碼的文本文件讀寫。暫時支持ANSI、UTF-8、UTF-16LE、UTF-16BE這幾種編碼文本
'==?更新記錄?===============================================
'[V1.0]?2006-1-23
'1.支持最常見的ANSI、UTF-8、UTF-16LE、UTF-16BE這幾種編碼文本
'##?編譯預處理常數?#########################################
'==?全局常數?===============================================
'IncludeAPILib:引用了API庫,此時不需要手動寫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?'自動識別編碼
'隱藏項目
[_UEF_Min]?=?UEF_ANSI
[_UEF_Max]?=?UEF_UTF32BE
End?Enum
'ANSI+DBCS方式的文本所使用的代碼頁。默認為0,表示使用系統當前代碼頁。可以利用該參數實現讀取其他代碼編碼的文本,比如想在?簡體中文平臺下?讀取?繁體中文平臺生成的txt,就將它設為950
Public?UEFCodePage?As?Long
'判斷BOM
'返回值:BOM所占字節
'dwFirst:[in]文件最開始的4個字節
'fmt:[out]返回編碼類型
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所占字節
'fmt:[in]編碼類型
'dwFirst:[out]文件最開始的4個字節
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
'判斷文本文件的編碼類型
'返回值:編碼類型。文件無法打開時,返回UEF_Auto
'FileName:文件名
Public?Function?UEFCheckTextFileFormat(ByVal?FileName?As?String)?As?UnicodeEncodeFormat
Dim?hFile?As?Long
Dim?dwFirst?As?Long
Dim?nNumRead?As?Long
'打開文件
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?'文件無法打開
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
'關閉文件
Call?CloseHandle(hFile)
End?Function
'讀取文本文件
'返回值:讀取的文本。返回vbNullString表示文件無法打開
'FileName:[in]文件名
'fmt:[in,out]使用何種文本編碼格式來讀取文本。為UEF_Auto時表示自動判斷,且在fmt參數返回文本所用編碼格式
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
'打開文件
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?'文件無法打開
GoTo?FunEnd
End?If
'判斷文件大小
nFileSize?=?GetFileSize(hFile,?nNumRead)
If?nNumRead??0?Then?'超過4GB
GoTo?FreeHandle
End?If
If?nFileSize??0?Then?'超過2GB
GoTo?FreeHandle
End?If
'判斷BOM
dwFirst?=?0
Call?ReadFile(hFile,?dwFirst,?4,?nNumRead,?ByVal?0)
cbBOM?=?UEFCheckBOM(dwFirst,?CurFmt)
'恢復文件指針
If?fmt?=?UEF_Auto?Then?'自動判斷
fmt?=?CurFmt
'cbBOM?=?cbBOM
Else?'手動設置編碼
If?fmt?=?CurFmt?Then?'若編碼相同,則忽略BOM標記
'cbBOM?=?cbBOM
Else?'編碼不同,那么都是數據
cbBOM?=?0
End?If
End?If
Call?SetFilePointer(hFile,?cbBOM,?ByVal?0,?FILE_BEGIN)
cbTextData?=?nFileSize?-?cbBOM
'讀取數據
UEFLoadTextFile?=?""
Select?Case?fmt
Case?UEF_ANSI,?UEF_UTF8
'判斷應使用的CodePage
CurCP?=?IIf(fmt?=?UEF_UTF8,?CP_UTF8,?UEFCodePage)
名稱欄目:vb.netbas VBNET把sql寫在config文件里
文章分享:http://vcdvsql.cn/article22/dopgjcc.html
成都網站建設公司_創新互聯,為您提供虛擬主機、軟件開發、電子商務、微信公眾號、移動網站建設、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯