二、簡單應(yīng)用(2小題,每題20分,計40分)
在考生文件夾下完成如下簡單應(yīng)用:
1. 列出總金額大于所有訂購單總金額平均值的訂購單(order_list)清單(按客戶號升序排列),并將結(jié)果存儲到results表中(表結(jié)構(gòu)與order_list表結(jié)構(gòu)相同)。
2. 利用Visual Foxpro的"快速報表"功能建立一個滿足如下要求的簡單報表:
(1) 報表的內(nèi)容是order_detail表的記錄(全部記錄,橫向);
(2) 增加"標(biāo)題帶區(qū)",然后在該帶區(qū)中放置一個標(biāo)簽控件,該標(biāo)簽控件顯示報表的標(biāo)題"器件清單";
(3) 將頁注腳區(qū)默認(rèn)顯示的當(dāng)前日期改為顯示當(dāng)前的時間;
(4) 最后將建立的報表保存為report1.frx。
本題主要考核點:
SQL中的查詢SELECT查詢、聯(lián)接查詢、查詢的排序、查詢的結(jié)果的去向等;報表的建立方法等知識點.
解題思路:
第一小題:為了能得到所有總金額大于平均總金額的訂購單信息,應(yīng)該首先得到總金額的平均值,利用:SELECT AVG(總金額) FROM ORDER_LIST INTO ARRAY AFieldsValue,并將總金額的平均值放到一個數(shù)組變量之中AFieldsValue;下一步就可以以總金額>AFieldsValue為條件得到總金額大于平均總金額的訂購單信息,將這一條件放在WHERE子句的后面,查詢結(jié)果的排序要用到ORDER BY子句,ORDER BY 客戶號;查詢結(jié)果要放入一個永久表中要用到INTO TABLE子句,結(jié)果保存到RESULTS表中所以要用INTO TABLE RESULTS.本題由兩條SQL語句組成:
SELECT AVG(總金額) FROM ORDER_LIST INTO ARRAY AFieldsValue
SELECT * FROM ORDER_LIST WHERE 總金額>AFieldsValue;
ORDER BY 客戶號;
INTO TABLE RESULTS
第二小題:
第一步:在Visual FoxPro主窗口按下組合鍵Ctrl+N,系統(tǒng)彈出"新建"對話框,在"文件類型"中選擇"報表",再點擊新建文件按鈕,系統(tǒng)彈出報表設(shè)計器
第二步:單擊主窗口"報表"菜單下的"快速報表(O)",系統(tǒng)彈出"打開"對話框,選擇考生文件夾下的order_detail.dbf表,單擊"確定",系統(tǒng)彈出"快速報表"對話框,單擊"確定"按鈕后便生成了一個報表,將報表文件以文件名report1.frx保存在考生文件夾下。
第三步:選擇主菜單"報表"下的"標(biāo)題/總結(jié)(T)",彈出"標(biāo)題/總結(jié)"對話框,在"報表標(biāo)題"類型中選擇"標(biāo)題帶區(qū)",單擊"確定"按鈕,這樣就在報表中加入了一個"標(biāo)題帶區(qū)",打開"報表控件工具欄",在打開的"報表控件"中選擇"標(biāo)簽"控件,在標(biāo)題帶區(qū)點擊鼠標(biāo),輸入"器件清單"
第四步:雙擊"頁注腳"中的顯示當(dāng)前日期的域控件,打開"報表表達(dá)式",在"表達(dá)式"文本框中將原來的DATE()用TIME()來代替。點擊"確定"
第五步:以文件名report1.frx將報表文件保存在考生文件夾下。
三、綜合應(yīng)用(1小題,計30分)
首先將order_detail表全部內(nèi)容復(fù)制到od_bak表,然后對od_bak表編寫完成如下
功能的程序:
1. 把"訂單號"尾部字母相同并且訂貨相同 ("器件號"相同)的訂單合并為一張訂單,新的"訂單號"就取原來的尾部字母,"單價"取最低價,"數(shù)量" 取合計;
2. 結(jié)果先按新的"訂單號"升序排序,再按"器件號"升序排序;
3. 最終記錄的處理結(jié)果保存在od_new表中;
4. 最后將程序保存為prog1.prg,并執(zhí)行該程序。
本題主要考核點:
程序的建立方法、程序中循環(huán)結(jié)構(gòu)的使用、SQL查詢語句的使用、記錄的修改方法;報表的建立方法等知識點
本題解題思路:
第一步:在VisualFoxPro主窗口下按組合鍵Ctrl+N,系統(tǒng)彈出"新建"對話框,在"文件類型"中選擇"程序",再點擊"新建文件"按鈕,則系統(tǒng)彈出程序編輯窗口;
第二步:在彈出的窗中中輸入以下代碼:
SET TALK OFF
SET SAFETY OFF
sele * from order_detail into table od_bak
&&復(fù)制一個表用來存放結(jié)果
USE OD_BAK
COPY STRUCTURE TO OD_NEW
&&首先得到所有的新定單號和器件號:
SELECT RIGHT(訂單號,1) AS 新訂單號,器件名,器件號,;
RIGHT(訂單號,1)+器件號 AS NEWNUM;
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |