了解選擇查詢后,再來看看操作查詢。這里先貼出代碼: - Sub CreateTbl()
- Dim cmd As NewADODB.Command
- cmd.ActiveConnection= CurrentProject.Connection
- cmd.CommandText= "create table 工資表 (工號(hào) longconstraint 工號(hào) primarykey,工資條序號(hào)autoincrement(10000,1)," _
- & "發(fā)放日期 datetime, constraint 日期檢查 check(發(fā)放日期<=date()),工資 currency default 5000)"
- cmd.Execute
- End Sub
復(fù)制代碼 這段創(chuàng)建表的SQL命名不復(fù)雜,主要是創(chuàng)建一個(gè) “工資表”,各字段屬性如下: 工號(hào):長整型,主鍵; 工資條序號(hào),自動(dòng)編號(hào),初始值為10000,每次遞增1; 發(fā)放日期:日期類型,有效性規(guī)則為發(fā)放日期必須不能大于當(dāng)前日期。 工資:貨幣性,默認(rèn)值為5000(工資會(huì)不會(huì)很低?^_^) 在設(shè)計(jì)模式下,我們看不出發(fā)放日期的“有效性規(guī)則”有什么變化。但是輸入數(shù)據(jù)之后就知道,真的被約束了。當(dāng)然,約束不僅僅限于此。以下是部分語法供參考和說明,由于時(shí)間關(guān)系,我并沒有親測,如大家發(fā)現(xiàn)有什么問題,歡迎回帖: 1. 約束級(jí)聯(lián)參考完整性原則: CONSTRAINT nameFOREIGN KEY (column1[,column2[,……]) REFERRENCES foreign-table [(foreign-column1[,foreign-column2[,……])] [ON UPDATE {NO ACTION|CASCADE}][ONUPDATE {NO ACTION|CASCADE}] 說明: A、中括號(hào)內(nèi)的為可選參數(shù),小括號(hào)內(nèi)的為必選參數(shù)。即至少要有一個(gè)主表外鍵,外聯(lián)表則可以不需要對(duì)應(yīng)的連接字段。 B、如果選中NO CASCADE選項(xiàng),相當(dāng)于關(guān)系中的不級(jí)聯(lián),那么一對(duì)多的關(guān)系中,子表并不會(huì)隨主表的更新而更新。同樣地,子表刪除了外鍵(即主表的主鍵)的所有記錄,那么主表所對(duì)應(yīng)主鍵也不會(huì)因此而被刪除。 2. 控制快速外鍵: 語法跟上面的類似,不同的是,需要在“FOREIGN KEY”后面加上“NO INDEX”。 3. 執(zhí)行列字符串壓縮 Columnstring-data-type [(length)] WITH COMPRESSION 事實(shí)上我并不太清楚這個(gè)代碼是用來干嗎的。 接下來,我們?cè)囋噭h掉這個(gè)表怎么樣?右擊\刪除?刪不掉?我再刪?……好了,別試了,用VBA來刪吧: 把上面的代碼改成: - cmd.CommandText = "Drop table 工資表"
復(fù)制代碼 再執(zhí)行一遍試試看?是不是刪掉了? 當(dāng)然,更簡單點(diǎn)的辦法是用Access的DeleteObject宏來刪除(對(duì)應(yīng)的VBA代碼是DoCmd.DeleteObject acTable,"工資表")。 既然Command能夠做這些事情,Connection對(duì)象當(dāng)然也沒問題啦。大家可以試試用Connection對(duì)象來修改下上面的語法,算是課后作業(yè)吧。^_^
視圖和存儲(chǔ)過程。 這不是SQL Server里的對(duì)象嗎?Access里什么時(shí)候有這些對(duì)象了?Roych,你是不是搞錯(cuò)了?還是我看錯(cuò)了? 是的,你沒看錯(cuò),我也沒搞錯(cuò)。Access里確實(shí)沒有這些對(duì)象,但是ADO卻可以創(chuàng)建它們。雖然在Access里看不見它們,——準(zhǔn)確點(diǎn)說,應(yīng)該是可以看見,只是它們都長成了查詢的樣子,以至于我們認(rèn)不出來了,F(xiàn)在,我們就來見識(shí)一下吧: ‘ 創(chuàng)建一個(gè)視圖 - Sub crtView()
- Dim cmd As New ADODB.Command
- cmd.ActiveConnection= CurrentProject.Connection
- cmd.CommandText= "create view myView as select 企業(yè)代碼,服務(wù)代碼 frommytable"
- cmd.Execute
- End Sub
復(fù)制代碼 打開視圖并顯示記錄條數(shù) - Sub showview()
- Dim rst As New ADODB.Recordset
- rst.Open"myview", CurrentProject.Connection, adOpenStatic, adLockOptimistic
- MsgBoxrst.RecordCount
- End Sub
復(fù)制代碼 創(chuàng)建一個(gè)含參數(shù)的存儲(chǔ)過程。 - Sub crtpro()
- Dim cmd As NewADODB.Command
- cmd.ActiveConnection= CurrentProject.Connection
- cmd.CommandText= "create procedure mypro(企業(yè)代碼 text) as select 企業(yè)代碼,服務(wù)代碼 frommytable where 企業(yè)代碼=@企業(yè)代碼"
- cmd.Execute
- End Sub
復(fù)制代碼 執(zhí)行存儲(chǔ)過程,輸入?yún)?shù) - Sub showpro()
- Dim rst As New ADODB.Recordset
- Dim cmd As New ADODB.Command
- cmd.ActiveConnection= CurrentProject.Connection
- cmd.CommandText= "execute mypro '850225'"
- Set rst =cmd.Execute
- MsgBox rst(1)
- End Sub
復(fù)制代碼 盜夢(mèng)提出,不能使用Recordcount屬性(詳見:http://m.mzhfr.cn/thread-119047-1-1.html)。測試后發(fā)現(xiàn)確實(shí)如此,但還是可以用MoveNext方式的。對(duì)于需要列出多項(xiàng)數(shù)據(jù)時(shí),我們可以用Do……Loop來處理。- Sub showpro()
- Dim rst As New ADODB.Recordset
- Dim cmd As New ADODB.Command
- cmd.ActiveConnection = CurrentProject.Connection
- cmd.CommandText = "execute mypro 1"
- Set rst = cmd.Execute
- Do Until rst.EOF
- Debug.Print rst(1)
- rst.MoveNext
- Loop
- End Sub
復(fù)制代碼 【新手入門】之一:If分支語句
【新手入門】之二:分支語句總結(jié)
【新手入門】之三:循環(huán)語句For
【新手入門】之四:循環(huán)語句Do和死循環(huán)
【新手入門】之五:公共變量與傳址過程、傳值過程
【新手入門】之六:“悲歡離合總無情”——淺談Split和Join
【新手入門】之七:嵌套與并列——再談If流程問題
【新手入門】之八:“連就連”——淺談“&”和“+”連接符的區(qū)別
【新手入門】之九:從百錢百雞談起——淺談“規(guī)劃求解”兼答lingjiang問
【新手入門】之十:書到用時(shí)方恨少——自定義菜單(Access 2003)的制作
【新手入門】之十一:淺談ADO之序言
【新手入門】之十二:淺談ADO之Connection
【新手入門】之十三:淺談ADO之Conmmand(上)
【新手入門】之十四:淺談ADO之Command(下)
【新手入門】之十五:淺談ADO之Recordset(上)
【新手入門】之十六:淺談ADO之Recordset(下)
【新手入門】之十七:淺談列表框的使用
【新手入門】之十八:雙擊列表框修改數(shù)據(jù)
【新手入門】之十九:從“書與女友恕不外借”談起——淺談“Bookmark”的使用
【新手入門】之二十:“書與書簽”——bookmark屬性答疑
【新手入門】之二十一:記錄集的“凌遲”——逐條導(dǎo)出記錄集
【新手進(jìn)階】之一:基礎(chǔ)算法(一)
【新手進(jìn)階】之二:基礎(chǔ)算法(二)
【新手進(jìn)階】之三:基礎(chǔ)算法(三)
【新手進(jìn)階】之四:基礎(chǔ)算法(四)
【新手進(jìn)階】之五:排序搜索(一)
【新手進(jìn)階】之六:排序搜索(二)
【新手進(jìn)階】之七:遞歸算法
【新手進(jìn)階】之八:冒泡排序
【新手進(jìn)階】之九:淺談不綁定數(shù)據(jù)源操作記錄
【新手進(jìn)階】之十:工作日的計(jì)算
【新手進(jìn)階】之十一:“庖丁解牛”和“紀(jì)昌學(xué)射”——淺談表格式文本數(shù)據(jù)的導(dǎo)入
【新手進(jìn)階】之十二:從四腳騰空的奔馬談起——原來界面可以這樣設(shè)計(jì)
【新手進(jìn)階】之十三:Outlook風(fēng)格導(dǎo)航界面
【新手進(jìn)階】之十四:倉庫管理系統(tǒng) |