計算機等級考試:二級VFP機試第19套

字號:

第十九套
    一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
     在考生文件夾下完成如下操作:
     1. 打開"訂貨管理"數(shù)據(jù)庫,并將表order_list添加到該數(shù)據(jù)庫中。
     2. 在"訂貨管理"數(shù)據(jù)庫中建立表customer,表結構描述如下:
     客戶號 字符型(6)
     客戶名 字符型(16)
     地址 字符型(20)
     電話 字符型(14)
     3. 為新建立的customer表創(chuàng)建一個主索引,索引名和索引表達式均是"客戶
     號"。
    4. 將表order_detail從數(shù)據(jù)庫中移出,并永久刪除。
    本題主要考核點:
    將一個自由表添加到數(shù)據(jù)庫中、表結構的建立、表索引的建立、將表移出數(shù)據(jù)庫并刪除該表等知識點
    本題解題思路:
    第一步:打開考生文件夾下的"訂貨管理"數(shù)據(jù)庫
    第二步:打開數(shù)據(jù)庫菜單選擇"添加表(A)"在彈出的"打開"對話框中,選定考生文件夾下的order_list表,再點擊"確定"即可
    第三步:再次打開數(shù)據(jù)庫菜單選擇"新建表(N)",在彈出的對話框中選擇"新建表",并在彈出"創(chuàng)建"對話框中選定考生文件夾,在輸入表名中填入"customer",再點擊保存。
    第四步:在彈出的表設計器中按題面的要求依次輸入各個字段的定義,選擇"索引"標簽,在索引名列中填入"客戶號",在索引類型列中選擇"主索引",在索引表達式列中填入" 客戶號",點擊"確定"按鈕,保存表結構。
    第五步:在數(shù)據(jù)庫設計器窗口中單擊選中order_detail,打開主窗口的數(shù)據(jù)庫菜單選擇"移去(R)",并在彈出的菜單中選擇"刪除(d)"即可,這樣就將表order_detail從數(shù)據(jù)庫中移出,并永久刪除。
    二、簡單應用(2小題,每題20分,計40分)
     在考生文件夾下完成如下簡單應用:
     1. 將customer1表中的全部記錄追加到customer表中,然后用SQL SELECT語句
     完成查詢:列出目前有訂購單的客戶信息(即有對應的order_list記錄的
     customer表中的記錄),同時要求按客戶號升序排序,并將結果存儲到
     results表中(表結構與customer表結構相同)。
     2. 打開并按如下要求修改form1表單文件(最后保存所做的修改):
     (1) 在"確定"命令按鈕的click事件(過程)下的程序有兩處錯誤,請改正之;
    (2) 設置Text2控件的有關屬性,使用戶在輸入口令時顯示"*"(星號)
    本題主要考核點:
     SQL中的查詢SELECT查詢,子查詢,查詢的排序,查詢的結果的去向;控件的屬性、表單的操作等知識點。
    解題思路:
     第一小題:將customer1中的全部記錄追加到customer中,要將一個表的所有記錄追加到另一個表中使用APPEND FROM 命令,首先打開customer:USE CUSTOMER,在APPEND FROM的后面是要追加到CUSTOMER的表名,這里是CUSTOMER1。要得到目前有訂購單的客戶信息,需要用到子查詢,首先得到在 ORDER_LIST中有訂單的客戶號,可以用SELECT 客戶號 FROM ORDER_LIST GROUP BY 客戶號得到,這里用到了GROUP BY 子句從而保證了得到的子查詢中客戶號的性。再以此子查詢做為查詢的條件便可以從CUSTOMER中得到所有有訂單的客戶的信息,條件放在WHERE子句的后面 WHERE 客戶號 IN (SELECT 客戶號 FROM ORDER_LIST GROUP BY 客戶號);對結果集進行排序需要ORDER BY 子句,ORDER BY 客戶號;將結果集放入一個永久表中需要用到INTO TABLE子句,INTO TABLE RESULTS。這樣完整的SQL語句便出來了:
    SELECT * FROM CUSTOMER;
    WHERE 客戶號 IN;
    (SELECT 客戶號 FROM ORDER_LIST GROUP BY 客戶號);
    ORDER BY 客戶號;
    INTO TABLE RESULTS
     第二小題:打開考生文件夾下的"form1.scx",在表單設計器中雙擊"確定"控件打開代碼編輯器,第一處錯誤:thisform.text1= thisform.text2判斷條件的錯誤,這里需要的是兩個編輯文本框中的文本進行的比較,而要得到text1中文本和text2控件中的文本需要用到text的屬性,所以此處應改為:thisform.text1.text=thisform.text2.text;另一處錯誤是對于關閉表單需要用表單的release方法,而不是close方法,況且表單對象也沒有close方法,所以此處應改為:thisform.release。可以通到對 text控件對象的PasswordChar屬性賦值為:"*",來使用戶在輸入口令時顯示"*"。
    三、綜合應用(1小題,計30分)
     使用報表設計器建立一個報表,具體要求如下:
     (1) 報表的內容(細節(jié)帶區(qū))是order_list表的訂單號、訂購日期和總金額;
     (2) 增加數(shù)據(jù)分組,分組表達式是 "order_list.客戶號",組標頭帶區(qū)的內容
     是"客戶號",組注腳帶區(qū)的內容是該組訂單的"總金額"合計
     (3) 增加標題帶區(qū),標題是 "訂單分組匯總表(按客戶)",要求是3號字、黑
     體, 括號是全角符號。
     (4) 增加總結帶區(qū),該帶區(qū)的內容是所有訂單的總金額合計。最后將建立的報
     表文件保存為report1.frx文件。
    提示:在考試的過程中可以使用"顯示→預覽"菜單查看報表的效果。
    本題主要考核點:
    利用報表設計器設計報表的方法
    解題思路:
    第一步:在Visual FoxPro的主窗中按下組合鍵Ctrl+N,系統(tǒng)彈出"新建"對話框,在"文件類型"中選擇"報表",再點擊"新建文件"按鈕,則系統(tǒng)彈出"報表設計器"窗口
    第二步:從"報表設計器"的工具欄上單擊"數(shù)據(jù)環(huán)境"按鈕,系統(tǒng)打開"數(shù)據(jù)環(huán)境設計器",這時主菜單欄出現(xiàn)"數(shù)據(jù)環(huán)境"菜單,從中選擇"添加",系統(tǒng)彈出"添加表或視圖"對話框,選擇考生文件夾下的order_list表,并點擊"關閉"按鈕
    第三步:在報表設計器和數(shù)據(jù)環(huán)境設計器都可見的情況下,在數(shù)據(jù)環(huán)境設計器中表order_list的訂單號字段上按下鼠標左鍵,并拖動到報表設計器的細節(jié)帶區(qū)在合適的位置松開鼠標。用同樣的方法,將訂購日期、總金額都放置在細節(jié)帶區(qū)的合適位置
    第四步:單擊主菜單的"報表",并選擇"數(shù)據(jù)分組(G)",系統(tǒng)彈出數(shù)據(jù)分組對話框,單擊對話框中的省略號按鈕,彈出" 表達式生成器",從中選擇分組表達式:order_list.客戶號。這樣"報表設計器"中增加"組標頭"和"組注腳"帶區(qū)。適當調整兩個新增加的帶區(qū)的高度。利用第三步的方法,在"組標頭"帶區(qū)添加顯示order_list客戶號字段的域控件。單擊"報表控件"工具欄的"域控件"按鈕,然后在"組注腳 1:客戶號"帶區(qū)的適當位置上單擊鼠標,系統(tǒng)顯示一個"報表表達式"對話框,在"表達式"文本框中通過單擊右側對話按鈕,打開表達式生成器對話框,從中選擇order_list.總金額字段,單擊"確定",單擊"報表表達式"對話框的"計算(C)",彈出"計算字段"對話框,選中"總和"計算類型,單擊" 確定",在"報表表達式"對話框中單擊"確定",這樣組注腳帶區(qū)完成
    第五步:用和第四步類似的方法可以建立標題帶區(qū)和總結帶區(qū)
    第六步:以文件名report1.frx將報表文件保存在考生文件夾下。