第6章MFC ODBC编程 封装类CRecordset,从该类派生应用程序里使用的CCommonRs类。以CCommonRs类为 基础,实现对ODBC数据源的数据访问。 实例实现效果 ODBCDemo2是本书用于阐述MFC ODBC数据库编程的实例应用程序,该应用程序 实现了对某销售公司日常销售业务的信息浏览和报表操作。应用程序运行界面如图6-1所 示。 无标重商品们售管班系筑 回× 文件售报告D 产品吧容户©覆员自活货商①报表)查看心帮助山 DPCE 客户D公司名称 联系人姓超联系人头枪地址装市地区端码国家电话 传真 Bon app 13008 91244540 9124,4541 Bottom-Dor Ma... 23T 504)5554723 04)555m BSBEV B's Beverages 销售代表 Faunde..London EC2 5NT (1715551212 Cactus Comias P... Patndo Smpcon 101355555 (10135-4892 CENTC Centro comeraa... rc0年mg 5T书,-+10, 05022 (5)555392 5)5557293 Yang Wang 物 3012 瑞士 0452-076545 Pedro Aforso 钠善员 05432-043巴西 (11)555-747 Corscidated Hold e的Brown 钠售代表 eakk.…London WX1 6LT 英 (171)55s Cradherbut Dek.. Sve otteb 采购员 wase...Aschen 5206 0241-059428 Du monde enper Jenine Labrune 物王 67,rue...Nartes 44000 法国 0.67.68.88 4067.日989 EASTC Eastemn Cornection Ann Devon 的售代理 35Km.. London WK36FW关国 (171)555-0297 (171)555.… ERNSH Ernst Handel Roland Mend月 销墙经理 kKM0g94G里 8010 7675-3425 7675-3426 FAMIA Famla Arqubald力 Arla Cruez 市场助理 Rua Or P3P 05442-030巴西 (11)555-3857 月5SA FISSA Fabrica inte... Dlego Roe 结经理 C/Mor...Madnid 28034 西班牙 (91)5559444 91)5555 FOLIG Foles gourmanoes Martne Ranc 助理,1B4,C: e 59000 法国 20,16.10.16 20.1610.17 FOLKO Fok och fHB Mara Larsson 物王, erga,已r钟g 584467 0695-345721 FRANK Frankeriversand Peter Franoen 市纯经理 Beriner...Miechen 80805 089-0877310 089-0877451 FRANR France restauraton Ca十e5hmtt 市巧理 54,nuc..Nartes 44000 法国 40,322121 40322120 FRANS FranchiS.p.A. Paolo Aocortt 销售代表 va Mo.Torio 10100 意大利011-496因260 0114969251 ARB Furia Bacshau e F...Uno Rodriguez 销喜经理 rdm.Usboa 1675 着曹于(1)354-2534 (10354-2535- 致字滚动 图6-1 ODBCDemo2实例应用程序的运行界而 6.3.2实例实现过程 数据库设计 我们利用Microsoft Access工具设计本实例的数据库结构。在本实例里,我们需要利用 数据库存放销售公司的如下信息: ·日常销售信息:指公司日常销售帐单中的客户信息、雇员信息、订购日期、货主 信息、运货商信息。 ·产品信息:指公司现经营产品的产品名称、供应商信息、类别信息、单价以及库 存量等信息。 客户信息:指公司客户的客户名称、联系人信息和客户的地址信息。 ·雇员信息:指公司雇员的雇员姓名、头衔、尊称、出生日期、雇佣日期、联系信 息及其上级等信息。 ·供应商信息:指与公司合作的供应商的名称、地址、联系人等信息。 ·运货商信息:指与公司合作的运货商的名称、电话信息。 ·产品类别信息:指公司所经营产品的类别。 我们为数据库设计了八个表,表“订单”和表“订单明细”存放公司日常销售信息, 表“产品”存放公司的产品信息,表“客户”存放公司的客户信息,表“雇员”存放公司 的雇员信息,表“供应商”存放公司的产品供应商信息,表“运货商”存放公司的运货商 信息,表“类别”存放公司经营产品的类别信息。为了便于数据访问,我们还定义了三个 -117-
第 6 章 MFC ODBC 编程 -117- 封装类 CRecordset,从该类派生应用程序里使用的 CCommonRs 类。以 CCommonRs 类为 基础,实现对 ODBC 数据源的数据访问。 实例实现效果 ODBCDemo2 是本书用于阐述 MFC ODBC 数据库编程的实例应用程序,该应用程序 实现了对某销售公司日常销售业务的信息浏览和报表操作。应用程序运行界面如图 6-1 所 示。 图 6-1 ODBCDemo2 实例应用程序的运行界面 6.3.2 实例实现过程 数据库设计 我们利用 Microsoft Access 工具设计本实例的数据库结构。在本实例里,我们需要利用 数据库存放销售公司的如下信息: 日常销售信息:指公司日常销售帐单中的客户信息、雇员信息、订购日期、货主 信息、运货商信息。 产品信息:指公司现经营产品的产品名称、供应商信息、类别信息、单价以及库 存量等信息。 客户信息:指公司客户的客户名称、联系人信息和客户的地址信息。 雇员信息:指公司雇员的雇员姓名、头衔、尊称、出生日期、雇佣日期、联系信 息及其上级等信息。 供应商信息:指与公司合作的供应商的名称、地址、联系人等信息。 运货商信息:指与公司合作的运货商的名称、电话信息。 产品类别信息:指公司所经营产品的类别。 我们为数据库设计了八个表,表“订单”和表“订单明细”存放公司日常销售信息, 表“产品”存放公司的产品信息,表“客户”存放公司的客户信息,表“雇员”存放公司 的雇员信息,表“供应商”存放公司的产品供应商信息,表“运货商”存放公司的运货商 信息,表“类别”存放公司经营产品的类别信息。为了便于数据访问,我们还定义了三个
第6章MFC ODBC编程 视图,“SalesByCustomer'”视图管理着以客户为统计方式的销售信息,“SalesByEmployee” 视图管理着以雇员为统计方式的销售信息,“SalesByProduct'”视图管理着以产品为统计方 式的销售信息。 下面的表6-1列出了表“订单”的结构,表6-2列出了表“订单明细”的结构,表6-3 列出了表“产品”的结构,表6-4列出了表“客户”的结构,表6-5列出了表“雇员”的 结构,表6-6列出了表“供应商”的结构,表6-7列出了表“运货商”的结构,表6-8列出 了表“类别”的结构。 表6-1表“订单”的结构 字段名称 类型 字段名称 类型 订单ID(key) 自动编号 运货费 货币 客户ID 文本 货主名称 文本 雇员D 数字 货主地址 文本 订购日期 日期/时间 货主城市 文本 到货日期 日期/时间 货主地区 文本 发货日期 日期/时间 货主邮政编码 文本 运货商 数字 货主国家 文本 表6-2 表“订单明细”的结构 字段名称 类型 字段名称 类型 订单D 自动编号 数量 数字 产品D 数字 折扣 数字 单价 货币 表6-3表“产品”1 的结构 字段名称 类型 字段名称 类型 产品ID(key) 自动编号 单价 货币 产品名称 文本 库存量 数字 供应商D 数字 订购量 数字 类别D 数字 再订购量 数字 单位数量 文本 中止 是否 表6-4表“客户”的结构 字段名称 类型 字段名称 类型 客户ID(key) 自动编号 地区 文本 公司名称 文本 邮政编码 文本 联系人姓名 文本 国家 文本 联系人头衔 文本 电话 文本 地址 文本 传真 文本 城市 文本 -118-
第 6 章 MFC ODBC 编程 -118- 视图,“SalesByCustomer”视图管理着以客户为统计方式的销售信息,“SalesByEmployee” 视图管理着以雇员为统计方式的销售信息,“SalesByProduct”视图管理着以产品为统计方 式的销售信息。 下面的表 6-1 列出了表“订单”的结构,表 6-2 列出了表“订单明细”的结构,表 6-3 列出了表“产品”的结构,表 6-4 列出了表“客户”的结构,表 6-5 列出了表“雇员”的 结构,表 6-6 列出了表“供应商”的结构,表 6-7 列出了表“运货商”的结构,表 6-8 列出 了表“类别”的结构。 表 6-1 表“订单”的结构 字段名称 类型 字段名称 类型 订单 ID(key) 自动编号 运货费 货币 客户 ID 文本 货主名称 文本 雇员 ID 数字 货主地址 文本 订购日期 日期/时间 货主城市 文本 到货日期 日期/时间 货主地区 文本 发货日期 日期/时间 货主邮政编码 文本 运货商 数字 货主国家 文本 表 6-2 表“订单明细”的结构 字段名称 类型 字段名称 类型 订单 ID 自动编号 数量 数字 产品 ID 数字 折扣 数字 单价 货币 表 6-3 表“产品”的结构 字段名称 类型 字段名称 类型 产品 ID(key) 自动编号 单价 货币 产品名称 文本 库存量 数字 供应商 ID 数字 订购量 数字 类别 ID 数字 再订购量 数字 单位数量 文本 中止 是/否 表 6-4 表“客户”的结构 字段名称 类型 字段名称 类型 客户 ID(key) 自动编号 地区 文本 公司名称 文本 邮政编码 文本 联系人姓名 文本 国家 文本 联系人头衔 文本 电话 文本 地址 文本 传真 文本 城市 文本
第6章MFC ODBC编程 表6-5表“雇员”的结构 字段名称 类型 字段名称 类型 名字D 自动编号 因家 文本 头衔 文本 邮政编码 文本 尊称 文本 家庭电话 文本 出生日期 日期/时间 分机 文本 雇用日期 日期/时间 照片 OLE对象 地址 文本 备注 备注 城市 文本 上级 文本 地区 文本 表6-6表“供应商”的结构 字段名称 类型 字段名称 类型 供应商Dkey) 自动编号 地区 文本 公司名称 文本 邮政编码 文本 联系人姓名 文本 国家 文本 联系人头衔 文本 电话 文本 地址 文本 传真 文本 城市 文本 主页 超级链接 表6-7 表“运货商”的结构 字段名称 类型 字段名称 类型 运货商D(key) 自动编号 电话 货币类型 公司名称 文本 表6-8表“类别”的结构 字段名称 类型 字段名称 类型 类别D 自动编号 说明 备注 类别名称 文本 图片 OLE对象 在实例光盘的Database目录下,stocks.mdb文件是存放公司销售信息的Access数据库 文件,读者可以查看这个文件,了解详细信息。 创建0 DBCDemo2工程 ODBCDemo2工程是一个基于单文档的应用程序,创建应用程序工程时需要选择基于 单文档的应用程序类型。 操作步骤: (I)打开VC+的工程创建向导。从VC+的菜单中执行“File>New”命令,将VC++6.0 工程创建向导显示出来。如果当前的选项标签不是Project,单击Project选项标签将它选中。 在左边的列表里选择MFC AppWizard(exe)项,在Project Name编辑区里输入工程名称 -119-
第 6 章 MFC ODBC 编程 -119- 表 6-5 表“雇员”的结构 字段名称 类型 字段名称 类型 名字 ID 自动编号 国家 文本 头衔 文本 邮政编码 文本 尊称 文本 家庭电话 文本 出生日期 日期/时间 分机 文本 雇用日期 日期/时间 照片 OLE 对象 地址 文本 备注 备注 城市 文本 上级 文本 地区 文本 表 6-6 表“供应商”的结构 字段名称 类型 字段名称 类型 供应商 ID(key) 自动编号 地区 文本 公司名称 文本 邮政编码 文本 联系人姓名 文本 国家 文本 联系人头衔 文本 电话 文本 地址 文本 传真 文本 城市 文本 主页 超级链接 表 6-7 表“运货商”的结构 字段名称 类型 字段名称 类型 运货商 ID(key) 自动编号 电话 货币类型 公司名称 文本 表 6-8 表“类别”的结构 字段名称 类型 字段名称 类型 类别 ID 自动编号 说明 备注 类别名称 文本 图片 OLE 对象 在实例光盘的 Database 目录下,stocks.mdb 文件是存放公司销售信息的 Access 数据库 文件,读者可以查看这个文件,了解详细信息。 创建 ODBCDemo2 工程 ODBCDemo2 工程是一个基于单文档的应用程序,创建应用程序工程时需要选择基于 单文档的应用程序类型。 操作步骤: (1) 打开 VC++的工程创建向导。从 VC++的菜单中执行“File>New”命令,将 VC++ 6.0 工程创建向导显示出来。如果当前的选项标签不是 Project,单击 Project 选项标签将它选中。 在左边的列表里选择 MFC AppWizard(exe)项,在 Project Name 编辑区里输入工程名称
第6章MFC ODBC编程 “ODBCDemo:2”,并在Location编辑区里调整工程路径,如图6-2所示。 New 3x Fles Projects Workspaces Other Documents DATL COM Appwuzard Project name rce Type Wizard ODBCDemo2 Location: Extended Stored Proc Wizard FADB_PROJECTODBCMFCOD hhh Appwizard ●ISAPI Extension Wizard Maketile MFC ActiveX ControlWizard FCreate new workspace MFC AppWizard (din Add to curront workspac MFC ApoWiard‘cxn] &New Database Wzard rf Utility Project onsole Platforms: OK Cancel 图6-2工程创建向导 (2)选择应用程序的框架类型。单击“工程创建向导”窗口的OK按钮,进入“MFC AppWizard-Step1”对话框。首先选择应用程序的框架类型。如图6-3所示。在本工程里, 选择“Single document”,保持资源的语言类型为“中文”,单击“Next>”按钮。 CAppweard-step1 ?x What type of application would you like to create? Single document r达ultiple documents CDlalog based Document/ylew architecture support? What language would you like your resources in? 中文I中回][APPWZCHS.DL) <Back sea)☐ Einish Cancel 图6-3选择应用程序的框架类型 (3)进入“MFC AppWizard-Step2of6”对话框,设置应用程序数据库特性。在对话框 里选择None,如图6-4所示。 (4)设置应用程序对复杂文档的支持。在“MFC AppWizard-Step2of6”对话框里,单 击“Next>”按钮,进入“MFC AppWizard-Step3of6”对话框。在对话框里选择如下两 项: ●None ·ActiveX Controls -120-
第 6 章 MFC ODBC 编程 -120- “ODBCDemo2”,并在 Location 编辑区里调整工程路径,如图 6-2 所示。 图 6-2 工程创建向导 (2) 选择应用程序的框架类型。单击“工程创建向导”窗口的 OK 按钮,进入“MFC AppWizard – Step 1”对话框。首先选择应用程序的框架类型。如图 6-3 所示。在本工程里, 选择“Single document”,保持资源的语言类型为“中文”,单击“Next >”按钮。 图 6-3 选择应用程序的框架类型 (3) 进入“MFC AppWizard – Step 2 of 6”对话框,设置应用程序数据库特性。在对话框 里选择 None,如图 6-4 所示。 (4) 设置应用程序对复杂文档的支持。在“MFC AppWizard – Step 2 of 6”对话框里,单 击“Next >”按钮,进入“MFC AppWizard – Step 3 of 6”对话框。在对话框里选择如下两 项: None ActiveX Controls
第6章MFC ODBC编程 MFC Appwizerd -Step 2 of6 ?× What database support would you like to include? Nane C Header files only C Database view without file support CDatabase vlew with file support If you include a database view.you must select a data source. Data Source No data source is selected. <Back Next> Cancel 图6-4设置应用程序数据库特性 如图6-5所示,单击“Next>”按钮。 MC Appwizard-step 3of6 None Container CMini-server Full-server CBoth container and server FActive gocsment server Active dociment contisiner Woud you llke support for compound fies? Y pliatsir No,thimnk you What other support would you lke to inclde? Automation 《Bak Next Enish Cancel 图6-5设置应用程序对复杂文档的支持 (⑤)进入“MFC AppWizard-Step4of6”对话框,设置应用程序的特征信息。如图6-6 所示对话框是工程的特征信息,在本例中,ODBCDemo2工程有如下特征: ·Docking toolbar ●Initial statusbar Printing and print preview ●3 D controls 。Normal (6)在“MFC AppWizard-Step4of6”对话框里单击“Next>”按钮,进入“MFC AppWizard-Step5of6”对话框,选择工程风格和MFC类库的加载方式。在对话框里设 置如下三项: ·MFC Standard -121-
第 6 章 MFC ODBC 编程 -121- 图 6-4 设置应用程序数据库特性 如图 6-5 所示,单击“Next >”按钮。 图 6-5 设置应用程序对复杂文档的支持 (5) 进入“MFC AppWizard – Step 4 of 6”对话框,设置应用程序的特征信息。如图 6-6 所示对话框是工程的特征信息,在本例中,ODBCDemo2 工程有如下特征: Docking toolbar Initial statusbar Printing and print preview 3D controls Normal (6) 在“MFC AppWizard – Step 4 of 6”对话框里单击“Next >”按钮,进入“MFC AppWizard – Step 5 of 6”对话框,选择工程风格和 MFC 类库的加载方式。在对话框里设 置如下三项: MFC Standard