版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> VB打開(kāi)EXCEL的方法一樓的沒(méi)有指明Dim xlBook As Excel.WorkBookSet xlBook = App.Workbooks.Open("文件名") 這種語(yǔ)法同樣要求excel已經(jīng)存在才能操作。</p><p> Public xlApp As Excel.ApplicationPublic xlBook As Excel.Workboo
2、kPublic xlChar As New Excel.ChartPublic xlSheet As New Excel.Worksheet</p><p> Set xlApp = New Excel.ApplicationSet xlApp = CreateObject("Excel.Application")Set xlBook = xlApp.Workbooks.AddSe
3、t xlSheet = xlBook.Worksheets.AddxlSheet.Cells(1, 1) = "測(cè)試" '寫(xiě)入內(nèi)容xlBook.SaveAs ("FILENAME") '保存文件xlApp.QuitSet xlApp = Nothing</p><p> 本方法采用add添加excel文件和datasheet,然后用save保存。如
4、果用xlApp.Visible=False,則自動(dòng)生成文件。但是如果文件已經(jīng)存在,則會(huì)彈出是否覆蓋的提示。因此,最好先在程序中檢查文件是否已經(jīng)存在,如果存在,則用普通方法打開(kāi)。如果不存在,則用add添加,并保存。 </p><p> ★打開(kāi)相對(duì)路徑下的文件Private Sub Command1_Click()Shell App.Path & "\aaa.bat"End Sub
5、 </p><p> 還有更簡(jiǎn)單的:Private Sub Command1_Click()Shell "aaa.bat"End Sub</p><p> aaa.bat就是那個(gè)BAT的名字. </p><p> 那就不一定......因?yàn)镾HELL只對(duì)可執(zhí)行文件有效.你可用WINDOWS外殼程序explorer.exe打開(kāi)任何文件
6、(包括文件夾)</p><p> 代碼:Private Sub Command1_Click()Shell "explore.exe aaa.jpg"End Sub </p><p> ★VB調(diào)用EXCEL自帶的查詢功能在表格中查找內(nèi)容Private Sub ComCx_Click()</p><p> On Error GoTo
7、50</p><p> i = xlBook.Worksheets("代碼").Range("A:A").Find(Trim(TexDm.Text)).Row</p><p> ★將程序中所有這一類的對(duì)象的某一屬性全部更改為需要的屬性Dim Item As Object '定義對(duì)象For Each Item In Me If Typ
8、eOf Item Is TextBox Then Item.Text = "" '將所有TextBox的Text屬性值變?yōu)榭誌f TypeOf Item Is ComboBox Then Item.ListIndex = -1 '將所有的ComboBox的ListIndex屬性值變?yōu)椤?1”Next</p><p> If
9、Not i = 0 ThenDm = Trim(TexDm.Text)Sm = Trim(xlBook.Worksheets("代碼").Cells(i, "B").Value)Dw = Trim(xlBook.Worksheets("代碼").Cells(i, "D").Value)TexSm.Text = Sm & "
10、; " & "(" & Dw & ")"ComQd.Visible = TrueGoTo 100End If</p><p> 50TexSm.Text = "沒(méi)有找到相匹配的信息!"100End Sub</p><p> ★如何使編的程序可以調(diào)用excel首先要引用</p
11、><p> 再定義對(duì)象及其類型Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetSet xlApp = CreateObject("Excel.Application")
12、; '創(chuàng)建EXCEL對(duì)象Set xlBook = xlApp.Workbooks.Open("D:\檢包組\合金廠代碼查詢\xls\合金JDE代碼.xls")xlApp.Visible = FalseSet xlSheet = xlBook.Worksheets("確認(rèn)信息")</p><p> ★另存為ChDir "D:\"
13、0; ActiveWorkbook.SaveAs Filename:="D:\合金廠產(chǎn)品質(zhì)檢明細(xì)表.xls", FileFormat:=xlExcel8, _ Password:="", WriteResPassword:="", ReadOnlyRecommended
14、:=False, _ CreateBackup:=False</p><p> VB是常用的應(yīng)用軟件開(kāi)發(fā)工具之一,由于VB的報(bào)表功能有限,而且一但報(bào)表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來(lái)極大的不便。因此有很多程序員現(xiàn)在已經(jīng)充分利用EXECL的強(qiáng)大報(bào)表功來(lái)實(shí)現(xiàn)報(bào)表功能。但由于VB與EXCEL由于分別屬于不同
15、的應(yīng)用系統(tǒng),如何把它們有機(jī)地結(jié)合在一起,是一個(gè)值得我們研究的課題。</p><p> 一、 VB讀寫(xiě)EXCEL表:</p><p> VB本身提自動(dòng)化功能可以讀寫(xiě)EXCEL表,其方法如下:</p><p> 1、在工程中引用Microsoft Excel類型庫(kù):</p><p> 從"工程"菜單中選擇"
16、引用"欄;選擇Microsoft Excel 9.0 Object Library(EXCEL2000),然后選擇"確定"。表示在工程中要引用EXCEL類型庫(kù)。</p><p> 2、在通用對(duì)象的聲明過(guò)程中定義EXCEL對(duì)象:</p><p> Dim xlApp As Excel.ApplicationDim xlBook As Excel.Work
17、BookDim xlSheet As Excel.Worksheet </p><p> 3、在程序中操作EXCEL表常用命令:</p><p> Set xlApp = CreateObject("Excel.Application") '創(chuàng)建EXCEL對(duì)象Set xlBook = xlApp.Workbooks.Open("文件名"
18、;) '打開(kāi)已經(jīng)存在的EXCEL工件簿文件xlApp.Visible = True '設(shè)置EXCEL對(duì)象可見(jiàn)(或不可見(jiàn))Set xlSheet = xlBook.Worksheets("表名") '設(shè)置活動(dòng)工作表xlSheet.Cells(row, col) =值 '給單元格(row,col)賦值xlSheet.PrintOut '打印工作表xlBook.Close
19、(True) '關(guān)閉工作簿xlApp.Quit '結(jié)束EXCEL對(duì)象Set xlApp = Nothing '釋放xlApp對(duì)象xlBook.RunAutoMacros (xlAutoOpen) '運(yùn)行EXCEL啟動(dòng)宏xlBook.RunAutoMacros (xlAutoClose) '運(yùn)行EXCEL關(guān)閉宏 </p><p> 4、在運(yùn)用以上VB命令操作EXCE
20、L表時(shí),除非設(shè)置EXCEL對(duì)象不可見(jiàn),否則VB程序可繼續(xù)執(zhí)行其它操作,也能夠關(guān)閉EXCEL,同時(shí)也可對(duì)EXCEL進(jìn)行操作。但在EXCEL操作過(guò)程中關(guān)閉EXCEL對(duì)象時(shí),VB程序無(wú)法知道,如果此時(shí)使用EXCEL對(duì)象,則VB程序會(huì)產(chǎn)生自動(dòng)化錯(cuò)誤。形成VB程序無(wú)法完全控制EXCEL的狀況,使得VB與EXCEL脫節(jié)。</p><p> 二、 EXCEL的宏功能:</p><p> EXCE
21、L提供一個(gè)Visual Basic編輯器,打開(kāi)Visual Basic編輯器,其中有一工程屬性窗口,點(diǎn)擊右鍵菜單的"插入模塊",則增加一個(gè)"模塊1",在此模塊中可以運(yùn)用Visual Basic語(yǔ)言編寫(xiě)函數(shù)和過(guò)程并稱之為宏。其中,EXCEL有兩個(gè)自動(dòng)宏:一個(gè)是啟動(dòng)宏(Sub Auto_Open()),另一個(gè)是關(guān)閉宏(Sub Auto_Close())。它們的特性是:當(dāng)用EXCEL打含有啟動(dòng)宏的工
22、簿時(shí),就會(huì)自動(dòng)運(yùn)行啟動(dòng)宏,同理,當(dāng)關(guān)閉含有關(guān)閉宏的工作簿時(shí)就會(huì)自動(dòng)運(yùn)行關(guān)閉宏。但是通過(guò)VB的自動(dòng)化功能來(lái)調(diào)用EXCEL工作表時(shí),啟動(dòng)宏和關(guān)閉宏不會(huì)自動(dòng)運(yùn)行,而需要在VB中通過(guò)命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 來(lái)運(yùn)行啟動(dòng)宏和關(guān)閉宏。</p><p> 三、 VB與EXCEL的相互勾通:</p>
23、;<p> 充分利用EXCEL的啟動(dòng)宏和關(guān)閉宏,可以實(shí)現(xiàn)VB與EXCEL的相互勾通,其方法如下:</p><p> 在EXCEL的啟動(dòng)宏中加入一段程序,其功能是在磁盤(pán)中寫(xiě)入一個(gè)標(biāo)志文件,同時(shí)在關(guān)閉宏中加入一段刪除此標(biāo)志文件的程序。VB程序在執(zhí)行時(shí)通過(guò)判斷此標(biāo)志文件存在與否來(lái)判斷EXCEL是否打開(kāi),如果此標(biāo)志文件存在,表明EXCEL對(duì)象正在運(yùn)行,應(yīng)該禁止其它程序的運(yùn)行。如果此標(biāo)志文件不存在,表
24、明EXCEL對(duì)象已被用戶關(guān)閉,此時(shí)如果要使用EXCEL對(duì)象運(yùn)行,必須重新創(chuàng)建EXCEL對(duì)象。</p><p><b> 四、舉例:</b></p><p> 1、在VB中,建立一個(gè)FORM,在其上放置兩個(gè)命令按鈕,將Command1的Caption屬性改為EXCEL,Command2的Caption屬性改為End。然后在其中輸入如下程序:</p>
25、<p> Dim xlApp As Excel.Application '定義EXCEL類 Dim xlBook As Excel.Workbook '定義工件簿類Dim xlsheet As Excel.Worksheet '定義工作表類 Private Sub Command1_Click() '打開(kāi)EXCEL過(guò)程 If Dir("D:\temp\excel.bz&quo
26、t;) = "" Then '判斷EXCEL是否打開(kāi) Set xlApp = CreateObject("Excel.Application") '創(chuàng)建EXCEL應(yīng)用類 xlApp.Visible = True '設(shè)置EXCEL可見(jiàn) Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls")
27、9;打開(kāi)EXCEL工作簿 Set xlsheet = xlBook.Worksheets(1) '打開(kāi)EXCEL工作表 xlsheet.Activate '激活工作表 xlsheet.Cells(1, 1) = "abc" '給單元格1行駛列賦值 xlBook.RunA</p><p> Private Sub Command2_Click() If
28、 Dir("D:\temp\excel.bz") <> "" Then '由VB關(guān)閉EXCEL xlBook.RunAutoMacros (xlAutoClose) '執(zhí)行EXCEL關(guān)閉宏 xlBook.Close (True) '關(guān)閉EXCEL工作簿 xlApp.Quit '關(guān)閉EXCEL End If Set xlApp = No
29、thing '釋放EXCEL對(duì)象 EndEnd Sub</p><p> 2、在D盤(pán)根目錄上建立一個(gè)名為T(mén)emp的子目錄,在Temp目錄下建立一個(gè)名為"bb.xls"的EXCEL文件。</p><p> 3、在"bb.xls"中打開(kāi)Visual Basic編輯器,在工程窗口中點(diǎn)鼠標(biāo)鍵選擇插入模塊,在模塊中輸入入下程序存盤(pán):</p
30、><p> Sub auto_open() Open "d:\temp\excel.bz" For Output As #1 '寫(xiě)標(biāo)志文件 Close #1End SubSub auto_close() Kill "d:\temp\excel.bz" '刪除標(biāo)志文件End Sub </p><p> 4、運(yùn)行VB程序,點(diǎn)擊
31、EXCEL按鈕可以打開(kāi)EXCEL系統(tǒng),打開(kāi)EXCEL系統(tǒng)后,VB程序和EXCEL分別屬兩個(gè)不同的應(yīng)用系統(tǒng),均可同時(shí)進(jìn)行操作,由于系統(tǒng)加了判斷,因此在VB程序中重復(fù)點(diǎn)擊EXCEL按鈕時(shí)會(huì)提示EXCEL已打開(kāi)。如果在EXCEL中關(guān)閉EXCEL后再點(diǎn)EXCEL按鈕,則會(huì)重新打開(kāi)EXCEL。而無(wú)論EXCEL打開(kāi)與否,通過(guò)VB程序均可關(guān)閉EXCEL。這樣就實(shí)現(xiàn)了VB與EXCEL的無(wú)縫連接。</p><p> ★JDE
32、代碼查詢程序源代碼</p><p> Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim Dm As StringDim Sm As StringDim Dw As StringDim i As IntegerDim SouS As Object</p>
33、<p> Private Sub ComCx_Click()'i = 2'Do While i <= 10000'Dm = Trim(xlBook.Worksheets("代碼").Cells(i, "A").Value) 'If Dm = Trim(TexDm.Text) Then
34、60; 'Sm = Trim(xlBook.Worksheets("代碼").Cells(i, "B").Value) 'Dw = Trim(xlBook.Worksheets("代碼").Cells(i, "D").Value) 'TexSm.T
35、ext = Sm & " " & "(" & Dw & ")" 'GoTo 100 ' End If</p><p> 'i = i + 1'Loop'TexSm.Text = "沒(méi)有找到相匹
36、配的信息!"</p><p> On Error GoTo 50</p><p> i = xlBook.Worksheets("代碼").Range("A:A").Find(Trim(TexDm.Text)).Row</p><p> If Not i = 0 ThenDm = Trim(TexDm.Tex
37、t)Sm = Trim(xlBook.Worksheets("代碼").Cells(i, "B").Value)Dw = Trim(xlBook.Worksheets("代碼").Cells(i, "D").Value)TexSm.Text = Sm & " " & "(" &
38、 Dw & ")"ComQd.Visible = TrueGoTo 100End If</p><p> 50TexSm.Text = "沒(méi)有找到相匹配的信息!"</p><p> 100End Sub</p><p> Private Sub ComQc_Click()TexDm.Text = &q
39、uot;請(qǐng)?jiān)诖溯斎?0位數(shù)的代碼"TexSm.Text = ""Dm = ""Sm = ""Dw = ""ComQd.Visible = False</p><p><b> End Sub</b></p><p> Private Sub ComQd_Click(
40、)xlSheet.Cells(2, "A").Value = DmxlSheet.Cells(2, "B").Value = SmxlSheet.Cells(2, "C").Value = DwxlBook.SaveEnd Sub</p><p> Private Sub ComTc_Click()xlBook.Close (False)
41、xlApp.QuitSet xlApp = NothingSet xlBook = NothingSet xlSheet = NothingEndEnd Sub</p><p> Private Sub Form_Load()Set xlApp = CreateObject("Excel.Application")
42、60; '創(chuàng)建EXCEL對(duì)象Set xlBook = xlApp.Workbooks.Open(App.Path & "\xls\合金JDE代碼.xls")xlApp.Visible = FalseSet xlSheet = xlBook.Worksheets("確認(rèn)信息")</p><p><b> End Sub
43、</b></p><p> Private Sub TexDm_DblClick()TexDm.Text = ""End Sub</p><p> ★ select case.... case ... end select 用法:</p><p> Select Case Co
44、mFgYy1.Text Case "缺邊掉角" xlsheet.Cells(i, "P").Value = Trim(TexFg1P.Text) xlsheet.Cells(i, "Q").Value = Trim(TexFg
45、1Kg.Text) xlsheet.Cells(i, "R").Value = Trim(TexFgQk1.Text) Case "變形" xlsheet.Cells(i, "S").Value = Trim(Te
46、xFg1P.Text) xlsheet.Cells(i, "T").Value = Trim(TexFg1Kg.Text) xlsheet.Cells(i, "U").Value = Trim(TexFgQk1.Text) Case
47、"表面鼓泡" xlsheet.Cells(i, "V").Value = Trim(TexFg1P.Text) xlsheet.Cells(i, "W").Value = Tr</p><p> ★ 添加子程序的時(shí)候,要在括號(hào)里面聲明要從主程序引用的變量和對(duì)象</p>
48、;<p> Public Sub FangGuo(ByVal i As Integer, ByVal xlapp As Excel.Application, ByVal xlbook As Excel.Workbook, ByVal xlsheet As Excel.Worksheet)</p><p> '——————————向下為放過(guò)區(qū)域——————————————————————&
49、lt;/p><p> Debug.Print i '即顯信息 '————放過(guò)1—————— Select Case ComFgYy1.Text Case "缺邊掉角"
50、0; xlsheet.Cells(i, "P").Value = Trim(TexFg1P.Text) xlsheet.Cells(i, "Q").Value = Trim(TexFg1Kg.Text) xlsheet.Cells(i, "R").Value = Trim(Tex
51、FgQk1.Text) Case "變形" xlsheet.Cells(i, "S").Value = Trim(TexFg1P.Text) xlsheet.Cells(i, "T").Value = Trim(T
52、exFg1Kg.Text) xlsheet.Cells(i, "U").Value = Trim(TexFgQk1.Text) end select</p><p><b> End Sub</b></p><p> ★點(diǎn)擊窗口右上角的關(guān)閉 是 “unload” 或 “
53、QueryUnload”事件</p><p> ★子程序改變來(lái)自主程序的變量的值:Private Sub Com1_Click() dim CfZ as integer QrCf CfZ If CfZ = 1 Then
54、60; MsgBox ("放過(guò)原因或報(bào)廢原因有重復(fù)!" & vbCrLf & "請(qǐng)查看紅色標(biāo)識(shí)......") End Ifend sub</p><p> Public Sub QrCf(Cf As Integer) Select Case ComFgYy1.Tex
55、t Case ComFgYy2.Text If ComFgYy1.Text <> "" Then ComFgYy1.BackColor = &HFF& ComFgYy2.BackColor = &HFF&
56、60; Cf = 1 End If end selectend sub</p><p> 運(yùn)行效果:如果case中Cf=1執(zhí)行,則CfZ的值變?yōu)?,并彈出消息框</p><p> ★如何判斷字符串為是否為數(shù)字判斷表達(dá)式的運(yùn)算結(jié)果是否為數(shù)字,返回 Boolean 值(True or False)。
57、</p><p> 描述返回 Boolean 值指明表達(dá)式的值是否為數(shù)字。語(yǔ)法IsNumeric(expression)expression 參數(shù)可以是任意表達(dá)式。</p><p> 說(shuō)明如果整個(gè) expression 被識(shí)別為數(shù)字,IsNumeric 函數(shù)返回 True;否則函數(shù)返回 False。 如果 expression 是日期表達(dá)式,IsNumeric 函數(shù)返回 F
58、alse。下面的示例利用 IsNumeric 函數(shù)決定變量是否可以作為數(shù)值: </p><p> Dim MyVar, MyCheckMyVar = 53 '賦值。MyChe
59、ck = IsNumeric(MyVar) ' 返回 True。</p><p> MyVar = "459.95" ' 賦值。MyCheck = IsNumeric(MyVar)
60、160; ' 返回True。</p><p> MyVar = "45 Help" ' 賦值。MyCheck = IsNumeric(MyVar) ' 返回 Fal
61、se。</p><p> ★在frmlogin中設(shè)置用戶及密碼檢查功能 Dim LogIn As Boolean Select Case ComUserName.Text Case "測(cè)試"
62、 If txtPassword.Text = "....." Then txtUserName.Text = "測(cè)試" LogIn = True
63、 Else LogIn = False End If
64、160; Case "魏敏" If txtPassword.Text = "wm" Then txtUserName.Text = "魏敏"
65、60; LogIn = True Else LogIn = False End If
66、 Case "黃選華" If txtPassword.Text = "hxh" Then txt<
67、/p><p> ★將一個(gè)文件復(fù)制到另外一個(gè)目錄,并改變名字</p><p> Dim xlFile, xlFileCopy As String xlFile = App.Path & "\xls\合金廠產(chǎn)品質(zhì)檢明細(xì)表.xls" xlFileCopy = "C:\xlTemp\&
68、quot; & "Copy" & Format(Now, "YYYY_MM_DD_HH_MM_SS") & ".xc" FileCopy xlFile, xlFileCopy</p><p> ★用format()函數(shù)自定義日期/時(shí)間格式 </p><p> ★VB
69、讀取一個(gè)文件的創(chuàng)建日期:我看網(wǎng)上找到一個(gè),用fso的 Dim file As Variant
70、Dim fso As Variant Set fso = CreateObject("Scripting.FileSystemObject"
71、) Set file = fso.GetFile(.filename) MsgBox
72、 vbLf & "創(chuàng)建時(shí)間:" & file.DateCreated & _ vbLf
73、60; & "修改時(shí)間:" & file.DateLastModified & _ vbLf &
74、 "訪問(wèn)時(shí)間:" & file.DateLastAccessed 另外還有一個(gè)問(wèn)題,就是獲取文件版本,可以使用 Declare Function GetFileV</p>
75、<p> ★刪除指定位置的普通文件Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As LongPrivate Declare Function F
76、indNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As LongPrivate Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Lo
77、ng) As LongPrivate Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTI</p><p> Private Const FILE_ATTRIBUTE_DIRECTORY = &H10Private Type SY
78、STEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer &
79、#160; wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer
80、160; wMilliseconds As IntegerEnd Type</p><p> Private Type FILETIME dwLowDateTime As Long
81、 dwHighDateTime As LongEnd TypePrivate Const MAX_PATH = 260</p><p> Private Type WIN32_FIND_DATA dwFileAttributes As Long
82、60; ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME
83、0; nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long
84、; cFileName As String * MAX_PATH cAlternate As String * 14End TypeDim Fdata As WIN32_FIND_DATA</p><p> Private Sub DelFiles(B
85、yVal sPath As String, ByVal xD As String)On Error Resume NextDim R1 As Long, R2 As Long, TmpTime As StringDim SYSTM As SYSTEMTIMER1 = FindFirstFile(sPath & "*", Fdata)If (Fdata.dwFileAttributes And FIL
86、E_ATTRIBUTE_DIRECTORY) = False ThenFileTimeToSystemTime Fdata.ftCreationTime, SYSTMTmpTime = CStr(SYSTM.wYear) & "-" & CStr(SYSTM.wMonth) & "-" & CStr(SYSTM.wDay) & " "
87、 & CStr(SYSTM.wHour) & ":" & CStr(SYSTM.wMinute) & ":" & CStr(SYSTM.wSecond)If CDate(TmpTime) < CDate</p><p> End IfDoEventsLoopEnd Sub</p><p> P
88、rivate Function StrF(ByVal S As String) As StringStrF = Left(S, InStr(S, Chr(0)) - 1)End Function</p><p> 用法:(刪除“c:\xltemp\”這里所有的10天前的文件)Private Sub Command1_Click()Dim NowDate As StringNowDate = Str(D
89、ate - 10)DelFiles "c:\xltemp\", NowDateEnd Sub</p><p> ?。ㄈ粜枰?jiǎng)h除指定擴(kuò)展名的文件,將 R1 = FindFirstFile(sPath & "*", Fdata)這一行里面的 “*” 改成 “*.擴(kuò)展名”)(另外有一點(diǎn),在這個(gè)程序里面,文件的創(chuàng)建時(shí)間是精確到秒的,你的時(shí)間只用了date-10,只有
90、日期沒(méi)時(shí)間,比如2010-3-10號(hào),只能刪除10號(hào)之前的。10號(hào)當(dāng)天的刪除不了。)</p><p> ★VB日期選擇邊框網(wǎng)上有不少做日期選擇框的方法或控件,搞得非常復(fù)雜。</p><p> 其實(shí)VB6自帶有日期選擇框的:菜單:工具,部件 把mcrosoft windows com
91、mon controls-2 6.0(sp6)</p><p> 得到的DTPicker就是DateTimePicker一般就用 DTPicker控件這就是你想要的東西了</p><p> ★VB自帶的刪除文件功能</p><p> Kill filename</p><p> ★建
92、立連接用ADO對(duì)象很方便首先添加“工程-引用”:Microsoft ActiveX Objects 6.0 Librarydim cn as new connectiondim rs as new recordsetcn.open "數(shù)據(jù)庫(kù)連接串"set rs=cn.execute("select * from tab1")debug.print rs.fields("字段名
93、")</p><p> ("數(shù)據(jù)庫(kù)連接串"這段內(nèi)容,可以用一個(gè)udl文件生成,用記事本創(chuàng)建一個(gè)沒(méi)有內(nèi)容的擴(kuò)展名為udl文件,雙擊打開(kāi),按上邊的提示配置好,再用記事本打開(kāi),就可以找到需要的那段字符串了。)</p><p> Dim cn As New ADODB.ConnectionDim rs As New ADODB.Recordset</p&g
94、t;<p> Private Sub Command1_Click()cn.ConnectionString = "Provider=MSDASQL.1;Password=.....;Persist Security Info=True;User ID=kio;Data Source=SQLDb;Initial Catalog=DataTest"cn.Openrs.Open "[dbo
95、].[ZJMX]", cn, 1, 3rs.AddNewrs("登陸時(shí)間") = Text1.Textrs("用戶名") = Text2.Textrs.Update</p><p> rs.Clonecn.CloseEnd Sub</p><p> ★將用戶名和密碼存于數(shù)據(jù)庫(kù)中的數(shù)據(jù)表“用戶設(shè)置”中,下面是密碼驗(yàn)證過(guò)程:&
96、#160;Cn.ConnectionString = "Provider=SQLOLEDB.1;Password=.....;Persist Security Info=True;User ID=carbide;Initial Catalog=Carbide;Data Source=172.16.13.16\SQLEXPRESS" Cn.Open
97、0; Dim SqlStr As String SqlStr = "select * from [dbo].[用戶設(shè)置] where [UN]='" & txtUserName.Text & "' And [PW]='" & txtPassword.Text & "'"
98、60; Set Rs = Cn.Execute(SqlStr) If Not Rs.EOF Then Rs.Close Cn.Close
99、160; OK = True Me.Hide Else Ms</p><p> ★SQL 查詢并取值的問(wèn)題</p><p> Cn
100、.ConnectionString = "Provider=SQLOLEDB.1;Password=.....;Persist Security Info=True;User ID=carbide;Initial Catalog=Carbide;Data Source=172.16.13.16\SQLEXPRESS" Cn.Open Dim
101、SqlStr As String SqlStr = "select * from [dbo].[用戶設(shè)置] where [UN]='" & txtUserName.Text & "' And [PW]='" & txtPassword.Text & "'"
102、0; Set Rs = Cn.Execute(SqlStr) If Not Rs.EOF Then Dlr = Rs("姓名").Value DlID = t
103、xtUserName.Text Rs.Close Cn.Close end if</p><p> ★如何判斷字段值為空 If IsNull(Rs(FgP)) = True An
104、d IsNull(Rs(FgKg)) = True Then y = y + 1 GoTo 11 Else ComFgYy(x).Text = Yy(y) TexFgP(x).Text = Rs(FgP).Value
105、0; TexFgKg(x).Text = Rs(FgKg).Value TexFgQk(x).Text = Rs(FgQk).Value y = y + 1 End If</p><p> ★更改已有記錄Cn.OpenDim SqlStr As StringSqlStr = "sel
106、ect * from [dbo].[產(chǎn)品質(zhì)檢明細(xì)] where [記錄號(hào)]=" & LshCxRs.Open SqlStr, Cn, 1, 3</p><p> Rs("記錄號(hào)") = LshCxRs("錄入時(shí)間") = NowRs("檢驗(yàn)時(shí)間") = DTPJyrq.Value</p><p><
107、b> Rs.update</b></p><p> ★刪除已有記錄Cn.OpenDim SqlStr As StringSqlStr = "delete from [dbo].[產(chǎn)品質(zhì)檢明細(xì)] where [記錄號(hào)]=" & LshCxRs.Open SqlStr, Cn, 1, 3Cn.Close</p><p> ★SQL復(fù)
108、制記錄INSERT INTO `table` SELECT * FROM `table` WHERE id=1;沒(méi)有主鍵時(shí)候才可以。。有主鍵時(shí)候就要寫(xiě)上列:INSERT INTO `table`(`a`,`b`,`c`) SELECT `a`,`b`,`c` FROM `table` WHERE id=1;補(bǔ)充:如果要插入數(shù)據(jù)的表比前表字段但是也要插入數(shù)據(jù),可以用mysql函數(shù)產(chǎn)生欄目填充,例如:ABS(1),TRIM('
109、;abc')</p><p> UPDATE `table` SET a = !a WHERE id = 1;//布爾值取反UPDATE `table1`,`table2` SET `table1`.id = `table2`.id WHERE `table1`.id = `table2`.id;//更新 </p><p> ★SQL語(yǔ)句查找空值</p><
110、;p> select * from 表格 where 字段名 is null</p><p> ★將SQL查找結(jié)果導(dǎo)出到EXCELDim xlApp As New Excel.ApplicationDim xlBook As New Excel.WorkbookDim xlSheet As New Excel.WorksheetDim m As Integer, n As IntegerDim
111、 Ran As String</p><p> Set xlApp = CreateObject("Excel.Application") '創(chuàng)建EXCEL應(yīng)用類 Set xlBook = xlApp.Workbooks.Open("f:\softjesen\data\質(zhì)檢明細(xì)100520.xls") '打開(kāi)EXCEL
112、工作簿 xlApp.Visible = True '設(shè)置EXCEL不可見(jiàn) Set xlSheet = xlBook.Worksheets.Add ActiveSheet.Name = "產(chǎn)品質(zhì)日?qǐng)?bào)表" & Format(Now, "YYYY_MM_DD_HH_MM_SS"
113、;) '打開(kāi)EXCEL工作表 m = 2 Do While Not Rs.EOF For n = 0 To Rs.Fields.Count - 1 Ran = x & ":" & x xlShe
114、et.Cells(1, n + 1) = Rs.Fields(n).Name xlSheet.Cells(m, n + 1) = Rs(n).Value Next R</p><p> ★VB 中 DataGrid 的使用方法SqlStr = "select * from dbo.代碼
115、where [JDE代碼]='" & Trim(Text1(0).Text) & "'" Cn.CursorLocation = adUseClient '關(guān)鍵語(yǔ)句,有了這句控件才能顯示數(shù)據(jù)集的內(nèi)容 Cn.Open 'Rs.
116、Open SqlStr, Cn Set Rs = Cn.Execute(SqlStr) If Not Rs.EOF Then Text1(1).Text = Rs("牌號(hào)") Text1(2).Text = Rs("型號(hào)")
117、; Text1(3).Text = Rs("單位") Set DataGrid1.DataSource = Rs '關(guān)鍵語(yǔ)句,將控件和數(shù)據(jù)集連接起來(lái) 'DataGrid1.ClearFields 'DataGrid1.ReBind &
118、#160; Else MsgBox ("沒(méi)有找到對(duì)應(yīng) JDE代碼 的信息!") End If</p><p> ★ 單擊就全選文本框中內(nèi)容,文本框用到了控件數(shù)組(index= 0 to 8)Private Sub Text1_Click(Index As Integer)Text1(Index).Se
119、lStart = 0Text1(Index).SelLength = Len(Text1(Index).Text)End Sub</p><p> ★在textbox中顯示 datagrid 表格中選中單元格所在列的記錄Dim DataBj As Integer '標(biāo)記表中是否有數(shù)據(jù)顯示, 有為 1 沒(méi)有 為 0</p><p> Private Sub Da
120、taGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)If DataBj = 1 Then Text1(0).Text = DataGrid1.Columns("JDE代碼").Text ' DataGrid1 Text1(1).Text = DataGr
121、id1.Columns("牌號(hào)").Text 'rs1("牌號(hào)") Text1(2).Text = DataGrid1.Columns("型號(hào)").Text 'rs1("型號(hào)") Text1(3).Text = DataGrid1.Columns("說(shuō)明&q
122、uot;).Text 'rs1("說(shuō)明").Value Text1(4).Text = DataGrid1.Columns("備注").Text 'rs1("備注").Value Combo1.Text = DataGrid1.Columns("單位").Text &
123、#39;rs1("單位") ID = DataGrid1.Columns</p><p> 注意:DataGrid1_RowColChange 事件在datagrid控件中的內(nèi)容有改變的時(shí)候都會(huì)被激活,所以在查詢結(jié)果顯示出來(lái)之前該事件就被激活了,會(huì)出現(xiàn)好不到記錄的提示,為了解決這個(gè)問(wèn)題,需要引入一個(gè)變量DataBj 來(lái)標(biāo)記是否已經(jīng)有查詢結(jié)果顯示在表格中,
124、使當(dāng)表格中有內(nèi)容的時(shí)候才執(zhí)行DataGrid1_RowColChange事件中的代碼。</p><p> ★通過(guò)SQL語(yǔ)句刪除表中重復(fù)記錄的方法原理:曬出無(wú)重復(fù)的記錄 將數(shù)據(jù)導(dǎo)入到另外一個(gè)相同的表中(名字不同),再將無(wú)重復(fù)記錄的表的名字改為源表的名字。INSERT INTO DBO.代碼2 ([ID],[JDE代碼],[牌號(hào)],[型號(hào)],[單位],[說(shuō)明]) SELECT DISTINCT [I
125、D],[JDE代碼],[牌號(hào)],[型號(hào)],[單位],[說(shuō)明] FROM dbo.代碼</p><p> ★定時(shí)任務(wù),使用 Timer控件,在Timer控件的interval屬性中設(shè)置時(shí)間間隔,單位是 毫秒 (1秒=1000毫秒)</p><p> 例:Private Sub Timer1_Timer()rs.RequeryDataGrid1.refreshEnd Sub<
126、/p><p> ★如何獲得查詢結(jié)果的 記錄條數(shù)X = Rs.RecordCount 'X就是記錄的條數(shù)</p><p> vb中recordcount返回值總是為-1:</p><p> 這樣就沒(méi)問(wèn)題rs.open sqlstr,conn,3,2 這樣就有問(wèn)題rs.open sqlstr,conn,1,2 因?yàn)閏onn后第一個(gè)數(shù)字是1表示
127、指針只能往前,3表示自由指針 使用RecordCount屬性可確定Recordset對(duì)象中記錄的數(shù)目。ADO無(wú)法確定記錄數(shù)時(shí),或者如果提供者或游標(biāo)類型不支持RecordCount,則該屬性返回–1。讀已關(guān)閉的Recordset上的RecordCount屬性將產(chǎn)生錯(cuò)誤。 如果Recordset對(duì)象支持近似定位或書(shū)簽(即Supports(adApproxPosition)或Supports(adBookmark)各自返回True),不管
128、是否完全填充該值,該值將為Recordset中記錄的精確數(shù)目。如果Recordset對(duì)象不支持近似定位,該屬性可能由于必須對(duì)所有記錄進(jìn)行檢索和計(jì)數(shù)以返回精確RecordCount值而嚴(yán)重消耗資源。 Recordset對(duì)象的游標(biāo)類型會(huì)影響是否能夠確定記錄的數(shù)目。對(duì)僅向前游標(biāo),RecordCount屬性將返回-1,對(duì)靜態(tài)或鍵集游標(biāo)返回實(shí)際計(jì)數(shù),對(duì)動(dòng)態(tài)游標(biāo)取決于數(shù)據(jù)源返回-1或?qū)嶋H計(jì)數(shù)。</p><p> ★關(guān)閉當(dāng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用vb操作excel方法匯總
- excel同時(shí)打開(kāi)兩個(gè)窗口的方法
- vb操作excel
- 用DAO打開(kāi)Excel文件.txt
- 用DAO打開(kāi)Excel文件.txt
- 用DAO打開(kāi)Excel文件.txt
- 用DAO打開(kāi)Excel文件.txt
- 用DAO打開(kāi)Excel文件.txt
- excel文檔不能直接打開(kāi)雙擊呈灰色
- excel文檔不能直接打開(kāi)雙擊呈灰色
- 用VB創(chuàng)建Excel報(bào)表.txt
- 淺談Excel 的VB編程.txt
- 淺談Excel 的VB編程.txt
- 用VB創(chuàng)建Excel報(bào)表.txt
- 淺談Excel 的VB編程.txt
- 用VB創(chuàng)建Excel報(bào)表.txt
- 淺談Excel 的VB編程.txt
- 用VB創(chuàng)建Excel報(bào)表.txt
- 淺談Excel 的VB編程.txt
- 用VB創(chuàng)建Excel報(bào)表.txt
評(píng)論
0/150
提交評(píng)論