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