数据库——仓库管理系统.doc_第1页
数据库——仓库管理系统.doc_第2页
数据库——仓库管理系统.doc_第3页
数据库——仓库管理系统.doc_第4页
数据库——仓库管理系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

铜陵学院铜陵学院 数学与计算机系数学与计算机系 数据库课程设计数据库课程设计 时间 时间 2011 年年 6 月月 7 日日 至至 2011 年年 6 月月 10 日日 设计题目 设计题目 仓库设备管理仓库设备管理 学生姓名 学生姓名 曹福利 郭贺 田辉曹福利 郭贺 田辉 学学 号 号 0906121001 15 30 专业班级 专业班级 09 信息管理与信息系统信息管理与信息系统 指导教师 指导教师 杨杨 慧慧 指导教师对课程设计 论文 的评语 工作态度 任务完成情况 能力水平 设计说 明书 论文 的撰写和图纸质量等 成绩 指导教师签字 年 月 日 一 开发背景及设计思想 4 1 开发背景 4 2 开发设计思想 4 二 功能描述 4 1 系统功能分析 4 2 系统功能模块设计 5 三 数据库需求分析 5 四 数据库概念结构设计 6 五 数据库逻辑结构设计及优化 8 六 数据库的物理设计和实施 9 1 数据库设计 9 1 创建设备基本信息代码 device code 9 2 创建企业部门基本信息代码 class node 10 3 创建供应商设备信息代码 provider node 10 4 创建设备入库表 device in 10 5 创建设备出库表 device out 10 6 创建现有库存表 device 11 7 创建部门需求表 device need 11 8 创建设备还库表 device return 11 9 创建操作日志表 howdo 12 2 系统实现 12 2 1 创建应用程序 12 2 2 操作日志模块的设计 12 1 写日志模块 12 2 读日志模块 14 2 3 登录窗口的设计和程序初始化 16 2 4 主对话框界面的设计 17 2 5 设备代码管理窗口的建立 18 2 6 库存信息管理窗口的创建 21 2 7 设备入库信息管理 23 2 8 设备入库窗口 26 2 9 帮助模块设计 28 七 课程设计心得体会 28 1 问题和解决方案 29 2 系统改进方面 29 3 实习心得与体会 29 一 一 开发背景及设计思想开发背景及设计思想 1 开发背景开发背景 90 年代中期 由于 Internet 的迅速普及 使 Intranet 成为 Internet 技术在企业管理 信息系统中的应用和延伸 形成了集计算机 计算机网络 数据库 分布式计算等于一体 的信息技术综合体 它打破了时间和地域的界限 使信息交流变得快捷 准确 为建立现 代企业管理信息系统提供了充足的条件 由于计算机应用的日益普及 仓库设备管理的自 动化是提高工作效率的有效途径 随着企业对仓库设备实行计算机管理 实现仓库设备管 理系统势在必行 系统开发的总统任务是实现企业物资设备管理的系统化 规范化和自动 化 从而达到仓库管理效率的目的 2 开发设计思想开发设计思想 在本系统的设计过程中 为了克服仓库管理信息处理量大的困难 满足计算机管理的 需要 采取了下面的一些原则 1 统一各种原始单据的格式 统一帐目和报表的格式 2 删除不必要的管理冗余 实现管理规范化 科学化 3 程序代码标准化 软件统一化 确保软件的可维护性和实用性 4 界面尽量简单化 做到实用 方便 尽量满足企业不同层次员工的需要 5 建立操作日志 系统自动记录所进行的各种操作 二 功能描述二 功能描述 1 系统功能分析 系统功能分析 本例中的仓库管理系统需要完成的功能主要有以下几点 1 新的设备信息的录入 2 借出 归还 维修时对设备信息的修改 3 对报废设备信息的删除 4 按照一定的条件查询 统计符合条件的设备信息 查询功能至少应该包括设备基本信 息的查询 按时间段 如在 2004 年 1 月 1 日到 2004 年 10 月 10 日购买 借出 维修的 设备等 查询 按时间点 借入时间 借出时间 归还时间 查询等 统计功能至少包 括按时间段 如在 2004 年 1 月 1 日到 2004 年 10 月 10 日购买 借出 维修的设备等 统计 按设备基本信息的统计等 5 对查询 统计的结果打印输出 2 系统功能模块设计 系统功能模块设计 在系统功能分析的基础上 结合 Visual C 程序编制的特点 得到如图所示的系统功 能模块图 仓库管理系统 系统模块 输入模块 维护模块 查看模块 报表模块 帮助模块 日志管理 需求模块 还库模块 出库模块 入库模块 三 数据库需求分析三 数据库需求分析 在仔细调查企业仓库物资设备管理过程的基础上 得到本系统所处理的数据流程如图 设备入库 设备采购 设备还库 设备出库 仓库现有库存各部门需求企业生产计划 汇总 本实例设计的数据项和数据结构如下 1 设备代码信息 包括的数据项有设备号 设备名称 2 现有库存信息 包括的数据项有设备 现有数目 总数目 最大库存和最小库存 3 设备使用信息 包括的数据项有使用的设备 使用部门 数目 使用时间和出库时状态 等 4 设备采购信息 包括的数据项有采购的设备 采购员 供应商 采购数目和采购时间 等 5 设备归还信息 包括的数据项有归还设备 归还部门 归还数目 归还时间和经手人等 四 数据库概念结构设计四 数据库概念结构设计 本实例根据上面的设计规划出的实体有库存实体 入库实体 出库实体 采购实体 还库实体和需求实体 各实体的 E R 图及其关系描述如下 库存实体 E R 图 现有库存 入库 出库还库设备号 入库实体 E R 图 出库实体 E R 图 出库 使用部门数量 时 间 经手人设备号 入库 供应商信息采购价格数 量 采购员设备号 企业部门需求实体 E R 图 还库实体 E R 图 计划采购实体 E R 图 实体和实体之间的关系 E R 图 设备还库 还库时间人还库数量经手人设备号 部门需求 需求部门需求数量需求时间设备号 计划采购 库存信息供应信息时间设备号 入库 现有库存 出库 还库 部门需求设备采购 五 数据库逻辑结构设计五 数据库逻辑结构设计及优化及优化 在上面的实体以及实体之间的关系的基础上 形成数据库中的表格和各个表格之间的 关系 仓库管理系统数据库中各个表格的设计结果如下面的几个表格所示 每个表格表示 在数据库中的一个表 表 1 1 设备基本信息代码表 device code 列名数据类型可否为空说明 codeVARCHAR2 6 NOTNULL设备号 主键 nameVARCHAR2 20 NULL设备名称 表 1 2 企业部门基本信息表 class node 列名 数据类型可否为空说明 node VARCHAR2 6 NOTNULL部门编号 主键 department VARCHAR2 20 NOTNULL部门名称 表 1 3 供应商设备信息表 provider node 列名 数据类型可否为空说明 node VARCHAR2 6 NOTNULL供应商编号 主键 provider VARCHAR2 20 NOTNULL供应商名称 telenodeVARCHAR2 10 NULL供应商电话 nameVARCHAR2 20 NULL设备名称 表 1 4 设备入库表 device in 列名数据类型可否为空说明 codeVARCHAR2 6 NOTNULL设备号 in dateDATE NOTNULL入库时间 主键 providerVARCHAR2 20 NULL供应商 in numberNUMBER 6 NULL入库数量 priceNUMBER 6 NULL价格 buyerVARCHAR2 10 NULL采购员 表 1 5 设备出库表 device out 列名数据类型可否为空说明 codeVARCHAR2 6 NOTNULL设备号 departmentVARCHAR2 20 NULL使用部门 out dateDATE NULL出库时间 主键 out stateNUMBER 1 NULL出库状态 out personVARCHAR2 10 NULL经手人 out numberNUMBER 6 NOTNULL出库数量 takerVARCHAR2 10 NULL领取人 usageVARCHAR2 20 NULL用途 表 1 6 现有库存表 device 列名数据类型可否为空说明 codeVARCHAR2 6 NOTNULL设备号 主键 now numberNUMBER 6 NULL现有库存 high numberNUMBER 6 NULL最大库存 low numberNUMBER 6 NULL最少库存 total numberNUMBER 6 NULL总数 表 1 7 部门需求表 device need 列名数据类型可否为空说明 codeVARCHAR2 6 NOTNULL设备号 departmentVARCHAR2 20 NOTNULL部门名称 need numberNUMBER 6 NULL需求数量 begin dateDATE NULL需求开始时间 end dateDATE NULL需求结束时间 表 1 8 设备还库表 device return 列名数据类型可否为空说明 codeVARCHAR2 6 NOTNULL设备号 return dateDATE NULL还库时间 主键 keeperVARCHAR2 20 NULL仓库管理员 return numberNUMBER 6 NULL归还数量 return dateVARCHAR2 10 NULL归还人 表 1 9 操作日志表 howdo 列名数据类型可否为空说明 do userVARCHAR2 10 NOTNULL操作员 do whatVARCHAR2 40 NOTNULL操作内容 do dateDATE NOTNULL操作时间 六 六 数据库数据库的物理设计和实施的物理设计和实施 得到系统逻辑模型后 就该进行数据库的物理设计和实施数据库了 物理设计主要是要确 定数据库的存储路径 存储结构以及如何建立索引等 可以采用系统的默认设置 1 数据库设计数据库设计 1 创建设备基本信息代码创建设备基本信息代码 device code CREATE TABLE DMS device code code VARCHAR2 6 NOTNULL name VARCHAR2 20 NOTNULL CONSTRANT code code pk PRIMARY KEY code TABLESPACE USER DATA 2 创建企业部门基本信息代码创建企业部门基本信息代码 class node CREATE TABLE DMS class node node VARCHAR2 6 NOTNULL Department VARCHAR2 20 NOTNULL CONSTRANT node node pk PRIMARY KEY node TABLESPACE USER DATA 3 创建供应商设备信息代码创建供应商设备信息代码 provider node CREATE TABLE DMS provider node node VARCHAR2 6 NOTNULL provider VARCHAR2 20 NOTNULL teleno VARCHAR2 10 NULL Code VARCHAR2 6 NOTNULL CONSTRANT node node pk PRIMARY KEY node TABLESPACE USER DATA 4 创建设备入库表创建设备入库表 device in CREATE TABLE DMS device in code VARCHAR2 6 NOT NULL in date DATE NOT NULL provider VARCHAR2 20 NULL in number NUMBER 6 NULL price NUMBER 6 NULL buyer VARCHAR2 10 NULL CONSTRAINT in date pk PRIMARY KEY in date TABLESPACE USER DATA 5 创建设备出库表创建设备出库表 device out CREATE TABLE DMS device out code VARCHAR2 6 NOT NULL department VARCHAR2 20 NULL out date DATE NULL out state NUMBER 1 NULL out penson VARCHAR2 20 NULL out number NUMBER 6 NOT NULL taker VARCHAR2 10 NULL usage VARCHAR2 20 NULL CONSTRAINT out date pk PRIMARY KEY out date TABLESPACE USER DATA 6 创建现有库存表创建现有库存表 device CREATETABLE DMS device code VARCHAR2 6 NULL now number NUMBER 6 NULL high number NUMBER 6 NULL low number NUMBER 6 NULL total number NUMBER 6 NULL CONSTRAINT device code pk PRIMARY KEY code TABLESPACE USER DATA 7 创建部门需求表创建部门需求表 device need CREATE TABLE DMS device need code VARCHAR2 10 NOT NULL department VARCHAR2 10 NOT NULL need number NUMBER 6 NULL begin date DATE NULL end date DATE NULL TABLESPACE USER DATA 8 创建设备还库表创建设备还库表 device return CREATE TABLE DMS device return code VARHAR2 6 NOT NULL department VARCHAR2 20 NULL return date DATE NULL keeper VARCHAR2 10 NULL return number NUMBER 6 NULL return person VARCHAR2 10 NULL CONSTRAINT return date pk PRIMARY KEY return date TABLESPACE USER DATA 9 创建操作日志表创建操作日志表 howdo CREATE TABLE DMS howdo do user VARCHAR2 10 NOT NULL do what VARCHAR2 40 NOT NULL do date DATE NOT NULL TABLESPACE USER DATA 2 系统实现 系统实现 2 1 创建应用程序创建应用程序 1 选择 FileNew 中的 新建项目 选项卡中 MFC AppWizard exe 设置合适的 目录和项目名 比如 E Project 目录下的 DMS 项目 2 创建一个对话框应用程序 Dialog Based 单击 Next 按钮 3 由于在这个项目中将要使用 ADO 所以在 MFC AppWizard 的第二步 需要选中 Automation 选项 使应用程序能够支持自动化对象 如图 1 10 所示 4 单击 Finish 按钮结束项目的创建 主对话框名为 CDMSDlg 5 项目创建完毕后 在头文件 stdafx h 中加入下面 4 行 import c programfiles commonfiles system ado msado15 dll no namespace EOF adoEOF include icrsint h inline void TESTHR HRESULT x if FAILED x com issue error x define DATEFMT Cstring s 2 2 操作日志模块的设计操作日志模块的设计 1 写日志模块 写日志模块 图 1 10 使应用程序支持自动化 先定义一个名为 ClogMngr 的类 LogMngr h 定义一个 Log 管理器 class CLogMngr public CLogMngr virtual CLogMngr public bool AddLog LPCSTR op void Setup ConnectionPtr cnnt CString m user user protected ConnectionPtr m DBCnt CString m user 下面是 ClogMngr AddLog 内部实现详细过程 LogMngr cpp 向数据库中添加 Log 记录的代码 bool CLogMngr AddLog LPCSTR op CTime tm CTime GetCurrentTime CString sql sql Format INSERT INTO HOWDO do user do what do date VALUES s s d d d d d d m user op tm GetYear tm GetMonth tm GetDay tm GetHour tm GetMinute tm GetSecond bstr t sql sql try m DBCnt Execute sql NULL adCmdText catch com error AfxMessageBox e ErrorMessage return false return true 2 读日志模块 读日志模块 图 1 11 查看日志窗口 初始化界面代码如下 BOOL CDlgViewLog OnInitDialog CDialog OnInitDialog m list InsertColumn 0 操作员 m list InsertColumn 1 操作日期 m list InsertColumn 2 操作内容 RECT rect m list GetWindowRect int wid rect right rect left m list SetColumnWidth 0 wid 3 m list SetColumnWidth 1 wid 3 m list SetColumnWidth 2 wid 3 m list SetExtendedStyle LVS EX FULLROWSELECT RefreshData return TRUE return TRUE unless you set the focus to a control EXCEPTION OCX Property Pages should return FALSE void CDlgViewLog RefreshData m list DeleteAllItems m list SetRedraw FALSE bstr t strSQL SELECT FROM HOWDO RecordsetPtr MySet int i 0 try MySet CreateInstance uuidof Recordset MySet m DBCnt Execute strSQL NULL adCmdText variant t Holder while MySet adoEOF Holder MySet GetCollect do user if Holder vt VT NULL m list InsertItem i char bstr t Holder Holder MySet GetCollect do date if Holder vt VT NULL m list SetItemText i 1 char bstr t Holder Holder MySet GetCollect do what if Holder vt VT NULL m list SetItemText i 2 char bstr t Holder MySet MoveNext MySet Close catch com error m list SetRedraw TRUE return m list SetRedraw TRUE void CDlgViewLog OnClickListVllog NMHDR pNMHDR LRESULT pResult int i m list GetSelectionMark m opr m list GetItemText i 0 m date m list GetItemText i 1 m op m list GetItemText i 2 UpdateData FALSE pResult 0 DlgViewLog cpp 删除所有日志记录的函数 void CDlgViewLog OnBtnVlrmall bstr t strSQL TRUNCATE TABLE HOWDO try m DBCnt Execute strSQL NULL adCmdText catch com error EndDialog 0 RefreshData 2 3 登录窗口的设计和程序初始化登录窗口的设计和程序初始化 在 CDMSDlg OnInitDialog 中加入这样一段代码 DMSDlg cpp 弹出登录界面 CDlgLogIn dlg do if dlg DoModal EndDialog 0 while dlg m UsrName GetLength 0 它的目的是弹出图 1 12 所示的登录对话框 并从中获得一个有效的用户名 图 1 12 登录界面 得到有效用户名后 程序用如下代码 DMSDlg cpp 建立数据库连接 初始化成员变量 登录数据库 若失败 则关闭程序 m DBCnt CreateInstance uuidof Connection CString sql sql Format DSN DMS UID s PWD s dlg m UsrName dlg m UsrPwd bstr t sql sql 建立连接 m DBCnt Open sql 1 初始化日志管理器 m logMngr Setup m DBCnt dlg m UsrName 记录此次登录 m logMngr AddLog 登录数据库 catch com error this EndDialog 0 在程序结束时关闭数据库连接 DMSDlg cpp 关闭数据库连接 void CDMSDlg OnDestroy CDialog OnDestroy m DBCnt Close 2 4 主对话框界面的设计主对话框界面的设计 登录完成后 显示出主对话框 它的界面设计如图 1 13 所示 单击某个按钮就能弹出 某个功能的界面 图 1 13 主对话框界面 以其中 设备代码 按钮为例 说明它的事件处理函数 代码如下 DMSDlg cpp 显示设备代码管理界面 void CDMSDlg OnBtnDevcode CDlgDevcode dlg dlg Setup m DBCnt this ShowWindow SW HIDE dlg DoModal this ShowWindow SW SHOW 其他按钮的事件处理函数 代码与 设备代码 按钮的事件处理函数相同 2 5 设备代码管理窗口的建立设备代码管理窗口的建立 对话框类名为 CdlgDevcode 设计如图 1 14 所示 设备代码管理窗口 DlgDevcode cpp 对话框的初始化 BOOL CDlgDevcode OnInitDialog CDialog OnInitDialog 切分列表控件 m list InsertColumn 0 设备号 m list InsertColumn 1 设备名 RECT rect m list GetWindowRect int wid rect right rect left m list SetColumnWidth 0 wid 2 m list SetColumnWidth 1 wid 2 m list SetExtendedStyle LVS EX FULLROWSELECT 读取已有数据 RefreshData return TRUE DlgDevcode cpp 消息映射部分 BEGIN MESSAGE MAP CDlgDevcode CDialog AFX MSG MAP CDlgDevcode ON NOTIFY NM CLICK IDC LIST DEVCODE OnClickListDevcode AFX MSG MAP END MESSAGE MAP 事件处理部分 void CDlgDevcode OnClickListDevcode NMHDR pNMHDR LRESULT pResult int i m list GetSelectionMark m code m list GetItemText i 0 m name m list GetItemText i 1 UpdateData FALSE pResult 0 其余程序的清单如下 DlgDevcode cpp implementation file include stdafx h include DMS h include DlgDevcode h ifdef DEBUG define new DEBUG NEW undef THIS FILE static char THIS FILE FILE endif CDlgDevcode dialog CDlgDevcode CDlgDevcode CWnd pParent NULL CDialog CDlgDevcode IDD pParent AFX DATA INIT CDlgDevcode m code T m name T AFX DATA INIT m DBCnt NULL m log NULL void CDlgDevcode DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX AFX DATA MAP CDlgDevcode DDX Control pDX IDC LIST DEVCODE m list DDX Text pDX IDC EDIT DCCODE m code DDX Text pDX IDC EDIT DCNAME m name AFX DATA MAP BEGIN MESSAGE MAP CDlgDevcode CDialog AFX MSG MAP CDlgDevcode ON NOTIFY NM CLICK IDC LIST DEVCODE OnClickListDevcode ON BN CLICKED IDC BTN DCADD OnBtnDcadd ON BN CLICKED IDC BTN DCDEL OnBtnDcdel ON BN CLICKED IDC BTN DCUPD OnBtnDcupd AFX MSG MAP END MESSAGE MAP CDlgDevcode message handlers 负责读取已有数据的函数 void CDlgDevcode RefreshData m list DeleteAllItems m list SetRedraw FALSE bstr t strSQL SELECT FROM DEVICE CODE RecordsetPtr MySet int i 0 try MySet CreateInstance uuidof Recordset 执行 SOL 语句读取记录 MySet m DBCnt Execute strSQL NULL adCmdText variant t Holder while MySet adoEOF 取出 code 字段的数据 Holder MySet GetCollect code if Holder vt VT NULL m list InsertItem i char bstr t Holder 取出 name 字段的数据 Holder MySet GetCollect name if Holder vt VT NULL m list SetItemText i 1 char bstr t Holder MySet MoveNext catch com error m list SetRedraw TRUE return m list SetRedraw TRUE 负责添加记录的函数 void CDlgDevcode OnBtnDcadd UpdateData CString sql sql Format INSERT INTO DEVICE CODE code name VALUES s s m code m name bstr t sql sql try m DBCnt Execute sql NULL adCmdText catch com error return m log AddLog 添加设备记录 RefreshData 负责删除记录的函数 void CDlgDevcode OnBtnDcdel UpdateData CString sql sql Format DELETE FROM DEVICE CODE WHERE CODE s m code bstr t sql sql try m DBCnt Execute sql NULL adCmdText catch com error return m log AddLog 删除设备记录 RefreshData 负责更新数据的函数 void CDlgDevcode OnBtnDcupd UpdateData CString sql sql Format UPDATE DEVICE CODE SET NAME s WHERE CODE s m name m code bstr t sql sql try m DBCnt Execute sql NULL adCmdText catch com error return m log AddLog 更新设备记录 RefreshData 2 6 库存信息管理窗口的创建库存信息管理窗口的创建 用户可以在此新增 修改 删除某种设备的记录 单击主对话框中的 库存信息 按 钮 将出现图 1 15 所示的界面 新增记录时 用户在 设备号 组合框中选择一个设备号 在下面填入各种数量 之后单击 新增 按钮即可向表中增加记录 修改记录时 用户单击列表中某一行 程序利用 1 8 提到的方法 在窗口下面把这一 行记录的详细信息显示出来 用户即可对之修改 设备号 这个子窗口初始化的时候有如下代码 DlgDev cpp 对话框的初始化 BOOL CDlgDev OnInitDialog CDialog OnInitDialog 切分列表控件 m list InsertColumn 0 设备号 m list InsertColumn 1 现存数量 m list InsertColumn 2 最大数量 m list InsertColumn 3 最小数量 m list InsertColumn 4 总数 RECT rect m list GetWindowRect int wid rect right rect left m list SetColumnWidth 0 wid 5 m list SetColumnWidth 1 wid 5 m list SetColumnWidth 2 wid 5 m list SetColumnWidth 3 wid 5 m list SetColumnWidth 4 wid 5 m list SetExtendedStyle LVS EX FULLROWSELECT RecordsetPtr pRst NULL IADORecordBinding picRs NULL Interface Pointer declared VC Extensions CDevCodeRs rs try bstr t strSQL SELECT FROM DEVICE CODE TESTHR pRst CreateInstance uuidof Recordset 读取所有的设备编号 pRst m DBCnt Execute strSQL NULL adCmdText 数据绑定 TESTHR pRst QueryInterface uuidof IADORecordBinding LPVOID TESTHR picRs BindToRecordset int i 0 while pRst adoEOF 向组合框控件中添加所有的设备编号 m devs AddString rs m sz code pRst MoveNext picRs Release pRst Close catch com error EndDialog 0 return TRUE RefreshData return TRUE return TRUE unless you set the focus to a control EXCEPTION OCX Property Pages should return FALSE 图 1 15 库存信息管理 2 7 设备入库信息管理设备入库信息管理 在主对话框中单击 入库信息 按钮就进入如图所示的界面 设备入库信息管理界面 下面是修改和删除记录的代码 void CDlgViewDevIn OnBtnViupdate if UpdateData return CString sql sql Format CString SELECT FROM DEVICE IN WHERE in date DATEFMT m date bstr t sql sql RecordsetPtr pRst NULL IADORecordBinding picRs NULL Interface Pointer declared VC Extensions CDevInRs rs try TESTHR pRst CreateInstance uuidof Recordset pRst Open sql variant t IDispatch m DBCnt true adOpenKeyset adLockOptimistic adCmdText 数据绑定 TESTHR pRst QueryInterface uuidof IADORecordBinding LPVOID TESTHR picRs BindToRecordset 填写需要修改的数据 strcpy rs m sz code m code strcpy rs m sz date m date strcpy rs m sz provider m provider strcpy rs m sz tel m tel rs m f number m number rs m f price m price strcpy rs m sz buyer m buyer 开始更新数据 TESTHR picRs Update 释放 ADO 对象 picRs Release pRst Close catch com error return MessageBox 完成操作 m log AddLog 修改入库信息 RefreshData void CDlgViewDevIn OnBtnVidel if UpdateData return CString sql sql Format CString DELETE FROM DEVICE IN WHERE in date DATEFMT m date bstr t sql sql try 执行删除数据的 SOL 语句 m DBCnt Execute sql NULL adCmdText catch com error return MessageBox 完成操作 m log AddLog 删除入库信息 RefreshData 2 8 设备入库窗口设备入库窗口 在主对话框中单击 设备入库 按钮就进入如图 1 17 所示的界面 设备入库登记界面 下面就是单击 确定 按钮之后 更新数据库操作的代码 DlgDevIn cpp 添加入库记录 void CDlgDevIn OnBtnDiadd if m devs GetCurSel CB ERR MessageBox 请选择一个设备 return if UpdateData return RecordsetPtr pRst NULL CDevInRs rs try TESTHR pRst CreateInstance uuidof Recordset 打开数据库表格到 Recordest 对象 pRst Open device in variant t IDispatch m DBCnt true adOpenKeyset adLockOptimistic adCmdTable 填写新数据 m devs GetWindowText rs m sz code 11 sprintf rs m sz date d d d d d d m date GetYear m date GetMonth m date GetDay m time GetHour m time GetMinute m time GetSecond strcpy rs m sz provider m provider strcpy rs m sz tel m tel rs m f number m number rs m f price m price strcpy rs m sz buyer m buyer COleSafeArray vaFieldlist vaValuelist rs FillFieldsArray vaFieldlist vaValuelist 开始一个事务 m DBCnt BeginTrans 添加新数据到 device in 表 TESTHR pRst AddNew vaFieldlist vaValuelist pRst Close 打开 device 表 CString sql sql Format SELECT FROM device WHERE code s rs m sz code bstr t sql sql pRst Open sql variant t IDispatch m DBCnt true adOpenKeyset adLockOptimistic adCmdText 若没有此设备的库存记录 if pRst GetRecordCount 0 CDevRs rsDev strcpy rsDev m sz code rs m sz code rsDev m f cur rs m f number rsDev m f total rs m f number rsDev m f max 1 rsDev m f min 1 创建一个设备库存记录 COleSafeArray vaFields vaValues rsDev FillFieldsArray vaFields vaValues TESTHR pRst AddNew vaFields vaValues else 若有此设备的库存记录 CDevRs rsDev IADORecordBinding picRs NULL Interface Pointer d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论