亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        計算機等級考試二級VFP機試試題18

        字號:

        第十八套
            一、基本操作題(共四小題,第1和2題是7分、第3和4題是8分)
             在考生文件夾下完成如下操作:
             1. 打開"訂貨管理"數(shù)據(jù)庫,并將表order_list添加到該數(shù)據(jù)庫中。
             2. 在"訂貨管理"數(shù)據(jù)庫中建立表order_detail,表結(jié)構(gòu)描述如下:
             訂單號 字符型(6)
             器件號 字符型(6)
             器件名 字符型(16)
             單價 浮動型(10.2)
             數(shù)量 整型
             3. 為新建立的order_detail表建立一個普通索引,索引名和索引表達式均
             是"訂單號"。
            4. 建立表order_list和表order_detail間的永久聯(lián)系(通過"訂單號"字段)。
            本題主要考核點:
            將一個自由表添加到數(shù)據(jù)庫中、表結(jié)構(gòu)的建立、兩個表之間建立永久聯(lián)系等知識點
            本題解題思路:
            第一步:打開考生文件夾下的"訂貨管理"數(shù)據(jù)庫
            第二步:打開數(shù)據(jù)庫菜單選擇"添加表(A)",在彈出的"打開"對話框中,選定考生文件夾下的order_list表,再點擊"確定"即可
            第三步:再次打開數(shù)據(jù)庫菜單選擇"新建表(N)",在彈出的對話框中選擇"新建表",并在彈出"創(chuàng)建"對話框中選定考生文件夾,在輸入表名中填入"order_detail",再點擊保存。
            第四步:在彈出的表設計器中按題面的要求依次輸入各個字段的定義,選擇"索引"標簽,在索引名列中填入"訂單號",在索引類型列中選擇"普通索引",在索引表達式列中填入"訂單號",點擊"確定"按鈕,保存表結(jié)構(gòu).
            第五步:單擊選中order_list中的主索引"訂單號",并拖拽到order_detail的"訂單號"索引上,鼠標箭頭會變成小矩形;釋放鼠標后,即出現(xiàn)了關系符號,這樣便可以建立起永久關系。
            二、簡單應用(2小題,每題20分,計40分)
             在考生文件夾下完成如下簡單應用:
             1. 將 order_detail1表中的全部記錄追加到order_detail表中,然后用SQL
             SELECT語句完成查詢:列出所有訂購單的訂單號、訂購日期、器件號、器件
             名和總金額(按訂單號升序,訂單號相同再按總金額降序)
             并將結(jié)果存儲到results表中(其中訂單號、訂購日期、總金額取自
             order_list表,器件號、器件名取自order_detail表)。
             2. 打開modi1.prg命令文件,該命令文件包含3條SQL語句,每條SQL語句中都有
             一個錯誤,請改正之(注意:在出現(xiàn)錯誤的地方直接改正,不可以改變SQL
            語句的結(jié)構(gòu)和SQL短語的順序)。
            本題主要考核點:
             SQL中的查詢SELECT查詢,聯(lián)接查詢,查詢的排序,查詢的結(jié)果的去向和SELECT中的短語的正確使用。
            解題思路:
            第一小題:將order_detail1中的全部記錄追加到order_detail中,要將一個表的所有記錄追加到另一個表中使用APPEND FROM 命令,首先打開order_detail:USE ORDER_DETAIL,在APPEND FROM的后面是要追加到order_DETAIL的表名,這里是order_DETAIL1。查詢表中的數(shù)據(jù)要用到SELECT命令,要查詢的數(shù)據(jù)來源于ORDER_DETAIL和order_list表,將它們置于FROM的后面,并用逗號隔開,并分別為它們指定一個別名DetAlias和 LisAlias;由于是聯(lián)接查詢要指明查詢的條件,將聯(lián)接條件DetAlias.訂單號=LisAlias.訂單號放在WHERE短語的后面,同時要對結(jié)果集按照訂單號的升序和總金額的降序進行排序,所以要將:訂單號,總金額 DESC放在ORDER BY 短語的后面,結(jié)果集要存儲到results表中,所以要將:results放在INTO TABLE 后面。由于查詢的結(jié)果不是所有的屬性,所以需要指明結(jié)果的屬性,并且訂單號在兩個表中都存在,所以要特別指定此屬性來自那一個源表(這里用表的別名來代替)。這樣就形成了一個完整的查詢語句:
            SELECT LisAlias.訂單號,訂購日期,器件號,器件名,總金額;
            FROM ORDER_LIST LisAlias,ORDER_DETAIL DetAlias;
            WHERE LisAlias.訂單號=DetAlias.訂單號;
            ORDER BY LisAlias.訂單號,總金額 DESC;
            INTO TABLE RESULTS
            第二題:&&所有器件的單價增加5元
             UPDATE order_detail1 SET 單價 WITH 單價 + 5
             &&這里混淆了SQL語句和FoxPro命令。用SQL語句中的UPDATE可以更新記錄的內(nèi)容,而不是
             &&用WITH,而是用等號。所以應該改為:UPDATE ORDER_DETAIL1 SET 單價=單價+5
            &&計算每種器件的平均單價
            SELECT 器件號,AVG(單價) AS 平均價 FROM order_detail1 ORDER BY 器件號 INTO CURSOR lsb
            &&這里將分組的子句GROUP BY與排序的子句ORDER BY相混淆了,這里應該用分組的子句&&GROUP BY來代替排序的子句ORDER BY子句。
            &&查詢平均價小于500的記錄
            SELECT * FROM lsb FOR 平均價 < 500
             &&在SQL的查詢語句中表示條件的是用WHERE子句,與在FoxPro中的List命令用FOR不同。
            三、綜合應用(1小題,計30分)
             在做本題前首先確認在基礎操作中已經(jīng)正確地建立了order_detail表,在簡單
             應用中已經(jīng)成功地將記錄追加到order_detail表。
             當order_detail表中的單價修改后,應該根據(jù)該表的"單價"和"數(shù)量"字段修改
             order_list表的總金額字段,現(xiàn)在有部分order_list記錄的總金額字段值不正
             確,請編寫程序挑出這些記錄,并將這些記錄存放到一個名為od_mod的表中
             (與order_list表結(jié)構(gòu)相同,自己建立),然后根據(jù)order_detail表的"單
             價"和"數(shù)量"字段修改od_mod表的總金額字段(注意一個od_mod記錄可能對應幾
             條order_detail記錄),最后od_mod表的結(jié)果要求按總金額升序排序,編寫的
             程序最后保存為prog1.prg。
            本題主要考核點:
            程序的建立方法、程序中循環(huán)結(jié)構(gòu)的使用、SQL查詢語句的使用、記錄的修改方法等知識點
            本題解題思路:
            第一步:在VisualFoxPro主窗口下按組合鍵Ctrl+N,系統(tǒng)彈出"新建"對話框,在"文件類型"中選擇"程序",再點擊"新建文件"按鈕,則系統(tǒng)彈出程序編輯窗口;
            第二步:在彈出的窗中中輸入以下代碼:
            SET TALK ON
            SET SAFETY ON
            &&計算出每個訂單的總金額
            SELECT 訂單號,SUM(單價*數(shù)量) AS 總金額;
            FROM ORDER_DETAIL;
            GROUP BY 訂單號;
            INTO CURSOR CurTable
            &&首先應該得到每一訂單的總金額。由于同一個訂單由多種商品組成,所以要求出
            &&同一訂單的總金額應該將同一訂單所包含的商品合計在一起,這就作到了SUM函數(shù)
            &&其分組的依據(jù)是訂單號放在ORDER BY子句的后面,將結(jié)果集放入一個臨時表CurTable,
            &&將臨時表名CurTable放在INTO CURSOR子句的后面
            SELECT ORDER_LIST.*;
            FROM ORDER_LIST,CurTable;
            WHERE ORDER_LIST.訂單號=CurTable.訂單號 AND ORDER_LIST.總金額<>CurTable.總金額;
            INTO TABLE OD_MOD
            &&根據(jù)上面所得到的臨時表中每一訂單的總金額來得到order_list中不正確的記錄
            &&由于要在一個查詢中用到另一個表所以要用到查詢,將它們分別放在FROM子句
            &&的后面,兩個表名之間用逗號隔開;在WHERE子句中放入聯(lián)接的條件和查詢的條件
            && ORDER_LIST.訂單號=CurTable.訂單號 AND ORDER_LIST.總金額<>CurTable.總金額
            &&查詢的結(jié)果集要放入永久表OD_MOD中,將OD_MOD放在INTO TABLE子句的后面
            USE OD_MOD
            DO WHILE NOT EOF() &&遍歷OD_MOD中的每一條記錄
             SELECT CurTable.總金額 FROM CurTable;
             WHERE CurTable.訂單號=OD_MOD.訂單號;
             INTO ARRAY AFieldsValue
             &&從臨時表CurTable中得到與當前記錄的訂單號相同的訂單的正確的總金額
             &&將條件CurTable.訂單號=OD_MOD.訂單號,放在WHERE子句的后面;
             &&將結(jié)果放入一個數(shù)組變量AFieldsValue中
             REPLACE 總金額 WITH AFieldsValue
             &&用正確的總金額來代替原來的總金額
             SKIP
            ENDDO
            CLOSE ALL
            &&先生成一個臨時表
            SELECT * FROM OD_MOD ORDER BY 總金額;
            INTO CURSOR CurTable
            &&再從臨時表生成表,并覆蓋原表
            SELECT * FROM CurTable INTO TABLE OD_MOD
            SET TALK OFF
            SET SAFETY OFF
            第三步:單擊"保存"工具欄按鈕,以文件名prog1.prg保存程序文件在考生文件夾下,并運行程序。