今天延續(xù)上一遍的Excel VBA Sql 操作數(shù)據(jù)庫(kù)的課題,說說Excel與Access數(shù)據(jù)庫(kù)是怎么互連,且補(bǔ)充一下sql語(yǔ)句中的增、刪、改的語(yǔ)法構(gòu)造。 首先,我們需要在你寫代碼的工作簿的文件夾下新建一個(gè)Access數(shù)據(jù)庫(kù)文件,并給它起一個(gè)名字,這個(gè)主要是在做連接的時(shí)候需要用到。 再打開新建的這個(gè)Access數(shù)據(jù)庫(kù),新建一個(gè)表--取名為“用戶”,該表用來保存兩個(gè)字段為一組的記錄?!坝脩裘?、“密碼”,兩個(gè)字段存儲(chǔ)的值均為文本類型的數(shù)據(jù)。如下圖: 下面我們就在Excel中分別對(duì)Access數(shù)據(jù)庫(kù)中的用戶表進(jìn)行添加用戶、刪除用戶、及修改用戶的操作。看代碼: 這一整段代碼已經(jīng)包含了增刪改的所有語(yǔ)句及語(yǔ)法,大家在寫代碼的時(shí)候應(yīng)該一個(gè)語(yǔ)句一個(gè)語(yǔ)句寫好之后就執(zhí)行一次cnn.Execute sql語(yǔ)句,分別觀察數(shù)據(jù)庫(kù)中的用戶表的變化,來理解該語(yǔ)句都起到了什么樣的效果。 下面我們一起來看看今天這段代碼涉及到的新知識(shí)點(diǎn)吧: 1、這一次我沒有引用ADO工具,而是直接用后期綁定來達(dá)到前期引用的效果。用后期綁定寫的代碼的兼容性更高 后期綁定的語(yǔ)句: Dim cnn As Object '聲明對(duì)象變量cnn '創(chuàng)建一個(gè)ADO的連接對(duì)象賦值給cnn Set cnn = CreateObject('Adodb.Connection') 2、連接語(yǔ)句對(duì)版本做了判斷,給了不同版本對(duì)應(yīng)不同的連接字符串 語(yǔ)句:注意:代碼截圖中為了能一屏給大家截完整個(gè)圖,所以用了IF的單行寫法,這里我把代碼還原成多行寫法,以便于大家理解。 With cnn '即將獲取到的Excel版本號(hào)轉(zhuǎn)化為數(shù)字后,將其與12進(jìn)行對(duì)比 If Val(Application.Version) < 12 Then '小于12說明為2003及以前版本 .Provider = 'Microsoft.Ace.Oledb.4.0' Else '否則為2007以后版本 .Provider = 'Microsoft.Ace.Oledb.12.0' End If .Open ThisWorkbook.Path & '\DataBase.accdb' End With 連接Access的連接字符串較連接Excel本身的連接字符串要簡(jiǎn)單,大家可以將本篇與上一遍的連接字符串進(jìn)行對(duì)比。 2003版本的Office所建的Access數(shù)據(jù)庫(kù)的后綴也不為accdb,應(yīng)該是mdb,那在給文件名時(shí)注意更改為你自己電腦上的文件后綴。 以上給大家介紹的是連接數(shù)據(jù)庫(kù)所涉及到的新知識(shí)點(diǎn),下面我們分別來看看這幾段關(guān)于增刪改的Sql命令都在數(shù)據(jù)庫(kù)里產(chǎn)生了怎樣的效果: 1、向數(shù)據(jù)庫(kù)中增加數(shù)據(jù)的語(yǔ)法: insert into 表名(字段1,字段2,字段3,.....) values(值1,值2,值3,....) 兩個(gè)注意點(diǎn):1.1)三個(gè)一致:個(gè)數(shù)、類型、順序 1.2)不寫字段列表,表示給每一列添加數(shù)據(jù) sql = 'insert into 用戶(用戶名,密碼) values('媛媛','123')' 運(yùn)行這段代碼之后,用戶表的變化如下,將用戶名為媛媛,密碼為123的用戶信息添加到用戶表中了,注意由于用戶名和密碼兩個(gè)字段在建表時(shí)均被設(shè)置為文本格式的數(shù)值,所以在寫sql語(yǔ)句時(shí)要用單引號(hào)將這兩個(gè)字段所要填的數(shù)據(jù)引起來,不然語(yǔ)句將無法執(zhí)行,程序會(huì)報(bào)錯(cuò)。 下面我們?cè)賮砜纯磗ql = 'insert into 用戶 values('Hunter','147')'執(zhí)行后的效果 注意:我們每執(zhí)行一個(gè)sql語(yǔ)句時(shí),都要將其他的sql語(yǔ)句注釋起來,且要將Access關(guān)閉掉,否則程序可能會(huì)報(bào)錯(cuò),或者永遠(yuǎn)只能執(zhí)行最后一句sql命令。 2.刪除數(shù)據(jù)庫(kù)中的某條數(shù)據(jù)的語(yǔ)法: Delete From 表名 Where 條件(不寫條件會(huì)刪除所有記錄) 我現(xiàn)在要將用戶表中的用戶為Hunter的這條記錄刪除 執(zhí)行該語(yǔ)句:sql = 'Delete From 用戶 Where 用戶名='Hunter''后,再打開數(shù)據(jù)庫(kù),就發(fā)現(xiàn)Hunter這個(gè)用戶已經(jīng)被刪除了。 3.修改數(shù)據(jù)庫(kù)中某條記錄的語(yǔ)法: Update 表名 Set 字段1=值1,字段2=值2,..... where 條件(不寫條件會(huì)修改全部記錄) 我現(xiàn)在要將用戶表中用戶名為媛媛的記錄的用戶名更改為'oo',密碼更改為'888' 執(zhí)行該語(yǔ)句:sql = 'Update 用戶 Set 用戶名='OO',密碼='888' where 用戶名='媛媛''之后,我們可以看到數(shù)據(jù)庫(kù)中的對(duì)應(yīng)記錄已經(jīng)完全按我們的要求做了相應(yīng)的更改了 好了,今天將Excel與Access的互連以及簡(jiǎn)單的操作數(shù)據(jù)庫(kù)的sql語(yǔ)句整理給大家了,如果想實(shí)現(xiàn)更加復(fù)雜的Excel與Access的交互處理,大家需要自己去補(bǔ)充sql語(yǔ)句的知識(shí),這樣才能在以后的編程中更靈活的應(yīng)用哦;有關(guān)查詢語(yǔ)句在上一篇也已經(jīng)給大家介紹過,這里就不過多贅述了 |
|