vb打開excel地方法.._第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  VB打開EXCEL的方法一樓的沒有指明Dim xlBook As Excel.WorkBookSet xlBook = App.Workbooks.Open("文件名") 這種語法同樣要求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) = "測試" '寫入內(nèi)容xlBook.SaveAs ("FILENAME") '保存文件xlApp.QuitSet xlApp = Nothing</p><p>  本方法采用add添加excel文件和datasheet,然后用save保存。如

4、果用xlApp.Visible=False,則自動生成文件。但是如果文件已經(jīng)存在,則會彈出是否覆蓋的提示。因此,最好先在程序中檢查文件是否已經(jīng)存在,如果存在,則用普通方法打開。如果不存在,則用add添加,并保存。 </p><p>  ★打開相對路徑下的文件Private Sub Command1_Click()Shell App.Path & "\aaa.bat"End Sub

5、 </p><p>  還有更簡單的:Private Sub Command1_Click()Shell "aaa.bat"End Sub</p><p>  aaa.bat就是那個BAT的名字. </p><p>  那就不一定......因為SHELL只對可執(zhí)行文件有效.你可用WINDOWS外殼程序explorer.exe打開任何文件

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>  ★將程序中所有這一類的對象的某一屬性全部更改為需要的屬性Dim Item As Object '定義對象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 = "沒有找到相匹配的信息!"100End Sub</p><p>  ★如何使編的程序可以調(diào)用excel首先要引用</p

11、><p>  再定義對象及其類型Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetSet xlApp = CreateObject("Excel.Application")        

12、; '創(chuàng)建EXCEL對象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)用軟件開發(fā)工具之一,由于VB的報表功能有限,而且一但報表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來極大的不便。因此有很多程序員現(xiàn)在已經(jīng)充分利用EXECL的強(qiáng)大報表功來實現(xiàn)報表功能。但由于VB與EXCEL由于分別屬于不同

15、的應(yīng)用系統(tǒng),如何把它們有機(jī)地結(jié)合在一起,是一個值得我們研究的課題。</p><p>  一、 VB讀寫EXCEL表:</p><p>  VB本身提自動化功能可以讀寫EXCEL表,其方法如下:</p><p>  1、在工程中引用Microsoft Excel類型庫:</p><p>  從"工程"菜單中選擇"

16、引用"欄;選擇Microsoft Excel 9.0 Object Library(EXCEL2000),然后選擇"確定"。表示在工程中要引用EXCEL類型庫。</p><p>  2、在通用對象的聲明過程中定義EXCEL對象:</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對象Set xlBook = xlApp.Workbooks.Open("文件名"

18、;) '打開已經(jīng)存在的EXCEL工件簿文件xlApp.Visible = True '設(shè)置EXCEL對象可見(或不可見)Set xlSheet = xlBook.Worksheets("表名") '設(shè)置活動工作表xlSheet.Cells(row, col) =值 '給單元格(row,col)賦值xlSheet.PrintOut '打印工作表xlBook.Close

19、(True) '關(guān)閉工作簿xlApp.Quit '結(jié)束EXCEL對象Set xlApp = Nothing '釋放xlApp對象xlBook.RunAutoMacros (xlAutoOpen) '運行EXCEL啟動宏xlBook.RunAutoMacros (xlAutoClose) '運行EXCEL關(guān)閉宏 </p><p>  4、在運用以上VB命令操作EXCE

20、L表時,除非設(shè)置EXCEL對象不可見,否則VB程序可繼續(xù)執(zhí)行其它操作,也能夠關(guān)閉EXCEL,同時也可對EXCEL進(jìn)行操作。但在EXCEL操作過程中關(guān)閉EXCEL對象時,VB程序無法知道,如果此時使用EXCEL對象,則VB程序會產(chǎn)生自動化錯誤。形成VB程序無法完全控制EXCEL的狀況,使得VB與EXCEL脫節(jié)。</p><p>  二、 EXCEL的宏功能:</p><p>  EXCE

21、L提供一個Visual Basic編輯器,打開Visual Basic編輯器,其中有一工程屬性窗口,點擊右鍵菜單的"插入模塊",則增加一個"模塊1",在此模塊中可以運用Visual Basic語言編寫函數(shù)和過程并稱之為宏。其中,EXCEL有兩個自動宏:一個是啟動宏(Sub Auto_Open()),另一個是關(guān)閉宏(Sub Auto_Close())。它們的特性是:當(dāng)用EXCEL打含有啟動宏的工

22、簿時,就會自動運行啟動宏,同理,當(dāng)關(guān)閉含有關(guān)閉宏的工作簿時就會自動運行關(guān)閉宏。但是通過VB的自動化功能來調(diào)用EXCEL工作表時,啟動宏和關(guān)閉宏不會自動運行,而需要在VB中通過命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 來運行啟動宏和關(guān)閉宏。</p><p>  三、 VB與EXCEL的相互勾通:</p>

23、;<p>  充分利用EXCEL的啟動宏和關(guān)閉宏,可以實現(xiàn)VB與EXCEL的相互勾通,其方法如下:</p><p>  在EXCEL的啟動宏中加入一段程序,其功能是在磁盤中寫入一個標(biāo)志文件,同時在關(guān)閉宏中加入一段刪除此標(biāo)志文件的程序。VB程序在執(zhí)行時通過判斷此標(biāo)志文件存在與否來判斷EXCEL是否打開,如果此標(biāo)志文件存在,表明EXCEL對象正在運行,應(yīng)該禁止其它程序的運行。如果此標(biāo)志文件不存在,表

24、明EXCEL對象已被用戶關(guān)閉,此時如果要使用EXCEL對象運行,必須重新創(chuàng)建EXCEL對象。</p><p><b>  四、舉例:</b></p><p>  1、在VB中,建立一個FORM,在其上放置兩個命令按鈕,將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() '打開EXCEL過程 If Dir("D:\temp\excel.bz&quo

26、t;) = "" Then '判斷EXCEL是否打開  Set xlApp = CreateObject("Excel.Application") '創(chuàng)建EXCEL應(yīng)用類  xlApp.Visible = True '設(shè)置EXCEL可見  Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") 

27、9;打開EXCEL工作簿  Set xlsheet = xlBook.Worksheets(1) '打開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對象 EndEnd Sub</p><p>  2、在D盤根目錄上建立一個名為Temp的子目錄,在Temp目錄下建立一個名為"bb.xls"的EXCEL文件。</p><p>  3、在"bb.xls"中打開Visual Basic編輯器,在工程窗口中點鼠標(biāo)鍵選擇插入模塊,在模塊中輸入入下程序存盤:</p

30、><p>  Sub auto_open() Open "d:\temp\excel.bz" For Output As #1 '寫標(biāo)志文件 Close #1End SubSub auto_close() Kill "d:\temp\excel.bz" '刪除標(biāo)志文件End Sub </p><p>  4、運行VB程序,點擊

31、EXCEL按鈕可以打開EXCEL系統(tǒng),打開EXCEL系統(tǒng)后,VB程序和EXCEL分別屬兩個不同的應(yīng)用系統(tǒng),均可同時進(jìn)行操作,由于系統(tǒng)加了判斷,因此在VB程序中重復(fù)點擊EXCEL按鈕時會提示EXCEL已打開。如果在EXCEL中關(guān)閉EXCEL后再點EXCEL按鈕,則會重新打開EXCEL。而無論EXCEL打開與否,通過VB程序均可關(guān)閉EXCEL。這樣就實現(xiàn)了VB與EXCEL的無縫連接。</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 = "沒有找到相匹

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 = "沒有找到相匹配的信息!"</p><p>  100End Sub</p><p>  Private Sub ComQc_Click()TexDm.Text = &q

39、uot;請在此輸入10位數(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對象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>  ★ 添加子程序的時候,要在括號里面聲明要從主程序引用的變量和對象</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>  '——————————向下為放過區(qū)域——————————————————————&

49、lt;/p><p>  Debug.Print i  '即顯信息        '————放過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>  ★點擊窗口右上角的關(guān)閉 是 “unload” 或 “

53、QueryUnload”事件</p><p>  ★子程序改變來自主程序的變量的值:Private Sub Com1_Click()     dim CfZ as integer     QrCf CfZ     If CfZ = 1 Then   

54、60; MsgBox ("放過原因或報廢原因有重復(fù)!" & vbCrLf & "請查看紅色標(biāo)識......")     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>  運行效果:如果case中Cf=1執(zhí)行,則CfZ的值變?yōu)?,并彈出消息框</p><p>  ★如何判斷字符串為是否為數(shù)字判斷表達(dá)式的運算結(jié)果是否為數(shù)字,返回 Boolean 值(True or False)。

57、</p><p>  描述返回 Boolean 值指明表達(dá)式的值是否為數(shù)字。語法IsNumeric(expression)expression 參數(shù)可以是任意表達(dá)式。</p><p>  說明如果整個 expression 被識別為數(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 "測試"

62、        If txtPassword.Text = "....." Then        txtUserName.Text = "測試"        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>  ★將一個文件復(fù)制到另外一個目錄,并改變名字</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ù)自定義日期/時間格式 </p><p>  ★VB

69、讀取一個文件的創(chuàng)建日期:我看網(wǎng)上找到一個,用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)建時間:"   &   file.DateCreated   &   _             vbLf 

73、60; &   "修改時間:"   &   file.DateLastModified   &   _             vbLf   & 

74、  "訪問時間:"   &   file.DateLastAccessed         另外還有一個問題,就是獲取文件版本,可以使用     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> ?。ㄈ粜枰獎h除指定擴(kuò)展名的文件,將 R1 = FindFirstFile(sPath & "*", Fdata)這一行里面的 “*” 改成 “*.擴(kuò)展名”)(另外有一點,在這個程序里面,文件的創(chuàng)建時間是精確到秒的,你的時間只用了date-10,只有

90、日期沒時間,比如2010-3-10號,只能刪除10號之前的。10號當(dāng)天的刪除不了。)</p><p>  ★VB日期選擇邊框網(wǎng)上有不少做日期選擇框的方法或控件,搞得非常復(fù)雜。</p><p>  其實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對象很方便首先添加“工程-引用”:Microsoft ActiveX Objects 6.0 Librarydim cn as new connectiondim rs as new recordsetcn.open "數(shù)據(jù)庫連接串"set rs=cn.execute("select * from tab1")debug.print rs.fields("字段名

93、")</p><p>  ("數(shù)據(jù)庫連接串"這段內(nèi)容,可以用一個udl文件生成,用記事本創(chuàng)建一個沒有內(nèi)容的擴(kuò)展名為udl文件,雙擊打開,按上邊的提示配置好,再用記事本打開,就可以找到需要的那段字符串了。)</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("登陸時間") = Text1.Textrs("用戶名") = Text2.Textrs.Update</p><p>  rs.Clonecn.CloseEnd Sub</p><p>  ★將用戶名和密碼存于數(shù)據(jù)庫中的數(shù)據(jù)表“用戶設(shè)置”中,下面是密碼驗證過程:&

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 查詢并取值的問題</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 [記錄號]=" & LshCxRs.Open SqlStr, Cn, 1, 3</p><p>  Rs("記錄號") = LshCxRs("錄入時間") = NowRs("檢驗時間") = DTPJyrq.Value</p><p><

107、b>  Rs.update</b></p><p>  ★刪除已有記錄Cn.OpenDim SqlStr As StringSqlStr = "delete from [dbo].[產(chǎn)品質(zhì)檢明細(xì)] where [記錄號]=" & LshCxRs.Open SqlStr, Cn, 1, 3Cn.Close</p><p>  ★SQL復(fù)

108、制記錄INSERT INTO `table` SELECT * FROM `table` WHERE id=1;沒有主鍵時候才可以。。有主鍵時候就要寫上列: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語句查找空值</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") '打開EXCEL

112、工作簿    xlApp.Visible = True '設(shè)置EXCEL不可見    Set xlSheet = xlBook.Worksheets.Add    ActiveSheet.Name = "產(chǎn)品質(zhì)日報表" & Format(Now, "YYYY_MM_DD_HH_MM_SS"

113、;)   '打開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)鍵語句,有了這句控件才能顯示數(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("牌號")    Text1(2).Text = Rs("型號")  

117、;  Text1(3).Text = Rs("單位")    Set DataGrid1.DataSource = Rs   '關(guān)鍵語句,將控件和數(shù)據(jù)集連接起來    'DataGrid1.ClearFields    'DataGrid1.ReBind &

118、#160;  Else    MsgBox ("沒有找到對應(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  沒有 為 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("牌號").Text 'rs1("牌號")    Text1(2).Text = DataGrid1.Columns("型號").Text 'rs1("型號")    Text1(3).Text = DataGrid1.Columns("說明&q

122、uot;).Text 'rs1("說明").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)容有改變的時候都會被激活,所以在查詢結(jié)果顯示出來之前該事件就被激活了,會出現(xiàn)好不到記錄的提示,為了解決這個問題,需要引入一個變量DataBj 來標(biāo)記是否已經(jīng)有查詢結(jié)果顯示在表格中,

124、使當(dāng)表格中有內(nèi)容的時候才執(zhí)行DataGrid1_RowColChange事件中的代碼。</p><p>  ★通過SQL語句刪除表中重復(fù)記錄的方法原理:曬出無重復(fù)的記錄  將數(shù)據(jù)導(dǎo)入到另外一個相同的表中(名字不同),再將無重復(fù)記錄的表的名字改為源表的名字。INSERT INTO DBO.代碼2 ([ID],[JDE代碼],[牌號],[型號],[單位],[說明]) SELECT DISTINCT [I

125、D],[JDE代碼],[牌號],[型號],[單位],[說明] FROM dbo.代碼</p><p>  ★定時任務(wù),使用 Timer控件,在Timer控件的interval屬性中設(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>  這樣就沒問題rs.open sqlstr,conn,3,2 這樣就有問題rs.open sqlstr,conn,1,2 因為conn后第一個數(shù)字是1表示

127、指針只能往前,3表示自由指針 使用RecordCount屬性可確定Recordset對象中記錄的數(shù)目。ADO無法確定記錄數(shù)時,或者如果提供者或游標(biāo)類型不支持RecordCount,則該屬性返回–1。讀已關(guān)閉的Recordset上的RecordCount屬性將產(chǎn)生錯誤。 如果Recordset對象支持近似定位或書簽(即Supports(adApproxPosition)或Supports(adBookmark)各自返回True),不管

128、是否完全填充該值,該值將為Recordset中記錄的精確數(shù)目。如果Recordset對象不支持近似定位,該屬性可能由于必須對所有記錄進(jìn)行檢索和計數(shù)以返回精確RecordCount值而嚴(yán)重消耗資源。 Recordset對象的游標(biāo)類型會影響是否能夠確定記錄的數(shù)目。對僅向前游標(biāo),RecordCount屬性將返回-1,對靜態(tài)或鍵集游標(biāo)返回實際計數(shù),對動態(tài)游標(biāo)取決于數(shù)據(jù)源返回-1或?qū)嶋H計數(shù)。</p><p>  ★關(guān)閉當(dāng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論