設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 13786|回復: 2
打印 上一主題 下一主題

[ADO/DAO] 【新手入門】之十四:淺談ADO之Command(下)

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2014-11-12 10:33:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       了解選擇查詢后,再來看看操作查詢。這里先貼出代碼:
  1. Sub CreateTbl()
  2. Dim cmd As NewADODB.Command
  3. cmd.ActiveConnection= CurrentProject.Connection
  4. cmd.CommandText= "create table 工資表 (工號 longconstraint 工號 primarykey,工資條序號autoincrement(10000,1)," _
  5.                 & "發(fā)放日期 datetime, constraint 日期檢查 check(發(fā)放日期<=date()),工資 currency default 5000)"
  6. cmd.Execute
  7. 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來刪吧:
       把上面的代碼改成:
  1. 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)建一個視圖
  1. Sub crtView()
  2. Dim cmd As New ADODB.Command
  3. cmd.ActiveConnection= CurrentProject.Connection
  4. cmd.CommandText= "create view myView as select 企業(yè)代碼,服務代碼 frommytable"
  5. cmd.Execute
  6. End Sub
復制代碼
      打開視圖并顯示記錄條數(shù)
  1. Sub showview()
  2. Dim rst As New ADODB.Recordset
  3. rst.Open"myview", CurrentProject.Connection, adOpenStatic, adLockOptimistic
  4. MsgBoxrst.RecordCount
  5. End Sub
復制代碼
      創(chuàng)建一個含參數(shù)的存儲過程。
  1. Sub crtpro()
  2. Dim cmd As NewADODB.Command
  3. cmd.ActiveConnection= CurrentProject.Connection
  4. cmd.CommandText= "create procedure mypro(企業(yè)代碼 text) as select 企業(yè)代碼,服務代碼 frommytable where 企業(yè)代碼=@企業(yè)代碼"
  5. cmd.Execute
  6. End Sub
復制代碼
     執(zhí)行存儲過程,輸入?yún)?shù)
  1. Sub showpro()
  2. Dim rst As New ADODB.Recordset
  3. Dim cmd As New ADODB.Command
  4. cmd.ActiveConnection= CurrentProject.Connection
  5. cmd.CommandText= "execute mypro '850225'"
  6. Set rst =cmd.Execute
  7. MsgBox rst(1)
  8. End Sub
復制代碼
       盜夢提出,不能使用Recordcount屬性(詳見:http://m.mzhfr.cn/thread-119047-1-1.html)。測試后發(fā)現(xiàn)確實如此,但還是可以用MoveNext方式的。對于需要列出多項數(shù)據(jù)時,我們可以用Do……Loop來處理。
  1. Sub showpro()
  2. Dim rst As New ADODB.Recordset
  3. Dim cmd As New ADODB.Command
  4. cmd.ActiveConnection = CurrentProject.Connection
  5. cmd.CommandText = "execute mypro 1"
  6. Set rst = cmd.Execute
  7. Do Until rst.EOF
  8. Debug.Print rst(1)
  9.     rst.MoveNext
  10. Loop
  11. 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)

評分

參與人數(shù) 1經(jīng)驗 +12 收起 理由
tmtony + 12

查看全部評分

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖1 訂閱訂閱

點擊這里給我發(fā)消息

2#
發(fā)表于 2014-11-12 10:53:15 | 只看該作者
贊一個,好貼。

點擊這里給我發(fā)消息

3#
發(fā)表于 2016-5-30 23:17:10 | 只看該作者
感謝樓主分享
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-13 02:13 , Processed in 0.119616 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表