电竞比分网-中国电竞赛事及体育赛事平台

分享

看實(shí)例學(xué)VFP:同時(shí)向兩個(gè)表中添加記錄

 happyngkmw 2012-09-07

看實(shí)例學(xué)VFP:同時(shí)向兩個(gè)表中添加記錄

時(shí)間:2009-02-28 www. 老馬
-

本文利用看實(shí)例學(xué)VFP:利用多個(gè)表中的字段創(chuàng)建新表這個(gè)實(shí)例中的知識(shí)來制作一個(gè)文本式錄入表單的簡單示例,通過這個(gè)表單可以同時(shí)向“數(shù)據(jù)1”數(shù)據(jù)庫中的“網(wǎng)站信息表”和“附加信息表”這兩個(gè)表中添加記錄,并且對錄入的數(shù)據(jù)可以選擇“保存”、“添加”或“撤消”。這兩個(gè)表的索引字段分別是“編號”和“網(wǎng)站編號”,這兩個(gè)字段的內(nèi)容是完全相同的,只是分別處于兩個(gè)表中,并且兩個(gè)表通過這兩個(gè)字段發(fā)生關(guān)聯(lián)。關(guān)于“數(shù)據(jù)1”數(shù)據(jù)庫的情況已經(jīng)在看實(shí)例學(xué)VFP:示例數(shù)據(jù)庫一文中給出,這里不再詳述。

本例要點(diǎn):

在以前的例子中,我們介紹過可以在“數(shù)據(jù)環(huán)境”中拖動(dòng)一個(gè)表的字段到表單上,系統(tǒng)會(huì)自動(dòng)生成一個(gè)標(biāo)簽及一個(gè)文本框控件。不過本例要求對錄入的數(shù)據(jù)可以選擇“保存”、“添加”或“撤消”等操作,如果也這樣設(shè)計(jì)的話,則錄入的數(shù)據(jù)不管你是否保存了都會(huì)寫入到表中,原因是文本框是從數(shù)據(jù)環(huán)境中拖動(dòng)過來而生成的,它們的數(shù)據(jù)源(ControlSource)已經(jīng)自動(dòng)與表中的字段綁定了。這很明顯與我們的設(shè)計(jì)要求不符。

所以本例在設(shè)計(jì)時(shí)采取從“表單設(shè)計(jì)器”上手工向表單中添加文本框等控件,并且將添加上去的各個(gè)文本框的ControlSource屬性值分別設(shè)置為臨時(shí)表lsb中的字段,在表單的init事件中對“網(wǎng)站信息表”和“附加信息表”進(jìn)行連接查詢并將查詢結(jié)果輸出為臨時(shí)表lsb。這樣表單在啟動(dòng)時(shí)各個(gè)文本框就會(huì)顯示臨時(shí)表lsb當(dāng)前記錄的各個(gè)記錄的值,同時(shí)命令按鍵“保存”和“取消”不可用,單擊“第一條”等記錄移動(dòng)按鈕可以依次顯示lsb表的各條記錄的值,如下圖:

單擊了“添加”按鈕后,這個(gè)按鈕本身及“第一條”~“最后一條”這四個(gè)記錄移動(dòng)按鈕不可用,同時(shí)各個(gè)文本框被清零、等待接收數(shù)據(jù),如下圖:

此時(shí)單擊“取消”按鈕可以撤消此次操作,單擊“保存”按鈕后,則對表單上各個(gè)文本框的值進(jìn)行校驗(yàn),如果都不會(huì)空,才會(huì)依據(jù)表單上文本框的值分別在“網(wǎng)站信息表”和“附加信息表”這兩個(gè)表中添加一條記錄。

制作步驟:

一、新建表單,并將其caption屬性值設(shè)置為“設(shè)計(jì)文本式錄入表單”,AutoCenter屬性值設(shè)置為.t.,width屬性值設(shè)置為375,height屬性值設(shè)置為250,并將表單保存為“設(shè)計(jì)文本式錄入表單.scx”。

補(bǔ)充:建好表單后,需要右擊表單選“數(shù)據(jù)環(huán)境”命令,把“網(wǎng)站信息表”和“附加信息表”添加到數(shù)據(jù)環(huán)境中去(或者不使用數(shù)據(jù)環(huán)境、在表單的init事件中把這兩個(gè)表打開也可以)。寫制作過程時(shí)忘記寫這一點(diǎn),今天補(bǔ)充一下。

二、向表單上添加5個(gè)label控件,將這些label控件的AutoSize屬性值都設(shè)為.t.,caption屬性值分別設(shè)置為“編號”、“網(wǎng)站名稱”、“網(wǎng)站網(wǎng)址”、“網(wǎng)站類型”和“網(wǎng)站描述”。

三、向表單上添加5個(gè)文本框控件(Text1~Text5),將這5個(gè)文本框控件(Text1~Text5)的ControlSource屬性值依次設(shè)置為“l(fā)sb.編號”、“l(fā)sb.網(wǎng)站名稱”、“l(fā)sb.網(wǎng)站網(wǎng)址”、“l(fā)sb.網(wǎng)站類型”和“l(fā)sb.網(wǎng)站描述”。

四、向表單上再添加8個(gè)命令按鈕控件。

五、適當(dāng)調(diào)整各控件的大小及它們在表單上的位置,調(diào)整后的表單設(shè)計(jì)器如下圖:

六、將這8個(gè)命令按鈕控件(command1~command8)的caption屬性值依次設(shè)置為“第一條”、“上一條”、“下一條”、“最后一條”、“添加”、“保存”、“取消”和“退出”。

七、添加事件代碼:

(一)表單的init事件:

select 網(wǎng)站信息表
Select 編號,網(wǎng)站名稱,網(wǎng)站網(wǎng)址,網(wǎng)站類型,網(wǎng)站描述;
 from 網(wǎng)站信息表 Inner Join 附加信息表;
  on 網(wǎng)站信息表.編號= 附加信息表.網(wǎng)站編號 into cursor lsb
thisform.command6.enabled=.f.
thisform.command7.enabled=.f.
thisform.Text1.value=lsb.編號
thisform.Text2.value=lsb.網(wǎng)站名稱
thisform.Text3.value=lsb.網(wǎng)站網(wǎng)址
thisform.Text4.value=lsb.網(wǎng)站類型
thisform.Text5.value=lsb.網(wǎng)站描述

(二)“第一條”按鈕(command1)的click事件:

if bof()=.f.
 go top
endif
thisform.refresh

(三)“上一條”按鈕(command2)的click事件:

if bof()=.f.
 skip -1
endif
thisform.refresh

(四)“下一條”按鈕(command3)的click事件:

if eof()=.f.
  skip
endif
thisform.refresh

(五)“最后一條”按鈕(command4)的click事件:

if eof()=.f.
 go bottom
endif
thisform.refresh

(六)“添加”按鈕(command5)的click事件:

thisform.Text1.ControlSource=""
thisform.Text2.ControlSource=""
thisform.Text3.ControlSource=""
thisform.Text4.ControlSource=""
thisform.Text5.ControlSource=""
thisform.Text1.value=""
thisform.Text2.value=""
thisform.Text3.value=""
thisform.Text4.value=""
thisform.Text5.value=""
this.enabled=.f.
thisform.command1.enabled=.f.
thisform.command2.enabled=.f.
thisform.command3.enabled=.f.
thisform.command4.enabled=.f.
thisform.command6.enabled=.t.
thisform.command7.enabled=.t.

(七)“保存”按鈕(command6)的click事件:

a=alltrim(thisform.Text1.value)
b=alltrim(thisform.Text2.value)
c=alltrim(thisform.Text3.value)
d=alltrim(thisform.Text4.value)
e=alltrim(thisform.Text5.value)
if empty(a).or.empty(b).or.empty(c).or.empty(d).or.empty(e)
   messagebox("請輸入完整信息")
   return
endif
INSERT INTO 網(wǎng)站信息表;
 (編號,網(wǎng)站名稱,網(wǎng)站網(wǎng)址) VALUES(a,b,c)
INSERT INTO 附加信息表;
 (網(wǎng)站編號,網(wǎng)站類型,網(wǎng)站描述) VALUES(a,d,e)
messagebox("保存記錄成功!",64,"系統(tǒng)提示")
this.enabled=.f.
thisform.command7.enabled=.f.
thisform.command1.enabled=.t.
thisform.command2.enabled=.t.
thisform.command3.enabled=.t.
thisform.command4.enabled=.t.
thisform.command5.enabled=.t.
select 網(wǎng)站信息表
Select 編號,網(wǎng)站名稱,網(wǎng)站網(wǎng)址,網(wǎng)站類型,網(wǎng)站描述 from 網(wǎng)站信息表 Inner Join;
 附加信息表 on 網(wǎng)站信息表.編號= 附加信息表.網(wǎng)站編號 into cursor lsb
thisform.Text1.ControlSource="lsb.編號"
thisform.Text2.ControlSource="lsb.網(wǎng)站名稱"
thisform.Text3.ControlSource="lsb.網(wǎng)站網(wǎng)址"
thisform.Text4.ControlSource="lsb.網(wǎng)站類型"
thisform.Text5.ControlSource="lsb.網(wǎng)站描述"
thisform.refresh

(八)“取消”按鈕(command7)的click事件:

this.enabled=.f.
thisform.command6.enabled=.f.
thisform.command1.enabled=.t.
thisform.command2.enabled=.t.
thisform.command3.enabled=.t.
thisform.command4.enabled=.t.
thisform.command5.enabled=.t.
thisform.Text1.ControlSource="lsb.編號"
thisform.Text2.ControlSource="lsb.網(wǎng)站名稱"
thisform.Text3.ControlSource="lsb.網(wǎng)站網(wǎng)址"
thisform.Text4.ControlSource="lsb.網(wǎng)站類型"
thisform.Text5.ControlSource="lsb.網(wǎng)站描述"
thisform.refresh

(九)“退出”按鈕(command8)的click事件:thisform.release

八、運(yùn)行“設(shè)計(jì)文本式錄入表單.scx”。

本例代碼在Win2003+VFP6.0環(huán)境下調(diào)試通過。

查看全套“菜鳥也學(xué)VFP”教程

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多