第一篇:VF電子教案(表單練習)
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(1)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
一、與表無關的表單設計(與計時器無關)1.要求:(1)編制一個按鈕組調色板
(2)當用戶按了命令按鈕組中的某個按鈕后,表單的背景色就會變為按鈕指定的對應顏色。
? 命令按鈕組Commandgroup1的Click事件代碼:
do case
case this.value=1 thisform.backcolor=rgb(225,0,0)case this.value=2 thisform.backcolor=rgb(0,255,0)case this.value=3 thisform.backcolor=rgb(0,0,255)case this.value=4 thisform.backcolor=rgb(0,0,0)case this.value=5 thisform.backcolor=rgb(225,255,255)endcase thisform.refresh
2.要求:(1)編制一個按鈕組調色板
(2)當用戶按了命令按鈕組中的某個按鈕后,命令按鈕組的背景色就會變為按鈕指定的對應顏色。(注意與上一題比較,14是設置表單的背景色,本題是設置命令按鈕組的背景色。
? 命令按鈕組Commandgroup1的Click事件代碼:
do case
case this.value=1 this.backcolor=rgb(225,0,0)case this.value=2 this.backcolor=rgb(0,255,0)case this.value=3 this.backcolor=rgb(0,0,255)case this.value=4 this.backcolor=rgb(0,0,0)case this.value=5 this.backcolor=rgb(225,255,255)endcase thisform.refresh
3.要求:(1)編制一個選項按鈕組調色板
(2)當用戶按了某個選項按鈕后,表單的背景顏色就會變為按鈕指定的對應顏色。
? 選項按鈕組Optiongroup1的Click事件代碼:
do case
case this.value=1
thisform.backcolor=rgb(255,0,0)case this.value=2
thisform.backcolor=rgb(0,255,0)case this.value=3 教學時間約
****年**月**日
總第節
審批簽字:
thisform.backcolor=rgb(0,0,255)case this.value=4
thisform.backcolor=rgb(0,0,0)case this.value=5
thisform.backcolor=rgb(255,255,255)endcase ? 如果是設置選項按鈕組的背景色,如下圖
則顏色設置語句為:thisform.optiongroup1.backcolor=rgb(255,0,0)4.要求:(1)編制一個“選頁調色板”表單
(2)當用戶按了某頁后,頁框的背景色就會變成指定的對應顏色。
? 選項按鈕組Pageframe1的Click事件代碼:
do case case this.activepage=1
this.page1.backcolor=rgb(255,0,0)case this.activepage=2
this.page2.backcolor=rgb(0,255,0)case this.activepage=3
this.page3.backcolor=rgb(0,0,255)case this.activepage=4
this.page4.backcolor=rgb(0,0,0)case this.activepage=5
this.page5.backcolor=rgb(255,255,255)endcase thisform.refresh
5.要求:(1)編制一個表單完成口令判定功能;(2)用戶從鍵盤輸入口令時,表單的顯示控件以“*”代替具體內容;(3)系統的口令存放在表文件“學生.dbf”的姓名字段中,要求完全匹配;(4)輸入口令后,按回車,將自動在表單上顯示“正確”或“錯誤”信息。
***text1的Valid事件代碼:
loca for alltrim(this.value)=alltrim(姓名)if found()
thisform.label2.caption=”正確!” else
thisform.label2.caption=”錯誤!” endif select 學生
6.要求:編制一個人工翻動日歷牌,界面窗口中顯示當前日期,但是可以通過界面提供的微調按鈕任意地向前或向后翻動日期。
? Text1的dateformat屬性設為“14-漢語” ? 微調Spinner1的Downclick事件代碼:
thisform.text1.value=thisform.text1.value-1 thisform.refresh ? 微調Spnnier1的Upclick事件代碼:
thisform.text1.value=thisform.text1.value+1 thisform.refresh
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(2)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
7.要求(1)設計一個表單,接受用戶輸入的數字,生成相應的矩陣
(2)文本框內輸入一個小于等于10的數字,生成一個相應的對稱矩陣,且這個矩陣的對角線的數字全部為0,其他的數字為1。
? “顯示”按鈕Command1的click事件的代碼:
n=val(thisform.text1.value)s=“" for i=1 to n
for j=1 to n
if j=i or j+i=n+1
s=s+”0“+space(2)
else
s=s+”1“+space(2)
endif
endfor
s=s+chr(13)&&每N個字符加一個回車鍵,所以在內循環結束時執行該語句 endfor thisform.edit1.value=s thisform.refresh
8、要求:按“開始”按鈕,在編輯框中顯示九九乘法口訣表。
**表單form1的init事件代碼: public c,m store “” to c,m **“開始”按鈕的click事件 m=”*”
for a=1 to 9
m=m+str(a,4)endfor for I=1 to 9
c=c+str(I,1)for j=1 to I
c=c+str(I*j,4)endfor c=c+chr(13)endfor thisfom.edit1.value=m+c thisform.refresh
9、要求:在文本框中輸入一個起始數,在編輯框中顯示20個從起始位置開始并且是3的倍數的整數,且這20個數字的個位數都是3,利用標簽輸出這20個數的和。教學時間約
****年**月**日
總第節
審批簽字:
***文本框text1的valid事件代碼: public s j=1 I=val(alltrim(thisform.text1.value))S=0 Do while j<=20
If I%3=0 and mod(I,10)=3 J=j+1 S=s+I Thisform.edit1.value=thisform.edit1.value+str(I,10)
Endif
I=I+1 Enddo Thisform.refresh
***command1的click事件代碼:
thisform.label2.caption=”這組數字的和=”+str(s,10)thisform.refresh
10、要求:(1)在文本框text1中輸入任意一個100以內的正整數;(2)將所有300以內的能被該整數整除的數顯示在編輯框中;(3)將所在這些數的和顯示在text2中;(4)按“清除”按鈕時,將文本框及編輯框清空。
**表單form1的init事件代碼: thisform.text1.value=0 thisform.text1.setfocus thisform.text2.value=0 ***文本框text1的valid事件代碼: for I=1 to 300
if mod(I,thisform.text1.value)=0 thisform.edit1.value=thisform.edit1.value+str(I,5)+chr(13)thisform.text2.value=thisform.text2.value+i
endif endfor ***“清除”按鈕的click事件代碼: thisform.text1.value=0 thisform.text2.value=0 thisform.edit1.value=”” thisform.text1.setfocus
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(3)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
要求:按“開始”按鈕,在編輯框中顯示九九乘法口訣表。**表單form1的init事件代碼: public c,m store “” to c,m **“開始”按鈕的click事件 m=”*” for a=1 to 9
m=m+str(a,4)endfor for I=1 to 9
c=c+str(I,1)for j=1 to I
c=c+str(I*j,4)endfor c=c+chr(13)endfor thisfom.edit1.value=m+c thisform.refresh
(二)目標展示:表單的操作與命令
(三)導學達標:
11、要求:按“開始”按鈕,在列表框中顯示2000-2100年之間所有的閏年。
**“開始”按鈕的click事件代碼: thisform.list1.clear for n=2000 to 2100
if n%4=0 if n%100<>0 or n%400=0
y=1 else
y=0 endif else y=0
endif if y=1
thisform.list1.additem(alltrim(str(n)))endif endfor
12.要求:(1)編制一個小型文本編輯器,界面見下圖;(2)文字信息從鍵盤輸入至edit框;(3)三個單選按鈕分別用于設置“宋體”、“黑體”和“隸書”;(4)三個check按鈕用設置字體的“傾斜”、“加粗”和“下劃線”;(5)字號用微調控件實現 教學時間約
****年**月**日
總第節
審批簽字:
***optiongroup1的click事件代碼: do case
case this.value=1 thisform.text1.fontname=”宋體”
case this.value=2 thisform.text1.fontname=”楷體”
case this.value=3
thisform.text1.fontname=”隸書” endcase ***check1的click事件代碼: if this.value=1
thisform.text1.fontbold=.t.else
thisform.text1.fontbold=.f.endif ***check2,3的代碼類似于check1 ***spinner1的upclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize-1 ***spinner1的downclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize+1 13.要求:(1)在表單中的三個文本框中分別輸入3個數,判別是否能形成三角形,如果是三角形,求出此三角形的面積。(2)判斷是否是三角形,可利用:a+b>c,且c>0;a+c>b,且b>0;b+c>a,且a>0
***判斷計算按鈕command1的click事件代碼: a=val(thisform.text1.value)b=val(thisform.text2.value)c=val(thisform.text3.value)if(a+b>c and c>0)or(a+c>b and b>0)or(b+c>a and a>0)
s=(a+b+c)/2
area=sqrt(s*(s-a)*(s-b)*(s-c))endif thisform.label2.caption=”能構成三角形,面積等于:” +str(atea)14.建立一個如圖所示的表單
? 選項按鈕組Optiongroup1的Click事件代碼:
do case
case this.value=1
create
case this.value=2 create form case this.value=3
modify command endcase
(四)小結 【教學后記】 教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(4)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
二、與表無關的表單設計(計時器類表單設計)
15.要求:編制一個信息顯示(時鐘)的界面,顯示當前時間(每秒動態顯示跳動一次)(2)并將表單的背景顏色設置為藍、綠色自動變換(與時間同步切換)
? Timer1的Timer事件代碼:
s=substr(time(),1,2)f=substr(time(),4,2)m=substr(time(),7,2)mn=val(m)if int(mn/2)=mn/2
thisform.backcolor=rgb(0,0,255)else
thisform.backcolor=rgb(0,255,0)
endif thisform.text1.value=time()16.要求:(1)編制一個表單完成數字時鐘顯示功能(2)表單將自動以1秒為間隔動態顯示系統時間(3)時、分、秒要求用漢字說明
? 文本框Text1的背景色Backcolor為RGB(255,255,255);FONTNAME為“隸書”。? 時鐘控件Timer1的Timer事件代碼:
s=substr(time(),1,2)f=substr(time(),4,2)m=substr(time(),7,2)thisform.text1.value=s+”時“+f+'分'+m+'秒'
thisform.refresh 17.要求:(1)編制一個表單完成計時器計數顯示功能(2)表單初始顯示狀態為全零“00:00:00”
(3)按“計數”按鈕,將自動以秒為單位從零開始計數(設:時的計數屬性名為S,分的計數屬性名為F,秒的計數屬性名為M。)并在表單上動態顯示。按“停止”按鈕將顯示最后一刻的計數時間。
? 創建1個新建屬性,clocknum初值設為0 ? 表單的form1的init事件代碼:
thisform.timer1.enabled=.f.thisform.text1.value=”00:00:00“ thisform.refresh ? “計數”按鈕command1的click事件代碼: thisform.timer1.enabled=.t.? “停止”按鈕command2的click事件代碼: thisform.timer1.enabled=.f.? 時鐘控件timer1的timer事件代碼:
js=thisform.clocknum s=int(js/3600)f=int(js/60)m=js%60 s1=iif(s<10,'0'+str(s,1),str(s,2))f1=iif(f<10,'0'+str(f,1),str(f,2))
教學時間約
****年**月**日
總第節
審批簽字:
m1=iif(m<10,'0'+str(m,1),str(m,2))thisform.text1.value=s1+”:“+f1+”:“+m1 thisform.clocknum=thisform.clocknum+1 thisform.refresh 18.要求:(1)“日期”“星期”“時鐘”標簽上的文本能自動換行,自動調整大小,背景透明;(2)時鐘每1秒種跳一次
? 時鐘控件Timer1的Timer事件代碼:
y=str(year(date()),4)m=str(month(date()),2)d=str(day(date()),2)thisform.text1.value=y+”年“+m+”月“+d+”日“ c=”日一二三四五六“ n=dow(date())w=”星期“+substr(c,2*n-1,2)+”(“+cdow(date())+”)“ thisform.text2.value=w thisform.text3.value=time()19.要求:(1)編制一個表單完成文字水平動態移動操縱的表單;(2)文字信息(縱向)初始顯示位置在表單的左邊,表單執行后,每間隔20毫秒,文字會自動以間隔加1的幅度逐步向表單右邊移動,直到文字到達表單最右邊緣;(3)然后,每間隔20毫秒文字會自動以間隔加1的幅度逐步向表單左邊移動,直到文字回復到初始位置;(4)整個過程不間斷地來回移動
? 新建表單屬性:right ? 表單的Form1的Init事件代碼:
thisform.timer1.interval=20 ? 時鐘控件Timer1的Timer事件代碼:
IF thisform.label1.Left=0
thisform.right=.f.endif if thisform.label1.left+thisform.label1.width=thisform.width
thisform.right=.t.ENDIF IF thisform.right
thisform.label1.Left=thisform.label1.Left-1 ELSE
thisform.label1.Left=thisform.label1.Left+1 ENDIF thisform.refresh 20.編制一個日歷時鐘表單,界面如圖所示.要求:(1)表單中的日歷是當前日期,時鐘每秒跳動一次;(2)單擊微調控件的前翻后翻按鈕,日期與星期隨之變化。
***表單Form1的init事件代碼: thisform.text1.value=date()w=iif(dow(date())>1,dow(date())-1,7)thisform.text2.value=”星期”+substr(“一二三四五六日”,2*w-1,2)+”(“+cdow(date())+”)” thisform.text3.value=time()thisform.spinner1.setfocus ***spinner1的upclick事件代碼:
thisform.text1.value=thisform.text1.value+1 w=iif(dow(thisform.text1.value)>1,dow(thisform.text1.value)-1,7)thisform.text2.value=”星期”+substr(“一二三四五日”,2*w-1,2)+”(“+cdow(thisform.text1.value)+”)” ***spinner1的downclick事件代碼:
thisform.text1.value=thisform.text1.value-1 w=iif(dow(thisform.text1.value)>1,dow(thisform.text1.value)-1,7)thisform.text2.value=”星期”+substr(“一二三四五日”,2*w-1,2)+”(“+cdow(thisform.text1.value)+”)” ***timer1 的timer事件代碼:
thisform.text3.value=time()
(四)小結【教學后記】
六
六教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(5)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
21.要求:(1)編制一個表單完成文字動態縮放操縱的表單;(2)文字信息初始的位置在表單的正中央,表單執行后,第間隔20毫秒,文字自動以字號加1的幅度逐步向周邊延伸變大,直到文字充滿整個表單;(3)然后每間隔20毫秒,文字會自動以字號加1的幅度逐步向中lkd回縮變小,直到文字復原為初始的狀態;(4)整個過程不間斷地縮放(最小字號為4,最大學號為52)
.****新建表單屬性change ****表單的Form1的Init事件代碼: thisform.change=0 ****時鐘控件Timer1的Timer事件代碼: if thisform.label1.fontsize=52
thisform.change=1 endif if thisform.label1.fontsize=4
thisform.change=0 endif if thisform.change=0 thisform.label1.fontsize=thisform.label1.fontsize+1 else
thisform.label1.fontsize=thisform.label1.fontsize-1 endif thisform.refresh
三、與表相關的表單設計(單表)
1.要求:(1)編制一個表單完成表文件“學生.dbf”內容的只讀瀏覽顯示功能;(如圖1)(2)表單初始顯示內容為表文件“學生.dbf”內容的首記錄;
(3)表單內容將以10秒為間隔自動刷新,即自動向后翻記錄,當翻至表底時,瘵自動回到首記錄循環翻動。
? 表單的Form1的Init事件代碼:
THIS.SETALL(”READONLY“,.T.,”TEXTBOX“)GO TOP THISFORM.REFRESH ? 時鐘控件Timer1的Timer事件代碼: SKIP IF EOF()
GO TOP ENDIF THISFORM.REFRESH
2.要求:(1)編制一個表單完成表文件“學生.dbf“內容的只讀瀏覽顯示功能(如圖2)(2)表單初始顯示內容為表文件“學生.dbf”的首記錄(3)當按“前翻”、“后翻”、“首記錄”、“末記錄”按鈕時,表單將自動顯示相應記錄的內容(4)當翻至表頭或表底時,將自動設置相應按鈕不可訪問。教學時間約
****年**月**日
總第節
審批簽字:
? 表單的Form1的Init事件代碼:
THIS.SETALL(”READONLY“,.T.,”TEXTBOX“)Sele 學生 GO TOP THISFORM.REFRESH ? “首記錄”按鈕Command1的Click事件代碼:
go top thisform.command2.enabled=.t.thisform.command3.enabled=.t.thisform.command4.enabled=.t.thisform.command1.enabled=.f.thisform.refresh ? “前翻”按鈕Command2的Click事件代碼:
skip-1 if bof()thisform.command1.enabled=.f.this.enabled=.f.endif thisform.command3.enabled=.t.thisform.command4.enabled=.t.thisform.refresh
? “后翻”按鈕Command3的Click事件代碼:
skip if eof()thisform.command3.enabled=.f.thisform.command4.enabled=.f.endif thisform.command1.enabled=.t.thisform.command2.enabled=.t.thisform.refresh
? “末記錄”按鈕Command4的Click事件代碼: go bottom thisform.command1.enabled=.t.thisform.command2.enabled=.t.thisform.command3.enabled=.t.thisform.command4.enabled=.f.thisform.refresh 3.要求:(1)編制“學生“表信息查詢界面
(2)查詢與用戶指定的學生姓名相匹配的記錄,并顯示指定學生的所有信息。
? ? ?
?
List1的Rowsourcetype為“6-字段”,Rowsource為“學生.姓名”;文本框Text1~Text5的數據源屬性分別為學生表中對應字段 所有文本框Text的ReadOnly屬性為“.T.”; 表單的Form1的Init事件代碼: use 學生
thisform.setall(”visible“,.f.,”textbox“)thisform.setall(”visible“,.f.,”label“)thisform.label1.visible=.t.thisform.refresh 列表框List1的Interactivechange事件代碼: thisform.setall(”visible“,.t.)thisform.refresh
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(6)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
4.要求:(1)編制“學生表”信息查詢界面(2)顯示指定學生的所有信息。
? ? ?
?
Combo1的Rowsourcetype為“6-字段”,Rowsource為“學生.姓名”;文本框Text1~Text5的數據源屬性分別為學生表中對應字段 所有文本框Text的ReadOnly屬性為“.T.”; 表單的Form1的Init事件代碼: use 學生
thisform.setall(”visible“,.f.,”textbox“)thisform.setall(”visible“,.f.,”label“)thisform.label1.visible=.t.thisform.refresh 組合框Combo1的Interactivechange事件代碼: thisform.setall(”visible“,.t.)thisform.refresh
5.要求:編制“學生”表信息查詢界面,查詢與用戶輸入的學生學號相匹配的記錄,并顯示指定學生的所有信息。
? Label3、Label4、Label5、Label6的Caption屬性分別設置為“姓名:”、“性別:”、“出生年月:”、“獎學金:”,并設置所有文本框的數據源屬性為學生表中的對應字段 ? 標簽Label2的Forecolor屬性為“255,255,255”
? 除學號文本框,所有文本框Text的ReadOnly屬性為“.T.”; ? 表單的Form1的Init事件代碼:
use 學生
thisform.setall(”visible“,.f.)thisform.label1.visible=.t.thisform.text1.visible=.t.? 文本框Text1的Valid事件代碼:
loca for alltrim(學號)=alltrim(this.value)if found()
thisform.label2.caption=”“
thisform.setall(”visible“,.t.)else
thisform.setall(”visible“,.f.)
thisform.label1.visible=.t.thisform.text1.visible=.t.thisform.label2.visible=.t.thisform.label2.caption=”您所指定的學生并不存在!“ endif thisform.refresh
6.要求:(1)編制一個界面程序,實現將用戶指定的表文件的字段名列表顯示(2)系統自動查詢用戶指定的表文件是否存在,存在則列表顯示指定表文件的所有字段名信息,否則給出信息提示框 教學時間約
****年**月**日
總第節
審批簽字:
? Form1的Init事件的代碼:
Thisform.label2.visible=.f.Thisform.list1.visible=.f.? Text1的Valid事件的代碼
fn=alltrim(this.value)+ ”.dbf“ if file(fn)thisform.setall(”visible“,.t.)thisform.list1.clear
use(fn)for i=1 to fcount()
thisform.list1.additem(field(i))endfor else Thisform.label2.visible=.f.Thisform.list1.visible=.f.messagebox(”指定的表文件不存在!“,0+64, ”表文件存在判斷“)endif thisform.refresh
7.編制一個表單完成學生成績信息查詢顯示功能(界面如圖所示)。要求(1)當輸入學生 9.要求:(1)編制一個表單完成表文件“學生.dbf”內容的查詢顯示功能(2)當用戶在組合框(下拉列表)選擇班級(學號的左三位)后,表單將自動顯示對應班級的獎學金總額
(3)按“退出”按鈕時,自動關閉表單。
? 表單Form1的Init事件代碼:
sele 學生
index on left(學號,3)to xh unique scan thisform.combo1.additem(left(學號,3))endscan ? 組合框Combo1的Valid事件代碼:
set talk off Sum 獎學金 to jxj for left(學號,3)=this.value Thisform.twxt1.value=jsj ? “退出”按鈕Command1的Click事件代碼:
thisform.release 10.要求:(1)編制一個表單完成表文件“學生.dbf”“成績.dbf”內容的查詢顯示功能(2)當用戶在組合框(下拉列表)選擇班級(學號的左三位)后,表單將自動顯示對應班級的所有學生的總平均成績
(3)按“退出”按鈕時,自動關閉表單。
? 表單Form1的Init事件代碼:
Set talk off index on left(學號,3)to xh unique scan
thisform.combo1.additem(left(學號,3))endscan set index to ? 組合框combo1的Valid事件代碼:
set talk off average成績 to cj for left(學號,3)=this.value thisform.text1.value=cj ? “退出”按鈕Command1的Click事件代碼: thisform.release
(四)小結 【教學后記】 教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(7)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
11.編制一個表單完成數據轉移操作功能
? 命令按鈕“添加一項”command1的click事件代碼:
thisform.list2.additem(thisform.list1.value)thisform.list1.removeitem(thisform.list1.listindex)&&“添加一項”將list1內容移到list2,即list1的內容減少一項(removeitem),list2的內容增加一項(additem)。thisform.refresh ? 命令按鈕“全部添加”command2的click事件代碼:
thisform.list1.clear thisform.list2.clear scan thisform.list2.additem(姓名)endscan &&“全部添加”將list1內容全部移到list2,即list1全部清空(clear),list2內容為學生表的“姓名”。thisform.refresh ? 命令按鈕“移去一項”command3的click事件: thisform.list1.additem(thisform.list2.value)thisform.list2.removeitem(thisform.list2.listindex)&&“移去一項”將list2的內容移到list1,list2減少一項(removetiem),list1增加一項(additem)。thisform.refresh ? 命令按鈕“全部移去”command4 的click事件: thisform.list2.clear thisform.list1.clear scan thisform.list1.additem(姓名)endscan &&“全部移去”將list2內容全部移到list1,即list2全部清空(clear),list1內容為學生表的“姓名”。
thisform.refresh
12.要求:(1)編制一個列表框數據轉移操作表單;(2)當在左邊顯示學生姓名的窗口選擇某個學生后,單擊“選擇一項”按鈕,左邊的列表中的所選中的單項信息將自動轉移到右邊的列表框中;(3)當在右邊顯示學生姓名的窗口選擇某個學生后,單擊“退還一項”按鈕,右邊的列表中選中的單項信息將自動轉移到左邊的列表框中。
*****表單Form1的init事件代碼: 教學時間約
****年**月**日
總第節
審批簽字:
this.list2.rowsourcetype=0 this.list2.rowsource=” this.list12.sorted=.t.this.list1.rowsourcetype=0 this.list1.rowsource=”” use 學生 scan
this.list1.additem(姓名)endscan *****命令按鈕”選擇一項”command1的click事件代碼: thisform.list2.additem(thisform.list1.value)thisform.list1.removeitem(thisform.list1.listindex)thisform.refresh *****命令按鈕”退還一項”command2的click事件代碼: thisform.list1.additem(thisform.list2.value)thisform.list2.removeitem(thisform.list2.listindex)thisform.refresh
13.要求:在文本框中輸入一個工資金額數,從數據表文件gzb.dbf(工資表)中查找高于此工資數男女人數,利用標簽輸出統計結果。
*****統計按鈕command1的click事件代碼: select gzb count to x for 工資>val(thisfom.text1.value)and 性別=.t.count to y for 工資>val(thisform.text1.value)and 性別=.f.thisform.label2.caption=”工資超過”+thisform.text1.value+”的男職工人數為:”+str(x,4)thisform.label3.caption=”工資超過”+thisform.text1.value+”的女職工人數為:”+str(y,4)14.四、與表相關的表單設計(多表)
15.要求:(1)編制一個表單完成表文件“課程.dbf”“成績.dbf”內容的查詢顯示功能
(2)當用戶在組合框選擇課程名后,表單將自動顯示對應課程的所有學生的總平均成績
(3)按“退出”按鈕時,自動關閉表單。
? 組合框Combo1的RowSouceType屬性為“6-字段”,RowSouce屬性為“課程.課程名”。? 組合框Combo1的Valid事件代碼:
set talk off select 課程 kch=課程號 select 成績
average 成績 to cj for 課程號=kch thisform.text1.value=cj ? “退出”按鈕Command1的Click事件代碼:
thisform.release
(四)小結 【教學后記】
教學時間約
****年**月**日
總第節
審批簽字:
【課題】表單練習(8)
本課(章、節)共 2 課時,本課時為第1、2 課時,課的類型:實習課 【教學目標】熟悉表單的操作與命令 【教學重點】表單的操作與命令 【教學難點】表單的操作與命令 【教學方法】講授法、實驗法 【教學過程及板書設計】
(一)前提測評:
(二)目標展示:表單的操作與命令
(三)導學達標:
16.要求:(1)編制一個表單完成表文件“學生.dbf”“成績.dbf”內容的查詢顯示功能(2)當用戶在組合框(下拉列表)選擇姓名后,表單將自動顯示對應學生的平均成績(3)按“退出”按鈕時,自動關閉表單。
? 組合框Combo1的RowSouceType屬性為“6-字段”,RowSouce屬性為“學生.姓名”。? 組合框Combo1的Interactivepage事件代碼:
set talk off select 學生 xh=學號 select 成績
average 成績 to cj for 學號=xh thisform.text1.value=cj ? “退出”按鈕Command1的Click事件代碼:
thisform.release
17.要求:(1)編制一個表單完成表文件“學生.dbf”、“成績.dbf”、“課程.dbf”內容的編輯瀏覽顯示功能
(2)三個表文件分別顯示在三個不同的頁面上(3)未被激活的頁面自動設為不可訪問
? Timer1的Interval屬性設置為10000 ? Timer1的Timer事件的代碼:
P=Thisform.PageFrame1.ActivePage P=P+1 IF P>3
P=1 ENDIF
Thisform.PageFrame1.SetAll(”Enabled“,.F.,”Page")Thisform.PageFrame1.Pages(P).Enabled=.T.Thisform.PageFrame1.ActivePage=P
18.要求:(1)編制一個學生成績查詢表單,表單中的顯示學生信息的窗口的指針移動時,在另一個窗口可以自動顯示出對應那個學生所所有成績信息。
*****Form1的init事件代碼: sele 成績 教學時間約
****年**月**日
總第節
審批簽字:
inde on 學號 to xh sele 學生
set rela to 學號into 成績
19.要求:(1)編制一個表單完成表文件“學生.dbf”“成績.dbf”“課程.dbf”內容的編輯瀏覽顯示功能;(2)三個表文件分別顯示在三個不同的頁面上;(3)當在選項按鈕組選擇某個表文件時,頁框中的頁會自動翻頁,即自動翻動為與選擇的表文件對應的頁;(4)未被激活的頁面自動設為不可訪問
*****Form1的init事件代碼: thisform.pageframe1.setall(“enabled”..f.,”page”)thisform.pageframe1.page1.enabled=.t.*****Optiongroup1的click事件代碼: thisform.pageframe1.setall(“enabled”,.f.,”page”)do case
case this.value=1
thisform.pageframe1.page1.enabled=.t.thisform.pageframe1.activepage1=1 case this.value=2
thisform.pageframe1.page2.enabled=.t.thisform.pageframe1.activepage=2 case this.value=3 thisform.pageframe1.page3.enabled=.t.thisform.pageframe1.activepage=3 endcase 20.要求:(1)編制一個小型文本編輯器,界面見下圖;(2)文字信息從鍵盤輸入至edit框;(3)三個單選按鈕分別用于設置“宋體”、“黑體”和“隸書”;(4)三個check按鈕用設置字體的“傾斜”、“加粗”和“下劃線”;(5)字號用微調控件實現
***optiongroup1的click事件代碼: do case case this.value=1 thisform.text1.fontname=”宋體” case this.value=2 thisform.text1.fontname=”楷體” case this.value=3 thisform.text1.fontname=”隸書” endcase ***check1的click事件代碼: if this.value=1 thisform.text1.fontbold=.t.else thisform.text1.fontbold=.f.endif ***check2,3的代碼類似于check1 ***spinner1的upclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize-1 ***spinner1的downclick事件代碼
thisform.text1.fontsize=thisform.text1.fontsize+1
(四)小結 【教學后記】
第二篇:Vf練習1-5
Vf練習1—51、任意一個數,若能被7或3整除,則輸出該
3、從鍵盤上連續輸入10組數,分別輸出每數和,對輸入進行規定,每組數的結束標志為“0” ENDDO I=I+1 J=1
數,最后釋放所有的內存變量 SET TALK OFF
INPUT “輸入一個數”TO X?[24]ENDIF
RETURN1、下面程序的功能是計算1——100之間所有整數的平方和并輸出結果 S=0
DO WHILE X<100ENDDO ?S RETURN1、編程求1——1000之間被3整除又被5整除的個數及其和。N=0 S=0 K=1
S=S+K ENDIF K=K+1 ENDDO ?N,S RETURN
K=1
?”請輸入第”+“組數” S=0 X=1
INPUT “請輸入下一個數:”TO X ENDDO
?”第”+[11]+“組數之和”,S K=K+1 ENDDO RETURN4、編寫程序,要求從鍵盤輸入9個數,按從小到大的順序排列并顯示出來。CLEAR
I=1
INPUT TO K(I)I=I+1 ENDDO I= 1
T=K(I)K(I)=K(J)K(J)=T ENDIF
ENDDO I=1
DO WHILE I<10I=I+1 ENDDO RETURN3、鍵盤輸入10個數,輸入最小數 SET TALK OFF CLEAR K=1
INPUT “請輸入第1個數:” TO AINPUT “請輸入第2個數:” TO BENDIF
?“最小數”,A SET TALK ON RETURN4、從鍵盤輸入10個數,按從小到大的順序輸出
SET TALK OFF CLEAR
I=1
DO WHILE I<=10 INPUT TO M(I)
I=1
T=M(J)M(J)=M(J+1)M(J+1)=T ENDIF
ENDDO I=I+1 ENDDO I=1
DO WHILE I<=10 I=I+1 ENDDO SET TALK ON RETURN4、計算10!+15!+20!+25!CLEAR I=10 T=0
S=0
ENDDO ?T ENDDO RETURN
子程序功能計算P=N!*子程序PRO1.PRG
PARAMETERS P,N,PL=L+1 ENDDO6、編寫一個子程序計算N的階乘,在主程序中計算3!+5!+7!+9!+11!。*主程序JCS.PRG SET TALK OFF CLEAR STORE 0 TO S,K
DO JC1
NEXT
RETURN *子程序JC1.PRG *計算N!的階乘
STORE(24)TO L,K FOR L=1 TO N(25)NEXT RETURN3、已知一數列的前三個數:0,0,1以后每個數為前三個數的和,求該數列的前20個數。F1=0 F2=0 F3=1
?F1,F2,F3 I=
4??F4
I=I+1 ENDDO SET TALK ON RETURN3、程序的功能是:從鍵盤上輸入10個正數放在一維數組X中,然后顯示最大的數組元素及其下標
(10)MAX=0 C=1
FOR K=1 TO 10 INPUT?輸入?+?第?+STR(K)+?個數據?NEXT KMAX=X(1)FOR K=2 TO 10
IF(12)(13)C=K
(14)ENXT K ?MAX,C1、下列程序的功能是完成建立索引文件,輸入表文件名,索引關鍵字(字符型)和索引名,運行后生成一個按輸入關鍵字進行索引的索引文件之后顯示索引文件和索引扣的數據,最后關閉文件
SET TALK OFF
ACCEPT “輸入表文件名:” TO FNAME ACCEPT “輸入索引關鍵字:” TO KEY ACCEPT “輸入索引名:” TO INAME
INDEX ON [2]TAG [3]
?“索引名”+[4]USE RETURN2、已知XSCJ.DBF有如下的記錄,編程計算每個學生的總分,總分=英語+語文+數學,并根據總分給每個學生填入內容:總分>=240等級為‘優’;180<=總分<240分等級為‘良’;總分<180分等級為‘不及格’ 姓名 英語 語文 數學 總分 等級 張山 90 80 65李四 60 75 70王五 80
SETTALK OFF
CLEAR USE XSCJ
GO TOP
DO WHILE NOT EOF()DO CASE CASE總分>=240
REPLACE 等級別 WITH “優” REPLACE 等級別 WITH “良” CASE總分<180ENDCASE
ENDDO USE RETURN5、在XSCJ.DBF表文件中查找一位學生根據其
平均分判斷該生的學生情況 CLEAR
[20]ACCEP“請輸入學號:” TO XH LOCATE[21]IF[22][23]CASE平均分>=80 ?“成績優秀!” CASE平均分>=60 ?“成績及格!” OTHERWISE
?[24]ENDCASE
?“查無此人!” ENDIF USE RETURN
已知表文件XS.DBF有三個字段:姓名/C/ 8,團員/L,團員/L,出生日期/D
1,編寫程序,顯示XS.DBF中所有團員同學的名單。CLEARUSEXSGO 1
DO WHILE[1]____________________IF[2]_____________________[3]________________________姓名ENDIF
[4]_________________________ ENDDO
[5]_________________________ RETURN
2._編寫程序,在中查找并顯示1992年出生的同學。CLEAR
DO WHILE NOT EOF()ENDDO USERETURN1、現在學生表XS.dbf,試用scan循環顯示學生表中男生的情況 CLEAR
SCAN
LOOPENDIF
ENDSCAN USE RETURN2、在學生表文件中“年齡”字段為N型,“標志”字段為L型,通過索引查詢顯示所有年齡為20的學生記錄,然后把記錄11到末記錄的標志字段設置為.T.SET TALK OFF USE 學生
INDEX ON 年齡 TAG NLDO WHILE NOT EOF()DISPLAY
IFEXIT ENDIF ENDDO
USESET TALK ON RETURN2、閱讀下列程序并將程序填寫完整 STORE “Y” TO YN USE SP1
INDEX ON 品牌 TAG PIN SET ORDER TO PIN
DO WHILE(4)ACCETP“請輸入查詢的品牌:” TO CHX SEEK(5)IF(6)DISPLAY(7)?“無此品牌商品!”(8)
WAIT“繼續查找嗎?(Y/N)” TO YN IF(9)EXIT
(8)ENDDO RETURN4、設數據表文件PHONE.DBF中包含了“姓名”、“電話”和“地址”三個字符型字段。以下程序的功能是打開表,按用戶輸入的任一電話號碼進行查找,如查存在該號碼,則顯示其單位地址,關閉文件并結束程序,請將補充程序。
(15)DO WHILE.T.PHN=SPACE(8)
ACCEPT”請輸入電話號碼” to PHN LOCATE FOR PHN=電話 IF(16)?“單位地址:”+地址 USE
(17)ENDIF ENDDO5、輸入要刪除的記錄號且記錄號不超過XJ表的記錄范圍 USE
(18)C=RECCOUNT()IF C>=N
DELETE
ENDIF5、從鍵盤輸入一個字符串,然后按組成字符串字符的倒序輸入單個字符,在輸出過程中如遇到空格字符便停止輸出。
ACCEPT“輸入一個字符串:” TO ST
IF SUBSTR(ST,N,1)=SPACE(1)ELSE
ENDIF ENDDO
RETURN5、編寫打印如下圖形。ABBBCCCCC
DDDDDDD
I=1
J=
1ENDDO
ENDDO RETURN
4、打印圖形**************** SET TALK OFF CLEAR
S=1
??”*” S=S+1 ENDDO
ENDDO RETURN
第三篇:VF教案31-40
第31課時 使用向導創建視圖
一、教學目的 使學生通過本節的學習,使學生能利用創建一個視圖。
二、教學重難點 使用向導創建視圖和查詢的區別
三、教學方法 舉例 講授 演示
四、教學過程
同學們,在使用視圖向導創建視圖時,向導會自動列出創建視圖的步驟,用戶根據向導提供的提示完成相應的操作,即可正確的建立視圖。
下面我來介紹一下創建視圖的幾個步驟:
(1)字段選取。選擇數據庫,數據庫中的表和表中的字段。如果當前已經打開了一個數據庫,則第一步的對話框中顯示的是創建當前數據庫的視圖,也可以選擇其它的數據庫。
(2)關聯表。建立數據庫中表與表之間的關系。
(3)包含記錄。指定包含表中的全部記錄還是僅匹配的記錄。(4)篩選記錄。選定符合條件的記錄。
(5)排序記錄。為選定的記錄按照某一字段進行排序。
(6)限定記錄。定制顯示一定數量的記錄。(7)完成視圖。選擇保存視圖后瀏覽還是修改。
例:創建包含Grade表和Courses表的本地視圖“視圖1”。
字段選擇完成后,單擊【下一步】,步驟2——為表建立關系。說明:在這一步要建立用來建立本地視圖的表間的關系。
1、先在父表字段選擇下拉選擇框中選擇要用來建立關系的主關鍵字;
2、再在子表字段選擇下拉選擇框中選擇用來建立關系的子表關鍵字;
3、單擊【添加】,將設定關系添加到關系列表框中。
關系設置完成后單擊【下一步】進入到步驟2a——字段選取對話框。
本例中選用默認值:僅包含匹配的行。然后單擊【下一步】,進入步驟3——篩選記錄。說明:
僅包含匹配的行:生成的本地視圖中只包含表中關系相匹配的記錄,對應于關系中的內聯接的設置結果。
此表中所有的行:生成的本地視圖中包含Grade表中的全部記錄和子表中關鍵字段相匹配的記錄,對應于關系中的左聯接的設置結果。
兩張表中所有的行:生成的本地視圖中包含表中所有的記錄,對應于關系中的完全聯接的設置結果。小結:
第32課時
使用向導創建視圖(2)
一、教學目的 使學生通過本節的學習,使學生能利用創建一個視圖。
二、教學重難點 使用向導創建視圖和查詢的區別
三、教學方法 舉例 講授 演示
四、教學過程
本地視圖向導:步驟3——篩選記錄
說明:本地視圖向導的篩選記錄與查詢向導的篩選記錄的方式類似。在本例中不篩選記錄。
單擊【下一步】,進入到本地視圖向導的步驟4——排序記錄。本地視圖向導:步驟4——排序記錄
說明:在這一步中設置在本地視圖的記錄順序。
本例中可先按“學號”排序,學號相同的再按“課程代號”排序。
操作方法與建立查詢的記錄排序方法相同。先在“可用字段”列表框中選擇“學號”,然后單擊【添加】,再選擇“課程代號”,再單擊【添加】如上圖。排序字段及順序設置后單擊【下一步】,進入本地視圖向導:步驟4a——限制記錄。本地視圖向導:步驟4a——限制記錄
限制記錄的方法與建立查詢的限制記錄的方法完全相同。在本例中仍保持在本地視圖中包含所有的記錄,因而取默認值,直接單擊【下一步】,進入本地視圖向導:步驟5——完成。
在第5步中的操作方法也與建立查詢的方法相同,現選擇“保存本地視圖并瀏覽”,然后單擊【完成】。彈出“視圖名”對話框
在“視圖名”文本框中輸入“視圖1”
輸入視圖名后單擊【確認】按鈕,系統顯示所建立的本地視圖的結果。本地視圖向導結束。
小結:我們利用了兩節課的時間來學習了使用視圖向導來創建視圖的方法,創建視圖的方法其實和創建查詢的方法是基本相同的,同學們下去要多加把握一下。
第33課時
利用視圖設計器創建本地視圖
一、教學目的 使學生通過本節的學習,使學生能利用創建一個視圖。
二、教學重難點 使用向導創建視圖和查詢的區別
三、教學方法 舉例 講授 演示
四、教學過程 前面我們學習了使用視圖向導來創建一個視圖,和查詢時一樣的,視圖也可以利用視圖設計器來創建一個視圖,通過本地視圖向導建立數據庫視圖雖然方便,快捷,但這僅對入門者如此,何況用視圖向導建立數據庫視圖最終還要依賴視圖設計器。因此,傾向獨立進行開發的程序員來說,僅僅學會使用向導是遠遠不夠的,還應學會使用視圖設計器的強大功能來創建視圖。(1)進入視圖設計器
進入視圖設計器的方法與進入查詢設計器的方法基本相同,下面以新建視圖的方式進入視圖設計器。啟動視圖設計器方法
新建一個視圖可按以下步驟進入視圖設計器:
■選擇【文件】|【新建】命令,單擊“視圖”單選框,再單擊【新建文件】按鈕。
■在數據庫設計器中,選擇【數據庫】|【新建本地視圖】或單擊數據庫設計器的快捷菜單中的【新建本地視圖】|【新視圖】按鈕。
■在項目管理器中,單擊“數據”選項卡,在列表框中選定“本地視圖”,再單擊【新建】按鈕,單擊【新建視圖】按鈕。修改一個視圖可按以下步驟進入視圖設計器:
■在數據庫設計器窗口中,單擊選定需要修改的視圖,選擇【數據庫】|【修改】命令。
■在數據庫設計器窗口中,右擊需要修改的視圖,在出現的快捷菜單中選擇【修改】命令。■在項目管理器中,單擊【數據】選項卡,在列表框中選定需要修改的視圖,單擊【修改】按鈕。
“視圖設計器”工具欄說明
添加移去添加聯顯示SQL窗口 最大化上部窗
添加表:顯示“添加表或視圖”對話框,從而可以向設計器窗口添加一個表或視圖
移去表:從設計器窗口的上窗格中移去選定的表。添加聯接:在視圖中的兩個表之間創建聯接條件
顯示/隱藏SQL窗口:顯示或隱藏建立當前視圖的SQL語句 最大化/最小化上部窗口:放大或縮小視圖設計器的上窗格(2)從表中選擇所需字段
在進行本地視圖設計器之前,先建立Classzc表和Department表,表結構和數據如下:
小結:我們利用本節課講授了使用視圖設計器創建本地視圖的一部分內容,剩下的內容我們將在下一節課中繼續向大家講授。
第34課時
利用視圖設計器創建本地視圖(2)
一、教學目的 使學生通過本節的學習,使學生能利用創建一個視圖。
二、教學重難點 使用向導創建視圖和查詢的區別
三、教學方法 舉例 講授 演示
四、教學過程
從中選定表Classzc并單擊【添加】按鈕,然后單擊【關閉】按鈕,啟動視圖設計器。
進入視圖設計器后,第一步先需要選定字段,選定字段可直接通過字段選項卡進行。其操作方法與查詢設計器中選擇字段的方法相同。
從“可用字段”列表框里選定Classzc.班級簡稱字段,單擊【添加】按鈕或雙擊該字段,則Classzc.班級簡稱字段將會出現在右邊的“選定字段”列表框中。本次建立的視圖里,還需要選定Classzc.學習性質、Classzc.學制二個字段。它們選定的方法與選定Classzc.班級簡稱字段一樣。如果需選定字段是“可用字段”列表框中的所有字段,可以單擊【全部添加】按鈕,這樣就把所有字段添加到了“選定字段”列表框中去了,可以通過【移去】按鈕將其移出來。如果需要全部移出,可以利用【全部移去】按鈕快速移出。
要將表中的字段添加到“選定字段”列表框中,除了上述方法外,還可以將鼠標指向視圖設計器上部窗口中的表窗口中的字段上,按住鼠標左鍵或右鍵拖動一個字段到“選定字段”列表框,該字段就被加入到了“選定字段”列表框中。還可以通過雙擊字段名將其加入到“選定字段”列表框。表窗口中的*代表表中的全部字段,它也是可以拖動或雙擊的。若要從“選定字段”列表框中移去字段,也可以使用鼠標拖動或雙擊。“字段”選項卡還有一個【屬性】按鈕和一個“函數和表達式”文本框。只要“選定字段”列表框中有一個值,【屬性】命令按鈕就成為可選的了。選擇【屬性】后,(3)建立多表關聯
前面主要是針對單一的本地表建立視圖,雖然很容易,但它的實際功能不大。因為在實際開發中,系統的數據庫很復雜,表的關聯性很強,用戶關心的往往是一些復雜的數據,因此需要建立多表視圖。
(4)與設計多表查詢不相同的部分——更新條件
視圖的最大特點在于能用視圖更新數據,這也是建立視圖與建立查詢的主要區別,也是視圖的重點所在。視圖設計器中的“更新條件”選項卡可以用來設置允許視圖更新表字段的條件。
“更新條件”選項卡選項包括如下內容:
■“表”:指定視圖所使用的哪些表可以修改。選擇這個下拉列表框中的選項,可以確定哪些表中的字段可以在“字段名”列表框中,以便設置更新條件。此列表中所顯示的表都包含了“字段”選項卡“選定字段”列表中的字段。■【重置關鍵字】:這個按鈕作用是從每個表中選擇主關鍵字字段作為視圖的關鍵字字段。每個主關鍵字字段是在“字段名”列表中的、在鑰匙符號下面打一個對鉤的字段,關鍵字字段可
小結:我們利用兩節課的時間向同學們介紹了有關使用視圖設計器來創建視圖的方法。同學們下去一定要好好的把握。
第35課時
使用視圖
一、教學目的 使學生通過本節的學習,使學生能學會在VF中使用視圖。
二、教學重難點 使用視圖
三、教學方法 舉例 講授 演示
四、教學過程
同學們,建立視圖后,不但可以用它來顯示和更新數據,而且還可以通過調整它的屬性來提高性能。處理視圖類似處理表,可以: ■使用USE命令并指定視圖名來打開一個視圖。■使用USE命令關閉視圖。■在【瀏覽】窗口中顯示視圖。
■在【查看】窗口中顯示已打開的視圖的別名。■將視圖作為數據源,供表單或表格控件使用。若要使用一個視圖,可采取如下方法:
■在項目管理器中先選擇一個數據庫,再選擇視圖名,然后單擊【瀏覽】按鈕,在【瀏覽】窗口中顯示視圖。■使用編程的方式訪問視圖。
下面的代碼在【瀏覽】窗口中顯示存放在c:gxglxt目錄下gxglxt數據庫中的視圖1:
open database c:gxglxtgxglxt use 視圖1 browse
在使用一個視圖時,視圖將作為臨時表在自己的工作區打開。如果此視圖基于本地表,則VFP6會在另一個工作區同時打開基表。如果沒有打開任何表,或先執行Close All命令后再執行以上命令,則視圖1在工作區1打開,而其基表則在工作區2打開。要查看基表,可以通過選擇系統菜單上的【窗口】|【數據工作期】打開“數據工作期”窗口。但有一個例外,如果視圖是基于遠程表,則基表將不在工作區中打開。而只在【查看】窗口中顯示遠程視圖的名稱。
小結:本節主要介紹了又關打開和關閉視圖的方法。
第36課時
視圖的編輯
一、教學目的 使學生通過本節的學習,使學生能對視圖進行編輯,及修改刪除等操作。
二、教學重難點 視圖的修改
三、教學方法 舉例 講授 演示
四、教學過程
同學們,有時用戶只想了解視圖的結構,而不關心視圖中的數據。這樣可以使用帶NODATA子句的USE命令來快速顯示視圖的結構。例如: open database c:gxglxtgxglxt use 視圖1 nodata in 0 Select 視圖1 browse 通過運行上面的命令語句,將在【瀏覽】窗口中看到沒有記錄的視圖1。因為使用NODATA子句時,VFP6為視圖1創建一個永遠返回.F.值的WHERE子句,而數據源上沒有記錄匹配WHERE子句的條件,所以沒有記錄被選擇。
重新命名視圖
建立一個視圖以后,還可以為其重新命名視圖,進行視圖的重新命名,可以使用項目管理器或用RENAME VIEW命令。
■在項目管理器中先選擇一數據庫,再右擊要重新命名的視圖。單擊【重命名】按鈕,出現一對話框后即可為視圖輸入新的名稱。
■使用RENAME VIEW命令。
例如,下面的代碼將視圖2重新命名為視圖1: rename view 視圖1 to 視圖2 說明:在重新命名視圖之前,必須打開包含要命名視圖的數據庫。
刪除視圖
視圖同表一樣也是可以刪除的,刪除視圖可以使用項目管理器或使用DELETE VIEW命令。■在項目管理器中選擇一個數據庫,再選擇要刪除的視圖,然后用鼠標右擊,單擊【移去】按鈕,即可刪除所選的視圖。
使用DELETE VIEW命令。
例如,如果要刪除數據庫xsglxt中的視圖2,可以鍵入以下的命令語句: delete view視圖2 說明:在刪除視圖之前,必須打開包含要刪除視圖的數據庫并設置其為當前數據庫。
創建視圖索引
同為表建立索引一樣,也可以為視圖建立索引。但與表不同的是,在視圖上創建的本地索引不能永久保存,它們隨著視圖的關閉而消失。為視圖建立本地索引,可以使用INDEX ON命令。關于該命令的參數,在創建表的索引時已有介紹。另有一點需要注意的是,在決定是否在視圖上建立索引時,要考慮視圖結果集合的大小。對于一個大的結果集合來說,索引要花費很長的時間,并可能降低視圖的性能。因此,要根據實際情況處理。
小結:本節課主要介紹了有關視圖的編輯,如修改視圖結構,刪除視圖,重命名視圖的方法等,同學們一定要好好的把握。
第37課時
創建參數化視圖
一、教學目的 使學生通過本節的學習,使學生能熟練的創建一個參數化視圖。
二、教學重難點 創建參數化視圖
三、教學方法 舉例 講授 演示
四、教學過程 VFP可以創建具有提示輸入值來查詢信息的視圖,稱為參數化視圖,這樣的視圖具有更大的靈活性和更強的適應性。可避免每取一部分記錄值就要建立視圖的情況。
可用以下方法創建參數化視圖:
(1)打開視圖設計器,從【查詢】菜單中選擇【視圖參數】命令,此時系統彈出視圖參數對話框,如圖所示:
2)在視圖參數對話框中輸入參數名及其數據類型。此例中建立一個名為“系部代號”的視圖參數,此視圖參數可以任意取,但數據類型要和所要查詢的記錄類型一致。參數名可以是字母字符、數字和單引號的任意組合。(3)按下確定按鈕,就為此視圖建立了一個視圖參數了。下面設計一個帶參數的視圖(視圖4):
(1)打開“視圖設計器”,選定表Classzc、Student、Course和Grade四個表,并選取.Classzc.系部代號、Classzc.班級名稱、Student.學號、Student.姓名、Course.課程名、Grade.開課學期、Grade.課程成績這7個字段名作為輸出字段。(2)在“篩選”選項卡中的“字段名”下拉列表框中選擇Classzc.系部代號,在“條件”列表框中選定“=”,在“實例”文本框中輸入“?系部代號”。這個問號表示引用一個表達式所需要的參數。問號后的文字標識了這個參數的名稱。同時還可以設定如“Grade.開課學期=‘?開課學期’”。(3)選擇【查詢】|【視圖參數】,進入“視圖參數”對話框,在“參數名”文本框中輸入參數名稱“系部代號”,在“類型”下拉列表框中選定參數的類型為“字符型”,同樣還輸入“開課學期”、“字符型”,然后單擊【確定】按鈕。
(4)通過選擇【查詢】|【運行查詢】命令,或通過單擊鼠標右鍵再選擇【運行查詢】命令,系統彈出如圖所示的視圖參數對話框。
在此對話框中可以輸入將要查詢的參數的某一具體數值,在此輸入“05”;在后面彈出的“輸入一個字符型值,供‘開課學期’使用”對話框中輸入“第1學期”。
單擊確定按鈕,查詢的結果即顯示在屏幕上。
說明:教師在大屏幕上演示具體的操作過程,學生仔細觀察,然后自己在電腦上進行實踐。
第38課時
利用視圖更新數據
一、教學目的 使學生通過本節的學習,使學生能熟練的利用視圖來更新數據。
二、教學重難點 更新數據的方法。
三、教學方法 舉例 講授 演示
四、教學過程 同學們,我們說過,視圖和查詢最大的區別就是,查詢不能對數據進行更新,而視圖是可以的,我們這節課就學習如何對視圖中的數據進行更新。
在項目管理器中選擇“視圖3”,單擊【修改】,在視圖設計器中選擇“字段”選項卡,如圖。
在上圖中,請注意Grade表中的字段。選擇“更新條件”選項卡,進行如圖設置:
■設定關鍵字段和可修改字段。
注意:因為表Grade中每個字段的值都不唯一,所以要用組合關鍵字(學號+課程代號+開課學期)
■存檔并顯示結果。選【文件】|【保存】或從工具欄中單擊保存按鈕保存此視圖。選取菜單【查詢】|【運行查詢】查看結果,為視圖參數輸入“04”(帶定界符)、“第1學期”后的運行結果如圖 :
■修改視圖數據。既然我們已經為視圖3視圖文件設定關鍵字段與可更新字段,也就是設定了視圖文件中哪些字段可以經過修改而自動更正原始數據文件內容,現在就來驗證這些設定是否生效。
將視圖中最后一條記錄的“課程成績”由62改為99。
更改完畢后操作光標離開這條記錄,觀察Grade表中相關記錄變化的情形。
從結果可以看出:Grade表中的學號和課程成績已隨著視圖文件的更改而自動修正了。表示我們設定的可更新字段生效。
說明:教師在大屏幕上邊操作邊演示,讓學生仔細觀察。任務1:在學生登記表視圖中,把李飛的姓名改為李雄飛。任務2:在各科成績表視圖中,把張三的語文成績由65改為99.小結:我們本節課主要介紹了有關視圖的更新數據的方法,從視圖更新數據這在VF中是非常重要的一個內容,同學們一定要仔細體會其中的奧妙。
第四篇:VF基礎教案
第2章Visual FoxPro 6.0概述
2.1 Visual FoxPro的安裝、啟動與關閉 2.1.1 Visual FoxPro 6.0 的安裝
中文Visual FoxPro 可以從CD-ROM或網絡上安裝。以下介紹三種從CD-ROM上安裝Visual FoxPro 的方法。
1.直接啟動CD-ROM
2.直接運行安裝程序
3.使用Windows 安裝 2.1.2 Visual FoxPro 6.0的啟動與關閉
一、Visual FoxPro 6.0的啟動
啟動Visual FoxPro有多種方法,可采用以下三種方式之一。
1.從“開始”菜單啟動
2.從“運行”對話框中啟動
3.從資源管理器中啟動
4.雙擊Visual Foxpro6.0快捷圖標
二、Visual FoxPro 6.0的退出
(1)在Microsoft Visual FoxPro主菜單中,打開“文件”菜單,選擇“退出”選項;
(2)按Alt+F4組合鍵;
(3)按Ctrl+Alt+Del組合鍵,進入“關閉程序”窗口,按“結束任務”按鈕;
(4)在Microsoft Visual FoxPro的系統環境窗口,單擊其右上角的“退出”按鈕;
(5)在“命令”窗口,輸入命令Quit。2.2 Visual FoxPro 6.0系統運行環境的配置
Visual FoxPro系統環境的配置,決定了Visual FoxPro系統的操作環境和工作方式。
單擊“工具”-> “選項”可以打開選項選窗口,在“選項”窗口中,有12種不同類別的環境選項卡,用戶可以根據操作的需要通過“選項”窗口中的各種選項卡,確定或修改設置每一個參數,從而確定Visual FoxPro的系統環境.2.2.1 設置默認工作目錄
VF有其默認的工作目錄,就是系統文件所在的VF6.0目錄,但是,為了管理,用戶最好還是設置自己的工作目錄以保存所建的文件 設置默認路徑的方法: “工具”->“選項”->文件位置 使用命令設置:
SET DEFA TO <默認路徑> 功能:設置默認路徑 例:
SET DEFA TO D:WMQ SET DEFA TO E:200723 2.2.2 設置日期的表示格式 設置日期時間格式: “工具”->“選項”->“區域”
2.3 Visual FoxPro 6.0的系統窗口
Visual FoxPro的界面
Visual FoxPro界面,是由標題欄、菜單欄、工具欄、工作區、狀態欄和命令窗口組成的。
一、標題欄
標題欄位于屏幕界面的第一行,它包含系統程序圖標、主屏幕標題、最小化按鈕、最大化按鈕和關閉按鈕5個對象。
二、菜單欄
菜單欄位于屏幕的第二行,它包含文件、編輯、顯示、格式、工具、程序、窗口和幫助8個菜單選項。
當單擊其中一個菜單選項時,就可以打開一個對應的“下拉式”菜單,在該“下拉式”菜單下,通常還有若干個子菜單選項,當選擇其中一個子菜單選項時,就可以執行一個操作。
三、工具欄
Visual FoxPro系統提供了11種常用的工具欄:
(1)常用工具欄(2)布局工具欄
(3)表單控件工具欄(4)表單設計器工具欄
(5)查詢設計器工具欄(6)視圖設計器工具欄
(7)數據庫設計器工具欄(8)報表控件工具欄
(9)報表設計器工具欄(10)調色板工具欄
(11)打印預覽工具欄
四、命令窗口
命令窗口位于菜單欄和狀態欄之間,是Visual FoxPro系統命令執行、編輯的窗口。在命令窗口中,可以輸入命令實現對數據庫的操作管理;也可以用各種編輯工具對操作命令進行修改、插入、刪除、剪切、拷貝、粘貼等操作;還可以在此窗口建立命令文件并運行命令文件。
在“窗口”菜單下,選擇“隱藏”,可以關閉命令窗口;選擇“命令窗口”,可以彈出命令窗口。
五、工作區與狀態行
狀態行位于屏幕的最底部,用于顯示某一時刻的管理數據的工作狀態。(1)Set Status off/ on,可控制屏幕上的狀態行是否出現。
(2)如果當前工作區中沒有表文件打開,狀態行的內容是空白;如果當前工作區中有表文件打開,狀態行顯示表名、表所在的數據庫名、表中當前記錄的記錄號、表中的記錄總數、表中的當前記錄的共享狀態等內容。
2.4 可視化管理工具
1、設計器
通過設計器可以方便地對表、表單、數據庫、查詢和報表等進行管理。
2、向導
通過用戶對問題的回答或對選項的選擇,向導將創建相應的文件或執行某一項任務。
3、生成器 是一種可視化的輔助工具,用來幫助擁護按要求設計各種控件的表現形式。2.5 Visual Foxpro 6.0的工作方式 Visual FoxPro 6.0提供了兩種工作方式:
? ? 交互方式(可執行方式和可視化操作方式)程序方式
2.5.1 交互方式
包括命令執行方式和可視化操作方式。
1、命令執行方式
Visual FoxPro 6.0提供命令方式主要有兩種目的,一是對數據庫的操作使用命令比使用菜單或工具欄要快捷而靈活;另一方面,熟悉命令操作是程序開發的基礎。
Visual FoxPro 6.0提供了命令窗口用于輸入執行命令。
Visual FoxPro 6.0中的命令采用近似于自然語言的結構。
Visual FoxPro 6.0中的命令不區分大小寫,即命令可以用大寫字母也可以用小寫字母書寫。另外,對于較長的命令可以只輸入命令的前四個字母。
Foxpro提供了多條命令,命令中常出現的一些符號有:(P19)
<....> 必選項
[....]
可選項
...|... 擇一選項 這些符號在實際使用時不必輸入. 命令的一般格式為:
命令動詞 [<范圍>][fields<字段名表>][for <條件>] 其中:
命令動詞:決定此命令的功能,一般為英文動詞. 范圍:表示記錄的操作范圍,有]四種形式:
ALL 表示對數據庫中的所有記錄進行操作。?
RECORD N
表示僅對第N條記錄進行操作 ?
NEXT N 表示從當前記錄開始共N個記錄
REST
表示從當前記錄開始到文件結束的所有記錄
Fileds:說明數據庫的字段名稱,不選此項,則表示選擇所有字段 命令書寫規則 ? ? ? ? ? 任何命令必須以命令動詞開頭, 大小寫不限,其后的各項順序不限。各子句之間用空格分隔。
命令可縮寫成前4個字母,但不提倡
一行寫不下時,在行末用續行符“;”,并在下行繼續書寫 一行只能寫一條命令語句
例如,顯示xsda數據表中所有不住校的女生的姓名、年齡
use xsda
list all fields 姓名,年齡
for 住校否=.F.and 性別=’女’
2、可視化操作方式
可視化操作方式包括:菜單方式、設計器方式、向導方式。
在VisualFoxpro系統中,通過菜單、窗口、對話框、工具欄等圖形界面,可以直接操作數據表、視圖、查詢、表單、報表等,并以窗口的方式把結果顯示給用戶。
2.5.2 程序執行方式
Visual FoxPro 6.0提供了一個程序編輯器,可以使用MODIFY COMMAND 命令打開程序編輯器,或者從“文件”菜單中選擇“新建”命令,在彈出的“新建”對話框中選擇“程序”單選項,最后單擊“新建文件”按鈕即可打開程序編輯器。
2.6 Visual Foxpro 6.0的主要性能指標 主要性能指標有:
1、每個數據庫最多記錄數為10億個
2、每條記錄可包含的字段個數最多為225個
3、每條記錄最多字符數為655000個字節
4、字段型字段最大寬度(即最多可容納的字符數)為254個字節。
5、數值型字段最大寬度為20位,精度為16位
6、有32767個工作區,可同時打開的數據庫文件最多32767個。
7、可使用的內存變量默認總數位256個,最多為65000個。最大數組個數為65000個,每個數組的最多的元素數為65000個。
第五篇:vf教案13-20
第13課時 創建查詢
一、教學目的1、使學生掌握使用查詢向導創建查詢的方法。
2、理解查詢和查找的區別
二、教學重難點 使用查詢向導,查詢和查找的區別
三、教學方法 舉例 講授 演示
四、教學過程 同學們,我們說VF中最最重要的功能就是它的查詢功能了,在本節課中我們將重點來學習VF的查詢,理解它的強大的功能。
說明:查找和查詢的區別。
同學們,我們如果在一個表中要找到某個記錄時,最簡單的方法就是選擇,編輯菜單下的查找了,它的使用方法和我們平時使用WORD是一樣的,但是那是簡單查找并不是查詢,當我們要查找某些復雜的記錄時,我們就要使用VF中的查詢功能了。
我們這節課將學習使用查詢向導來創建查詢的方法。
舉例:創建一個查詢,在“學生管理”數據庫中的“各科成績”表中查詢語文大于60并且數學大于70的學生信息,要求要顯示的字段有,學號、姓名、語文、數學。分析:
使用查詢向導可以快速創建查詢,一般的操作步驟是:(1)選擇在查詢結果中要顯示的字段
(2)設置查詢條件來篩選在查詢結果中包含的記錄(3)設置排序來組織查詢結果(4)選擇結果輸出記錄的比例數
啟動查詢向導可以從“文件”菜單中單擊“新建”命令,在“新建”對話框中選擇“文件類型”中的“查詢”,然后單擊“向導”按鈕,啟動查詢向導。
操作:(教師在使用教學系統進行演示,然后說明每一步操作的過程)以查詢文件名為“查詢1”保存,系統默認的擴展名為.qpr。提高
建立查詢后,如果要運行該查詢,在Visual FoxPro 6.0 窗口,選擇“程序”菜單中的“運行”,從打開的“運行”窗口中選擇要運行的查詢,如“查詢1.qpr”,顯示查詢運行結果。
另一種運行方法是使用命令方式,命令格式如下: DO 查詢文件名.qpr 例如,在命令窗口鍵入: DO查詢1.qpr 命令中的查詢文件名必須給出擴展名.qpr。
說明:同學們,查詢文件的擴展名是.qpr,這一點大家要牢牢掌握。
任務1:在各科成績表中查詢語文小于60并且數學也小于60的同學的信息,要求顯示的字段有學號、姓名、語文、數學。
等學生完成后,提問一兩個同學到大屏幕上進行操作,然后糾正他們出現的問題。任務2:在學籍信息登記表中,查詢1982年1月1日以后出生的所有男生的信息,要求顯示的字段有學號、姓名、性別、出生年月、是否黨員、入學成績,查詢結果保存為查詢3。
提示:日期時間型的數據應該是怎么表示的? 這個題目中共限制了幾個查詢條件。
同樣,等學生完成后,提問一兩個同學到大屏幕上進行操作,然后糾正他們出現的問題,在這里尤其要強調的是日期時間型數據的表示方法。1982年1月1日以后出生到底是大于這個日期還是小于,讓學生自己試試,這樣才能達到很好的效果。小結: 同學們,我們本節課主要講授了使用查詢向導來對數據表進行簡單的查詢,使用查詢能讓我們在龐大的數據海洋里面很輕松的找到我們需要的記錄,能大大節約時間,提高效率,同學們下去一定要多多的練習。
第14課時 使用查詢設計器創建查詢
一、教學目的1、使學生掌握使用查詢設計器創建查詢的方法。
2、理解查詢向導和使用查詢設計器創建查詢的方法。
二、教學重難點 使用查詢設計器創建查詢
三、教學方法 舉例 講授 演示
四、教學過程
同學們,利用查詢設計器可以按照需要設計一個查詢,如將滿足條件的記錄選擇出來。而且還可以用它對一個已有的查詢進行編輯和修改。下面用二個例子來說明如何創建滿足條件的查詢。
例6.7 創建一個名為“數學及格”的選擇查詢,將表“grade”中數學成績高于等于60 分的記錄選擇出來,查詢包括“學生編號”、“數學”、“英語”、“計算機”等字段,并按數學成績從高到低排序。
使用查詢設計器創建一個選擇查詢來解決以上問題,操作步驟如下:(1)在數據庫窗口選中“查詢”對象,單擊“在設計視圖中創建查詢”選項,進入“選擇查詢”窗口,同時彈出“顯示表”對話框。
(2)單擊“表”選項卡,雙擊“grade”,把“grade”表選入查詢設計器的表/查詢顯示區后,關閉“顯示表”對話框。
(3)分別雙擊“學生編號”、“數學”、“英語”和“計算機”字段名,將它們添加到查詢設計區的網格中,如下左圖所示。
(4)將光標定位在“數學”的“準則”框內,輸入“>=60”,再將光標定位在排序的框內,單擊出現的下拉箭頭,如上左圖中箭頭所示,在出現的下拉列表框中選擇“降序”。
(5)單擊右上角的關閉按鈕,保存對查詢設計的更改,在出現的“另存為”對話框中輸入“數學及格”,然后單擊“確定”。查詢“數學及格”添加到數據庫窗口中。(6)在“數學及格”查詢上雙擊,顯示查詢結果集,如上右圖所示。教師在大屏幕上演示操作方法,學生自己觀摩。
總結:同學們,使用查詢設計器設計查詢要經過以下步驟:
1、打開查詢設計器
2、選擇想從中獲取的信息的表或視圖,并建立好它們之間的聯系。
3、選擇出現在查詢結果中的字段。
4、設置篩選的條件,查找所需的記錄。
5、設置排序,分組等選項,組織查詢結果。
6、選擇查詢結果輸出的方向,表,報表,或瀏覽等。(下節課介紹)
7、運行查詢。
8、保存查詢文件。
第15課時 復習查詢設計器創建查詢
一、教學目的1、使學生掌握使用查詢設計器創建查詢的方法。
2、理解查詢向導和使用查詢設計器創建查詢的方法。
二、教學重難點 使用查詢設計器創建查詢
三、教學方法 舉例 講授 演示
四、教學過程
例6.8建立一個名為“成績總分”的查詢,包含 “學號”、“姓名”、“數學”、“英語”、“計算機” 字段,并新建一個總分字段。其中:總分=數學+英語+計算機,并將總分大于240的記錄顯示出來。操作步驟
(1)在數據庫窗口選中“查詢”對象,選擇“在設計視圖中創建查詢”,進入“選擇查詢”窗口,同時彈出“顯示表”對話框。
(2)單擊“表”選項卡,由于數據來源于“grade”和“students”兩個表,分別雙擊“grade”、“students”,然后關閉“顯示表”對話框。由于在6.2.7節已在“grade”和“students”表間建立了關系,故在它們之間出現一對一的關系連線,如下圖所示。
(3)分別雙擊“學號”、“姓名”、“數學”、“英語”和“計算機”字段名,把要求在查詢中顯示的“學號”等各個字段添加到查詢設計區內,如上圖所示。
(4)將光標定位到空白字段中,如上圖中箭頭所示。此時,工具欄上生成器按鈕 變為可用,單擊它,彈出表達式生成器對話框如下圖所示。
(5)在上圖的左下方的框內,雙擊“表”文件夾,選擇出現的“grade”表,如上圖所示,在中間的框中會顯示出“grade”表的所有字段。
(5)雙擊“數學”,單擊“+”,雙擊“英語”,單擊“+”,雙擊“計算機”,則整個公式[grade]![數學] + [grade]![英語] + [grade]![計算機] 就顯示出來,如上圖上部框中間所示。
(7)單擊“確定”按鈕,可以看到表達式出現在字段框中,把“表達式1”這幾個字改成“總分”(注意:冒號及冒號右邊的內容不能改動),在下面的準則框中,輸入“>240”,如下左圖中箭頭所示。
圖6.4.3.4圖6.4.3.5(8)單擊窗口右上角的“關閉”,保存更改。在彈出的“另存為”對話框中,輸入查詢名“成績總分”,單擊“確定”。雙擊建好的查詢“成績總分”,查詢結果如上右圖所示。
學生先進行操作,不會的地方教師進行詳細的講解和大屏幕上演示。小結: 本節主要通過實例讓同學們熟練的掌握查詢設計器來設計查詢的的過程,對查詢設計器在數據庫中的一些具體應用有了更深入的了解。
第16課時 設置查詢的去向
一、教學目的
使學生能熟練掌握設置查詢的去向的方法。
二、教學重難點 設置查詢的去向
三、教學方法 舉例 講授 演示
四、教學過程 同學們,我們前面所使用的查詢結果都是在表中顯示出來的,但是如果我們要用其它方式來顯示查詢結果,這就是我們本節課需要學習的知識。
設置查詢去向
當我們單擊工具欄上的“查詢去向”按鈕,或從“查詢”菜單中選擇“查詢去向”,或單擊右鍵并在快捷菜單中選擇“輸出設置”都可以出現下面的“查詢去向”對話框。
它有七個不同的選項,允許將查詢結果傳送給七個不同的輸出設備。選擇不同的按鈕,其窗口中的選項也不一樣。上圖中是默認的“瀏覽”,即將查詢結果送到“瀏覽”窗口中顯示,以進行檢查和編輯。
當單擊“臨時表”時,窗口如下:
以指定的名稱把查詢結果存貯于臨時表中。此臨時表只讀,并在“數據工作期”窗口中出現。臨時表可用于瀏覽,生成報表或其他目的。當關閉這個表時,查詢結果隨之消失。當單擊“表”時,窗口如下:
用指定的文件名,將查詢結果存為(.dbf)表文件。“表名”選項用來指定表的名稱。既可以在文本框中鍵入名稱,也可以使用三點按鈕來選擇一個已有的、要覆蓋的表。
單擊“圖形”按鈕,產生可由 Microsoft Graph處理的圖形。在設置GENGRAPH之后才可用。
單擊“屏幕”按鈕,使查詢結果在活動輸出窗口中顯示。通過選擇“次級輸出”中的單選按鈕可以在把查詢結果輸出到屏幕的同時輸出到打印機或文本文件。“選項”復選框可以設置是否輸出列標頭和是否在屏幕之間暫停。
單擊“報表”按鈕,將查詢結果按某一報表布局顯示。使用此選項必須先設置報表文件(.frx),來容納查詢中的輸出字段。如下圖:
在“打開報表”文本框中輸入報表名,或單擊“打開報表”按鈕選擇報表名,或者單擊右側的報表向導按鈕進入報表向導,產生一個報表。“次級輸出”同“屏幕”。
如果選擇“頁面預覽”將在“頁面預覽”窗口中顯示輸出結果。
如果選擇“活動控件臺”將在活動輸出窗口中顯示輸出結果。
如果選擇“報告之前釋放頁”,將在報表開始之前打印一空白頁,以在打印機上隔開文檔
如果選擇“僅總結信息”,將不打印細節信息。所生成的報表包括標頭、注腳、總計信息等等,但不包括細節信息。
單擊“標簽”按鈕,將會將查詢結果輸出到一個標簽文件(.LBX)。使用此選項必須先設置標簽文件,來容納查詢中的輸出字段。其選項前面幾個去向中已介紹。
第17課時 復習
一、教學目的
通過讓學生做一些練習題來掌握有關查詢的使用。
二、教學重難點 設置查詢的去向
三、教學方法 舉例 講授 演示
四、教學過程 選擇題
1.現實世界中事物在某一方面的特性在信息世界中稱為()A.實體 B.實體值 C.屬性 D.信息
2.數據的存儲結構與數據邏輯結構之間的獨立性稱為數據的()A.結構獨立性 B.物理獨立性 C.邏輯獨立性 D.分布獨立性
3.應用程序設計的工作開始于數據庫設計步驟的()A.需求分析階段 B.概念設計階段
C.邏輯設計階段 D.物理設計階段 4.在關系R中,代數表達式 σ3<4(R)表示()A.從R中選擇值為3的分量小于第4個分量的元組組成的關系 B.從R中選擇第3個分量值小于第4個分量的元組組成的關系
C.從R中選擇第3個分量的值小于4的元組組成的關系
D.從R中選擇所有元組組成的關系
5.對關系模式進行分解時,要使分解具有無損失連接性,在下屬范式中最高可以達到()A.2NF B.3NF C.BCNF D.4NF 6.事務的ACID性質,是指事務具有原子性、一致性和()A.隔離性、透明性 B.獨立性、透明性
C.隔離性、持久性 D.共享性、持久性
7.各個場地采用同一類型的數據模型,使用不同型號的DBMS,這種分布式數據庫系統的類型屬于()A.同構同質型 B.同構異質型 C.異構同質型 D.異構異質型 8.為解決“丟失更新”問題,事務在更新一個數據集合前,必須獲得對它的()A.S鎖 B.X鎖 C.S鎖和X鎖 D.S鎖或X鎖
9.在刪除基本表中某個元組時,將以此表為參照表的關系中外鍵與主鍵相同的元組一起刪除,應采用的方式是()A.RESSTRDICT方式 B.CASCADE方式 C.SET NULL方式 D.CHECK方式
10.在SQL的查詢語句中,對應關系代數中“投影”運算的語句是()A.SELECT B.FROM C.WHERE D.SET 11.在關系模式R(U,F)中,X,Y,Z是U中屬性,則多值依賴的傳遞律是()A.如果X→→Y,Y→→Z,則X→→Z B.如果X→→Y,Y→→Z,則X→→YZ C.如果X→→Y,Y→→Z,則X→→YZ D.如果X→→Y,Y→→Z,則X→→Z-Y 12.在數據庫設計中,將E-R圖轉換成關系數據模型的過程屬于()A.需求分析階段
B.邏輯設計階段
C.概念設計階段
D.物理設計階段
13.關系代數的五個基本操作可直接轉換成元組關系演算表達式,它們是:并、差、投影、選擇和()
A.交
B.笛卡爾積
C.自然連接
D.除法 14.SQL語言具有的功能是()A.關系規范化,數據操縱,數據控制
B.數據定義,數據操縱,數據控制
C.數據定義,關系規范化,數據控制
D.數據定義,關系規范化,數據操縱
第18課時 多表查詢(1)
一、教學目的
使學生掌握使用查詢設計器對多表進行查詢
二、教學重難點 多表查詢
三、教學方法 舉例 講授 演示
四、教學過程 同學們,前面我們學習的查詢都是基于一個表進行的,那么如果要在多個表之間進行查詢的話,那就要使用多表查詢,就是我們本節課需要學習的知識了。
我們通過一個例子來讓同學們了解多表查詢的方法。
為了以后舉例的方便,我們再建立一個“圖書訂貨庫”,它包括圖書表、訂貨表、客戶表三個表。分別將圖書表.書名、客戶表.客戶名稱設置為主索引,將訂貨表.書名和客戶名稱設置為普通索引,并且在各表之間建立關聯。如下圖:
在圖書表中輸入數據(所有數據為隨意設置,不做實際參考),如下圖:
在訂貨表中輸入數據,如下圖:
在客戶表中輸入內容,如下圖:
我們建立這個多表查詢的目的是查詢“客戶名稱”為新華書店的訂貨信息。
我們看到,圖書訂貨數據庫中圖書表和客戶表是多對多關系,即一種書可由多個客戶訂購,一個客戶可訂購多種書。而圖書表和訂貨表、客戶表和訂貨表都是一對多關系。
小結:本節主要是讓同學們先建立我們需要的數據表,為下一節課的多表查詢建立基礎。
第19課時 多表查詢(2)
一、教學目的
使學生掌握使用查詢設計器對多表進行查詢
二、教學重難點 多表查詢
三、教學方法 舉例 講授 演示
四、教學過程 同學們,上一節課我們建立了幾個表,這節課我們就用這幾個表來建立一個多表查詢。接上節課的內容。我們打開“文件”菜單,單擊“新建”,選擇“查詢”并單擊“新件文件”按鈕,進入查詢設計器。在“添加表或視圖”窗口中依次將“圖書訂貨庫”的圖書表、訂貨表和客戶表加入到表設計器。如下圖:
由于我們在“圖書訂貨庫”中建立了表間永久關系,因此在添加的表之間自動產生關聯。
注意:如果我們添加了圖書表后接著添加客戶表,由于我們在數據庫中未建立兩表的直接關聯,便會彈出一個“聯接條件”對話框,要求加入聯接條件,我們不需要這兩表建立直接關聯,按“取消”按鈕即可。如下圖:
我們需要了解的項目有客戶名稱、訂購的書名、每本書的定價、訂貨數量、每種書的預付款總額、客戶聯系電話,聯系人等。因此我們在“字段”選項卡中選擇加入相應的字段。
其中的每種書預付款總額沒有與之相應的字段,需要在“函數和表達式”文本框中建立。單擊文本框右側的三點按鈕,進入“表達式設計器”,通過選擇或輸入,在“表達式”框中建立表達式“圖書表.定價*訂貨表.訂貨數量*0.75",其中的0.75指當一次性交清款,將按75折給予優惠。如下圖:
按“確定”按鈕關閉表達式生成器。這時在查詢設計器中的“表達式和函數”文本框中出現剛才建立的表達式,按“添加”按鈕,將表達式加入“選定字段”,并用垂直雙向箭頭調整字段輸出的順序。如下圖:
小結:我們本節課主要向同學們介紹了多表查詢的一部分操作,同學們一定要掌握多表查詢之間幾個表的關系,要區分開什么是內部連接、左連接、右連接和完全連接的區別。
第20課時 多表查詢(3)
一、教學目的
使學生掌握使用查詢設計器對多表進行查詢
二、教學重難點 多表查詢
三、教學方法 舉例 講授 演示
四、教學過程 在“聯接”選項卡中我們取默認的內部聯接。由于要查詢的是各表之間的匹配記錄,因此在為各表間的聯接都要為內部聯接。如下圖:
在“篩選”選項卡中設置篩選條件。一種條件可以有幾種表示方法,如何設置根據個人習慣。篩選條件和上面的聯接條件類似,兩者都是先比較值,然后輸出滿足條件的記錄。不同的是兩者比較的對象,聯接條件是將一個表的字段值與另一個表的字段值相比較,而篩選條件則是字段值與篩選值(實例文本)相比較。這里我們選擇、輸入:訂貨表.客戶名稱=新華書店 我們希望按照預付款數額由小到大排列,因此我們從“選定字段”中將表達式添加到“排序條件”框中。如下圖:
我們不需要分組,“分組依據”選項卡不設置。“雜項”取默認值。這樣,基于“圖書訂貨庫”的一個查詢就完成了。
單擊鼠標右鍵,在快捷菜單中選取“運行查詢”,就會在默認的“瀏覽”窗口中看到我們查詢的結果,如下圖:
和輸出到“瀏覽”窗口類似,如果我們選擇“屏幕”則會將查詢結果顯示在屏幕上。
如果我們在“查詢去向”中選擇“表”,并在其文本框中輸入“ls”,則當我們運行查詢后,查詢結果就送到ls.dbf表中,用來進行各種操作。從“打開”窗口就可看到出現了 ls.dbf 的表名。如下圖:
和選擇“表”類似,如果選擇“報表”或“標簽”,會將這次查詢的結果送到指定的報表和標簽中去。
小結:同學們,我們利用了三節課來學習多表查詢的使用方法,這在我們以后的學習中經常能用到,同學們下去要多加練習。