一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

vba 連接數(shù)據(jù)庫(kù)(vba中主要提供了3種數(shù)據(jù)庫(kù)訪問接口)

 F2967527 2023-02-20 發(fā)布于北京

今日講解的內(nèi)容為如何建立一個(gè)數(shù)據(jù)庫(kù)的連接,并實(shí)例講解利用連接從數(shù)據(jù)庫(kù)中查到有用的記錄,填在表格中的方法。

我們要先打開一個(gè)工作表,它的A列數(shù)值為要在數(shù)據(jù)庫(kù)中查詢的字段,并把在數(shù)據(jù)庫(kù)中查到此字段的其他內(nèi)容填充到這個(gè)工作表中的B:G列的位置。好我們先看下面的代碼,在代碼的過程中均有詳細(xì)的講解。有的容易些,有的難懂些,不過都沒關(guān)系,有興趣的讀者可以仔細(xì)地琢磨,都是一步一步看過來的。我在學(xué)VBA的時(shí)候,資料還很少很少,有的需要自己的摸索。待這個(gè)平臺(tái)的資料多些了,也希望能有位大俠給出本書,利于大家的學(xué)習(xí)。

1 Dim myData As String, myTable As String

2 Dim wb As Workbook

3 Dim ws As Worksheet

4 Dim i As Long, j As Long

5

6

7 Dim cnn As ADODB.Connection

8 Dim rs As ADODB.Recordset

9 Set wb = ThisWorkbook '指定工作簿

10 Set ws = wb.Sheets("A-RR") '指定工作表名稱

11 Dim PATH

12 PATH = ActiveWorkbook.Path '& "\" '路徑名稱

13 ChDir PATH

14 myData = "D:\RR" & "\myData.mdb" '指定新數(shù)據(jù)庫(kù)名稱(完整路徑)

15 myTable = "RR資料" '指定數(shù)據(jù)庫(kù)的數(shù)據(jù)表名稱

'檢查是否已經(jīng)存在同名數(shù)據(jù)庫(kù)文件

16 If Dir(myData) = "" Then

17 MsgBox (myData & "不存在!")

'不存在的情況下,釋放變量,退出

18 Set wb = Nothing

19 Set ws = Nothing

20 Set rs = Nothing

21

22

23 Set cnn = Nothing

24 End

25 Else

'如果已經(jīng)存在了數(shù)據(jù)庫(kù)文件,就檢查是否存在數(shù)據(jù)表

'建立與數(shù)據(jù)庫(kù)的連接

26 Set cnn = New ADODB.Connection

27 With cnn

28 .Provider = "microsoft.jet.oledb.4.0"

29 .Open myData

30 End With

'開始查詢是否存在該數(shù)據(jù)表

31 Set rs = cnn.OpenSchema(adSchemaTables)

32 Do Until rs.EOF

33 If LCase(rs!table_name) = LCase(myTable) Then GoTo hhh '如果查到則退出循環(huán)

'繼續(xù)查詢

34 rs.MoveNext

35 Loop

'釋放變量,退出(這是沒有查到的情況)

36 Set wb = Nothing

37 Set ws = Nothing

38 Set rs = Nothing

39

40

41 Set cnn = Nothing

42 MsgBox ("不存在此工作表!")

43 End

hhh:

44 End If

'到此是找到了某個(gè)記錄,并打開了數(shù)據(jù)庫(kù)

45 Sheets("A-RR").Select

46 Range("B2:G3000").Clear '做填充數(shù)據(jù)的準(zhǔn)備

47 Set rs = New ADODB.Recordset

48 t = 2

49 Do While Cells(t, 1) <> ""

50 Cells(t, 1).Select

51 Sql = "select * from " & myTable _

52 & " where RR = " & " '" & ws.Cells(t, 1).Value & "'"

53 rs.Open Sql, cnn, adOpenKeyset, adLockOptimistic

54 If rs.RecordCount = 0 Then

'如果數(shù)據(jù)庫(kù)中沒有工作表的某行數(shù)據(jù),就

55 ws.Cells(t, 2).Value = "No Find"

56 ws.Cells(t, 3).Value = "No Find"

57 Else

'如果數(shù)據(jù)庫(kù)中有工作表的某行數(shù)據(jù),就將數(shù)據(jù)進(jìn)行更新

58 ws.Cells(t, 2).Value = rs.Fields(1)

59 ws.Cells(t, 3).Value = rs.Fields(2)

60 End If

61 rs.Close '關(guān)閉,此處的RS必須要關(guān)閉,必須的。

62 t = t + 1

63 Loop

64 MsgBox "完成!", vbInformation + vbOKOnly

'關(guān)閉數(shù)據(jù)庫(kù)及查詢數(shù)據(jù)集

65 cnn.Close

'釋放變量

66 Set wb = Nothing

67 Set ws = Nothing

68 Set rs = Nothing

69 Set myCmd = Nothing

70 Set myCat = Nothing

71 Set cnn = Nothing

看看下面的截圖:

到此這項(xiàng)任務(wù)就完成了,利用VBA控制EXCEL是本平臺(tái)的較高水平的內(nèi)容,但程序的思想、思路和寫函數(shù)是一致的,都要按規(guī)定的線路來進(jìn)行。如果檢測(cè)到?jīng)]有按照自己的設(shè)想來運(yùn)行程序,那是絕對(duì)不可以的。關(guān)注本平臺(tái),會(huì)經(jīng)常有類似大段的代碼共大家參考。當(dāng)然,上述的代碼也是解決這類問題的一個(gè)通用的代碼,讀者可以使用,沒問題。

分享成果,隨喜正能量

Tags:

文章版權(quán)聲明:除非注明,否則均為稻草號(hào)原創(chuàng)文章,轉(zhuǎn)載或復(fù)制請(qǐng)以超鏈接形式并注明出處。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产一区在线免费国产一区| 欧美日韩中国性生活视频| 91欧美亚洲视频在线| 男人把女人操得嗷嗷叫| 亚洲中文字幕在线观看黑人| 国产亚洲精品岁国产微拍精品| 国产又猛又大又长又粗| 国产又色又粗又黄又爽| 国产精品色热综合在线| 激情爱爱一区二区三区| 欧美不卡午夜中文字幕| 亚洲高清一区二区高清| 日本一本不卡免费视频| 国产免费观看一区二区| 欧美一区二区三区高潮菊竹| 国产日韩欧美在线播放| 国产中文字幕一区二区| 中文字幕久热精品视频在线| 亚洲国产成人av毛片国产| 国产精品日韩精品最新| 日韩无套内射免费精品| 丰满人妻少妇精品一区二区三区| 熟女中文字幕一区二区三区| 日韩熟妇人妻一区二区三区| 国产精品一区二区不卡中文| 色婷婷在线视频免费播放| 91精品国产综合久久精品| 亚洲熟女国产熟女二区三区| 丰满熟女少妇一区二区三区| 久久夜色精品国产高清不卡| 在线欧洲免费无线码二区免费| 欧美黑人巨大一区二区三区| 久久精品亚洲精品国产欧美| 国产内射一级二级三级| 欧美熟妇一区二区在线| 狠狠亚洲丁香综合久久| 欧美二区视频在线观看| 成人免费在线视频大香蕉 | 亚洲中文字幕在线乱码av| 日本高清一道一二三区四五区| 日本精品理论在线观看|