第十九章BDE专题制作课件.ppt
第十九章 BDE專題製作,19-1資料庫規畫與管理 19-2進貨19-3銷貨19-4查詢,第十九章 BDE專題製作,假設您要開一家出版社,您的產品如下:您的經銷商如下:,請您寫一程式處理進貨、銷貨、存貨及帳款的處理程式,程式要求如下:,1.資料庫管理產品基本資料編輯。客戶基本資料編輯。2.進貨依進貨單修改產品庫存。3.銷貨依序輸入客戶編號、產品編號與產品數量,並修改庫存量。列印銷貨單。4.查詢產品查詢。經銷商查詢。經銷商訂貨明細表查詢。訂單明細表查詢。5.報表製作列印印書通知單(當庫存低於100本時)。列印每日庫存報表。列印每月庫存報表。列印每月客戶結算清單(來往方式為月結)。列印客戶基本資料。,補充說明:,什麼是月結?商品的販賣方式通常有三種,一種是寄賣,另一種是月結,第三種為買斷的現金交易。寄賣是東西有賣出去才能收款,月結是本月訂購的商品,上游廠商會於下月初寄帳單來請款,當零售商收到帳單時,可開一至三個月期限的支票給供應商。比較弱勢的產品或新成立的公司只能先從寄賣開始,一般大部分的商品都採用月結,現金交易則適用於一般消費者、強勢產品、或次級品低價傾銷給攤販。,19-1資料庫規畫與管理,首先您必須使用BDE Administrtor決定資料庫的路徑及別名,本書延用路徑C:DelBook及別名horng。其次規劃資料表的欄位結構及輸入基本資料,本例只需使用四個資料表,分別是產品資料表(product.db)、客戶基本資料表(customer.db)、訂單資料表(orde.db)及訂單產品資料,1.產品基本資料表(product.db),2.客戶基本資料表(customer.db),3.訂單資料表(orde.db;資料表名稱請勿使用order或number,因為那是SQL的保留字,誤用保留字的後果就是無法執行SQL敘述)。,於Paradox中一個資料表若要同時定義兩個以上的索引,應於Table properties中點選Secondary Indexes。,4.訂單產品資料表(orpr.db),補充說明:,任一客戶的任一訂單有可能包含許多產品,所以訂單資料表依據資料庫正規化的原則,必須拆成以上orde及orpr兩個資料表。若將以上兩個資料表合而為一如下,則會有客戶編號、訂購日期重複出現的情況,此即破壞資料正規化中的資料不可重複的規定。,依照資料庫正規化的原則,以上資料應拆成兩個資料表如下:,範例19-1a及19-1b分別可輸入產品及客戶基本資料表,其作法同範例16-2a輸入結束之後,請務必按一下“結束”(Tablel.Close();),才能將資料緩衝區的資料回存硬碟。,19-2 進貨,進貨的操作步驟是看到進貨單,庫管人員輸入產品編號與數量,而完成進貨,以下範例說明進貨的處理方式。,範例19-2a,進貨作業處理。,19-3銷貨,當客戶上門、打電話或傳真訂購產品時,電腦記錄訂單編號、客戶編號及每樣產品的編號、數量及折扣、庫存減至訂購量、列印送貨單,而完成一筆交易,我們稱此作業為銷貨,請看以下範例說明。,範例19-3a,試寫程式完成銷貨處理作業。,19-4查詢,常用的查詢有產品資料表(product.db)及客戶資料表(customer.db)查詢,請參考範例 16-4g自行完成。以下範例將介紹訂單的產品明細查詢,此為套用Master/Detail的典型範例,範例16-4g,同上範例,但設計一個更具親和性的搜尋資料介面。,範例19-4a,如何製作訂單產品明細表。補充說明:本例共使用三個Table物件,Table1是Master,Table2是Detail,但Table1的orde.db僅有客戶編號並沒有客戶名稱,不易瀏覽,所以使用Table3將訂單資料表(orde.db)中的客戶編號(cuid)至customer.db中查閱客戶名稱,查閱的方式請看範例16-2e。,範例16-2e,同上範例,但增加查閱欄位,印出學生姓名補充說明:欲關聯的欄位均需事先索引才能順利取得關聯,如本例stugrd.db的id欄及stuname的id欄均須事先製作索引。,範例19-4b,同上範例,但Master使用Query。補充說明:1.Master/Detail的應用中,Master可為Query或Table,但Detail僅能使用Table。2.本例的Master採用Query,其SQL屬性設定如下:select orde.orid,customer.name,orde.ormo,orde.ordatefrom customer,ordewhere customer.id=orde.orid3.適當的使用SQL敘述可簡化使用者的工作負荷,本例的Master採用SQL敘述,只需一個Query物件即可,但上例因需查閱,故需另外安排一個Table當查閱欄位。,範例19-4c,如何查詢每一客戶的每一訂單產品明細表補充說明:本例共使用三個Table,第一個Table指向customer.db,第二個Table指向orde.db,第三個Table指向orpr.db,然後分別設定Table1與Table 2的Master/Detail及Table2與Table3的Master/Detail關係即可。,習題,1.請將本章所有表單,融合在同一個專案。(未完成的表單則請自行創作)2.請於本章的訂單資料表orde.db增加一個業務員欄位,且可統計及列印每位業務員每日的業績及每月應收帳款,試寫程式完成以上功能。3.請於本章的專題,新增一種查詢,可以逐一瀏覽每樣產品的銷售明細。,某次聯招共十人應考,成績、志願表及各校缺額如下:,(1)試完成分發作業,並印出每人錄取之學校或不錄取。(2)試印出各校錄取名單及錄取最低分數,輸出時以各校錄取最低分為輸出順序(提示:將個人成績由大而小排序,由最高分者先選學校,並將該校缺額減一,直到各校缺額均為零為止)。,5.設某公司交易記錄如下表:(於次頁)(1)試使用適當的元件將以上交易儲存至資料庫,(2)試完成以下統計表報:1.每日各產品銷售數量。2.每日各業務員銷售金額。3.每月各項產品銷售數量排行榜。4.每月各業務員銷售金額排行榜。5.每月各客戶購買金額排行榜。6.每月各組業務員(p、q)銷售金額排行榜,(3)試完成以下線上查詢工作:1.輸入客戶編號而得其交易情形。2.輸入產品編號而得單價。3.輸入各日期而得其營業狀況。,6.假設你要開一家銀行,請設計程式完成以下功能。可開戶。可存款、提款。可於每年6月20日及12月20日計算利息,利息計算以客戶每日餘額乘以日利率即可每位客戶有存摺,可列印其存提款狀況、利息所得及存款餘額。可列印每日客戶的存提款金額及排行榜等日報表功能。可列印每月客戶存提款金額及排行榜等月報表功能。可於螢幕瀏覽每位客戶的交易明細。7.假如你要開一家DVD/VCD出租店,請設計程式完成以下功能。可鍵入客戶基本資料(採會員制,客戶繳交一定金額可觀賞一定數量的片子)可借片及還片。可於螢幕瀏覽每位客戶的借片狀態及點數餘額。可於螢幕瀏覽當日每位客戶的借片狀態。可列印每日逾期未還的片子。8.假如你要開一家電器維修業,請設計程式完成以下功能。可鍵入客戶基本資料。客戶送修機器時,可由該機器型號查得過去的維修狀態。客戶送修後,可由該機器型號查得目前維修進度及估價。9.請自行選擇行業並完成其電腦化作業。你的行業為何?你的預期功能為何?你的資料庫存內容為何?,