其中dbgrid1中的datasource屬性設為data1,命令按鈕2,3,4的visible屬性設為false。
三、應用舉例
編寫如下事件過程:
privatesubcmdadd_click()'添加記錄子過程
onerrorgotoerrhandler
withrst
.addnew
fori=0to.fields.count-1'遍歷記錄集中的每個字段
'在輸入框中輸入各字段的數據
.fields(i).value=inputbox
("輸入記錄信息"&vbcr "字段名:" .fields(i).name)
nexti
.update
endwith
data1.refresh
dbgrid1.rebind
errhandler:'錯誤處理
selectcaseerr
case3022,3421
msgbox(error vbcr "輸入無效")
exitsub
caseelse
response=0
exitsub
endselect
endsub
privatesubcmddel_click()'刪除記錄過程
onerrorgotoerrhandler
begintrans'事務處理
withdata1.recordset
if.bofand.eofthenexitsub
'如果沒有記錄,退出過程
.delete'刪除
if.bofand.eofthen
'如果沒有記錄,退出過程
exitsub
elseif.eofthen.movelast
'如果刪除的是最後一條記錄,光標移至最後一記錄
else:.movenext
'移至下一條記錄
endif
endwith
ifmsgbox("確實要刪除這一記錄?",
vbquestion vbyesno)=vbyesthen
committrans'確認
data1.refresh
else
rollback'撤消改動
data1.refresh
endif
errhandler:'錯誤處理
selectcaseerr
case3021'無當前記錄
msgbox("無當前記錄,請選擇要刪除的記錄")
exitsub
caseelse
msgbox(error)
exitsub
endselect
endsub
privatesubcmdend_click()
end'結束應用程序
endsub
privatesubcmdmodify_click()
dbgrid1.allowupdate=true'允許修改
endsub
privatevsubcmdlink_click()
form1.hide
form2.show
endsub
privatesubdbgrid1_aftercolupdate(byvalcolindexasinteger)
'數據修改後觸發該事件
onerrorgotoerr1
data1.refresh
err1:
selectcaseerr
case0
response=0
caseelse
exitsub
endselect
endsub
privatesubdbgrid1_beforecolupdate
(byvalcolindexasinteger,oldvalueasvariant,cancelasinteger)
'數據修改前觸發該事件
onerrorgotoerrhandler:
begintrans
ifmsgbox("確實要修改這一內容?",vbquestion vbyesno)=vbyesthen
committrans
else
rollback
data1.refresh
endif
errhandler:
selectcaseerr
case0
response=0
caseelse
msgbox(error)
exitsub
endselect
endsub
privatesubform_load()
'在窗體裝入時,網格中的數據不可添加,修改
dbgrid1.allowaddnew=false
dbgrid1.allowupdate=false
endsub
privatesubform_resize()
onerrorresumenext
'當窗體調整時會調整網格
dbgrid1.height=me.scaleheight-data1.height-cmddel.height-30
endsub
在工程中添加一個窗體,在窗體上畫6個標簽,1個命令按鈕(標題為“確認”,名稱為cmd確認),3個文本框和1個組合框。
在窗體的聲明部份輸入以下代碼:
'聲明窗體層變量
dimrodbsasdatabase
dimstrdbasstring,strrodbasstring,strcnasstring,strtdfasstring
dimlinktdfnameasstring
編寫如下事件過程:
privatesubcmdOK_click()
onerrorgotoerrhandler:
strdb=text2.text
'本地數據庫名及路徑
linktdfname=text3.text
'本地數據庫中新建的鏈接遠程表的表名
strcn=strrodb'連接字符串
strtdf=combo1.text'指定遠程數據庫中要訪問的表
'調用linktable過程
calllinktable(strdb,strrodb,strcn,strtdf,linktdfname)
'調用rst_display過程
callrst_display(strdb,linktdfname,form1)
form2.hide
form1.show
form1.caption="遠程數據:" strcn "-" strtdf
'顯示“添加”,“刪除”,“修改”控件
form1.cmdadd.visible=true
form1.cmddel.visible=true
form1.cmdmodify.visible=true
errhandler:
selectcaseerr
case0
response=0
caseelse
msgbox(error vbr "重新輸入")
exitsub
endselect
endsub
privatesubcombo1_gotfocus()
strrodb=text1.text'指定遠程數據庫名及路徑
setrodbs=opendatabase(strrodb)'打開遠程數據庫
'刪除combo1中的內容
ifcombo1.listcount>=1then
fori=combo1.listcount-1to0step-1
combo1.removeitemi
nexti
endif
'把數據庫中的表名加到combo1中
fori=0torodbs.tabledefs.count-1
combo1.additemrodbs.tabledefs(i).name
nexti
endsub