1、第二十章 資料庫專題製作n資料規劃與管理n進貨n銷貨n查詢n報表製作請您寫一程式處理進貨、銷貨、存貨及帳款的處理程式, 程式要求如下:n1. 資料庫管理n(1) 產品基本資料編輯。n(2) 客戶基本資料編輯。n2. 進貨依進貨單修改產品庫存。n3. 銷貨銷貨時列印銷貨單, 並修改庫存量。n4. 查詢n(1) 產品查詢。n(2) 經銷商查詢。n(3) 經銷商訂貨明細表。n(4) 訂單明細表。n5. 報表製作n(1) 列印印書通知單(當庫存低於100 本時)。n(2) 列印每日庫存報表。n(3) 列印每月庫存報表。n(4) 列印每月客戶結算清單(來往方式為月結)。n(5) 列印客戶基本資料。n補充
2、說明- 什麼是月結?商品的販賣方式通常有三種, 一種是寄賣, 另一種是月結, 第三種是買斷的現金交易。寄賣是東西有賣出去才能收款, 月結是本月訂購的商品, 上游廠商會於下月初寄帳單來請款, 當零售商收到帳單時, 可開一至三個月期限的支票給供應商。比較弱勢的產品或新成立的公司只能先從寄賣開始, 一般大部分的商品都採用月結, 現金交易則適用於一般消費者、強勢產品、或次級品低價傾銷給攤販。20 - 1 資料庫規畫與管理n首先您必須使用BDE Administrtor 決定資料庫的路徑及別名, 本書延用路徑C: BCBbook 及別名horng。n其次規劃資料表的欄位結構及輸入基本資料, 本例只需四個
3、資料表, 分別是產品資料表(product.db)、客戶基本資料表(customer.db)、訂單資料表(orde.db) 及訂單產品資料表(orpr.db) 等四個資料表。n1. 產品基本資料表(product.db)n2. 客戶基本資料表(customer.db)n3. 訂單資料表如下(orde.db; 資料表名稱請勿使用order 或number, 因為那是SQL 的保留字, 誤用保留字的後果就是無法執行SQL 敘述)於Paradox 中一個資料表若要同時定義兩個以上的索引, 應於Table properties中點選Secondary Indexes 。n4. 訂單產品資料如下(orp
4、r.db)n任一客戶的任一訂單有可能包含許多產品, 所以訂單資料表依據資料庫正規化的原則, 必須拆成以上兩個資料表。n若將以上兩個資料表合而為一如下, 則會有客戶編號、訂購日期重覆出現的情況, 此即破壞資料正規化中的資料不可重覆的規定。n依照資料正規化的原則, 以上資料應拆成兩個資料表如下:n範例20-1a 及20-1b 分別可輸入產品及客戶基本資料表, 其作法同範例17-2a 。其次, 範例20-1a 執行結果如右圖, 輸入結束之後, 請務必按一下Post edit 按鈕, 才能將資料緩衝區的資料回存硬碟。20 - 2 進貨n進貨的操作是看到進貨單, 庫管人員輸入產品編號與數量, 而完成進貨
5、, 以下範例說明進貨的處理方式。範例20-2an進貨作業處理。20 - 3 銷貨範例20-3an試寫程式完成銷貨處理作業。20 - 4 查詢n常用的查詢有產品資料表(product.db) 及客戶資料表(customer.db) 查詢,請參考範例17-4g 自行完成。以下範例將介紹訂單的產品明細查詢, 此為套用Master Detail 的典型範例。範例20-4an如何製作訂單產品明細表。範例20-4bn同上範例, 但Master 使用Query。範例20-4cn如何查詢每一客戶的每一訂單產品明細表。20 - 5 報表製作常見的報表製作有庫存日報表、庫存月報表、客戶資料表、採購建議表及月結應收帳款, 其中前三者請自行參考範例18-1a, 採購建議表則使用一個Query 物件, 其SQL 敘述如下:select * from product where num 100月結應收帳款報表則同範例18-3a 的分群列印, 唯SQL 敘述應加上between 月/1/ 年and 月/30/ 年, 代表列印某一個月的應收帳款, 請讀者自行練習。