




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGEI PAGEIII前言 II一、企业进销存管理系统的概述 1二、企业进销存系统的系统设计 2(一)、系统功能分析 2(二)、系统功能模块设计 3三、企业进销存管理系统的数据库设计 3(一)、数据库需求分析 4(二)、数据库逻辑结构设计 7(三)、数据库结构的实现 12四、企业进销存管理系统模块的创建 16(一)、创建公用模块Module1.bas 16(二)、基本信息设置模块的创建 181、产品设置窗体的创建 192、产品设置信息添加窗体的创建 223、产品设置信息修改窗体的创建 254、产品设置信息删除按钮的创建 26(三)、进货信息管理模块的创建 271、订货单管理窗体的创建 272、入库单管理窗体的创建 283、进货信息查询窗体的创建 30(四)、生产信息管理模块的创建 311、配料单信息窗体的创建 312、生产计划单信息窗体的创建 363、组装单信息窗体的创建 394、生产信息查询模块的创建 45(五)、销售信息管理模块的创建 481、订货单信息窗体的创建 482、销售单信息窗体的创建 513、销售信息查询窗体的创建 57(六)、库存信息管理模块的创建 591、转仓单窗体的创建 592、产品盘点窗体的创建 60(七)、财务信息管理模块的创建 611、应收款项窗体的创建 612、应付款项窗体的创建 62(八)、菜单的建立 62五、企业进销存管理系统的运行和测试 63(一)、运行 63(二)、测试 631、系统测试方法如图所示 642、系统测试的步骤 64六、总结 66七、参考资料 67前言在我国,很多商业企业是通过一套人工单据流转程序,来实现信息流对商品流的跟踪,通过财务库存资金账来控制进销过程;通过仓库账来核查物流过程;通过定期盘点对账来调整账目和商品的损益。由此造成物流、款流、票据流分离,财务信息滞后实际业务,所以只有通过盘点才能较准确的了解经营情况。而对各类票据、供销单位、应收、应付款等信息查找困难,易出差错,商品进、销、存数量及金额记录统计工作量大,不准确,各类经营统计数据严重滞后实际业务需要。现代商业的迅猛发展,对手工管理模式提出了严峻挑战。商品品种日益丰富,流行周期越来越短,企业活动节奏加快,调价、削价、移库各种情况,信息量大、变化加快,赊销、代销、折让、退换等方式频繁应用,这些都增加经营管理中的结算和统计难度,手工管理难以完全胜任。在现代化大工业、大生产的组织原则应用于流通领域,更需要用现代化的手段使其管理思想真正得以实现。近几年来,随着计算机的发展与完善,其在商品流通领域中的应用越来越广泛。因而,用计算机建立一种准确、及时、高效、易于掌握的商品进销存数据管理系统是非常必要的。PAGE10一、企业进销存管理系统的概述企业生产制造管理的关键在于如何规划和计划各种资源在时间、地点、产品之间的合理配备,如何按计划监督责任方对资源的使用情况,如何根据预测和历史情况为决策者提供更有效地利用资源的分析数据。本系统的主要功能是制定生产/采购计划、物料需求计算、材料供求分析,核心任务是:降低材料成本;降低库存成本;缩短生产/采购周期,如何获得更高的利润。工业企业进销存系统以企业管理的计划和控制职能为核心,提供了生产、销售、采购、库管、计划等实用而丰富的管理功能,具有如下优点:具有高度的信息综合利用效能,可以对工业企业的经营管理活动进行分析、预测、决策,进而达到对工业企业经营活动过程的全程监督和控制的目的;彻底改变了企业信息重复、混乱、无法共享的现状,使产、供、销、客、物、决策等各个部门可以资源共享、信息共享,从而实现了业务、决策一体化;物流、资金流、信息统一化的良好经营管理模式。本系统是根据工业企业的生产过程,控制生产过程中的材料消耗、产品销售、销售成本等数据,具体管理范围包括材料采购、材料库存、生产计划、生产控制、物料需求、产品购进、产品销售、产品产出等。本系统前台开发工具采用中文版VisualBasic6.0,后台数据库服务器采用SQLServer2000;运行环境为Windows9x、Windows98、Windows2000、WindowsNT或WindowsXP。二、企业进销存系统的系统设计(一)、系统功能分析系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。本系统需要完成功能主要有:1、基本信息的管理,包括产品设置、产品类别设置、供应商设置、客户设置、业务员类别设置、业务员设置、仓库设置等。2、进货信息的管理,包括订货单的管理、入库单的管理以及进货信息的查询等。3、生产信息的管理,包括配料单信息的管理、生产计划单信息的管理、产品组装单信息的管理以及相关信息的查询等。4、销售信息管理,包括销售单的管理以及销售信息的查询等。5、库存信息的管理,包括转仓单的管理、产品盘点和转仓信息的查询等。6、财务信息管理,包括应收信息的管理、应付信息的管理等。(二)、系统功能模块设计对系统各项功能进行集中、分块,按照结构化程序设计的要求,我们得到如下所示的系统功能模块图。三、企业进销存管理系统的数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:数据库需要分析;数据库逻辑结构设计。(一)、数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。仔细分析调查有关系统需求的基础上,我们将得到本系统所处理的数据流程图。针对商业企业业务的需求,通过对商业企业管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:1、产品类别信息,包括的数据项有:类别编号、类别名称等。2、产品信息,包括的数据项有:产品编号、产品名称、计量单位、类别、入库价格、分销价格、零售价格、生产厂家、更新日期、备注信息等。3、客户信息,包括的数据项有:客户编号、客户名称、地址、邮政编码、电话号码、公司主页、电子邮件地址、税号、银行帐户、开户银行、联系人、备注信息等4、供应商信息,包括的数据项有:供应商编号、供应商名称、地址、邮政编码、电话号码、公司主页、电子邮件地址、税号、银行帐户、开户银行、联系人、备注信息等。5、业务员类别信息,包括的数据项有:类别编号,类别名称等。6、业务员信息,包括的数据项有:业务员编号、业务员姓名、类别、电话号码、家庭住址、身份证号码、备注信息等。7、仓库信息,包括的数据项有:仓库编号、仓库名称。8、进货订单信息,包括的数据项有:订货日期、编号、业务员、供应商编号、产品编号、数量、单价、折扣比例、总金额、备注信息等。9、入库单信息,包括的数据项有:入库日期、编号、业务员、供应商编号、产品编号、数量、单价、折扣比例、总金额、是否即时付款、是否记帐、预付比例、备注信息等。10、配料单信息,包括的数据项有:配料单编号、设置日期、产品编号、产品名称、产品计量单位、配料编号、配料名称、配料计量单位、配料数量、配料总金额、业务员编号、备注信息等。11、生产计划信息,包括的数据项有:计划编号、计划制定人、计划制定时间、产品编号、产品名称、计量单位、生产数量、单价、总金额、计划起始时间、计划结束时间、备注信息等。12、销售出货单信息,包括的数据项有:销售日期、编号、业务员、客户编号、产品编号、数量、单价、折扣比例、总金额、是否即时付款、是否记帐、预付比例、备注信息等。13、库存信息,包括的数据项有:更新日期、编号、仓库编号、产品编号、数量、单价、总金额、备注信息等。14、转仓信息,包括的数据项有:转仓日期、编号、业务员、转出仓库编号、转入仓库编号、产品编号、数量、总金额、备注信息等。(二)、数据库逻辑结构设计现在需要将本系统的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。根据数据库的需求分析和概念结构设计,设计了名称为my_factory的数据库。数据库由下面多个表组成,各个表的设计结果如下面表格所示。dm_wzlb产品类别表列名数据类型可否为空说明LbcodeCharNotnull产品父类编号LbCharNull产品父类名称BzCharNull备注信息dm_wz产品信息表列名数据类型可否为空说明DmCharNotnull产品编号McCharNull产品名称JldwCharNull计量单位LbdmCharNull产品类别编号RkjNumericNull入库价格FxjNumericNull分销价格LsjNumericNull零售价格CjCharNull生产厂家YxrqDatetimeNull更新日期BzCharNull备注信息dm_kh客户信息表列名数据类型可否为空说明DmCharNotnull会员编号McCharNull会员名称AddrCharNull地址YzbmCharNull邮政编码TelCharNull联系电话ItladdCharNull公司主页YwmanCharNull联系人EmailCharNull联系人电子邮件地址Sui_noCharNull税号Bank_noCharNull银行帐号BankCharNull开户银行LbcodeCharNull会员类别编号Total_jeNumericNull累计消费金额BzCharNull备注信息dm_gf供应商信息表列名数据类型可否为空说明DmCharNotnull供应商编号McCharNull供应商名称AddrCharNull地址YzbmCharNull邮政编码TelCharNull联系电话ItladdCharNull公司主页EmailCharNull联系人电子邮件Sui_noCharNull税号Bank_noCharNull银行帐号BankCharNull开户银行YwmanCharNull联系人BzCharNull备注信息dm_ywylb业务员类别表列名数据类型可否为空说明LbcodeCharNotnull类别编号LbCharNull类别名称BzCharNull备注信息dm_ywy业务员表列名数据类型可否为空说明DmCharNotnull业务员编号McCharNull业务员姓名LbCharNull类别TelCharNull联系电话AddrCharNull家庭住址SfzCharNull身份证号码LbcodeCharNull类别编号BzCharNull备注信息dm_ck仓库表列名数据类型可否为空说明DmCharNotnull仓库编号McCharNull仓库名称BzCharNull备注信息dh进货订单表列名数据类型可否为空说明In_dateDatetimeNotnull订货日期YwmanCharNull业务员Dh_noCharNull订货单编号GfdmCharNull供应商编号WzdmCharNull产品编号SlNumericNull数量In_danjNumericNull订货单价I_zkNumericNull折扣I_zkeNumericNull总金额BzCharNull备注信息inh入库单表列名数据类型可否为空说明In_dateDatetimeNotnull入库日期YwmanCharNull业务员Inh_noCharNull入库单编号GfdmCharNull供应商编码CkdmCharNull仓库编号WzdmCharNull产品编号SlNumericNull数量In_danjNumericNull单价I_zkNumericNull折扣I_zkeNumericNull总金额JsfkCharNull是否即时付款JzCharNull是否记帐YfNumericNull预付比例BzCharNull备注信息Bz1CharNull入库方式(采购、生产等)xsdh销售订单表列名数据类型可否为空说明Out_dateDatetimeNotnull销售订货日期YwmanCharNull业务员Xsdh_noCharNull销售订货单编号KhdmCharNull客户编号WzdmCharNull商品编号SlNumericNull数量Out_danjNumericNull销售订货单价O_zkNumericNull折扣O_zkeNumericNull总金额BzCharNull备注信息outh销售单表列名数据类型可否为空说明Out_dateDatetimeNotnull销售日期YwmanCharNull业务员Outh_noCharNull销售单编号KhdmCharNull客户编号CkdmCharNull仓库编号WzdmCharNull产品编号SlNumericNull数量Out_danjNumericNull单价O_zkNumericNull折扣O_zkeNumericNull总金额JsfkCharNull是否即时付款JzCharNull是否记帐YfNumericNull预付比例BzCharNull备注信息Bz1CharNull出库方式(销售、组装等)kucun库存表列名数据类型可否为空说明Update_dateDatetimeNotnull更新日期Kucun_noCharNull库存编号CkdmCharNull仓库编号WzdmCharNull产品编号SlNumericNull数量Total_jeNumericNull总金额zc转仓单表列名数据类型可否为空说明Zc_noCharNotnull转仓单编号Zc_dateDatetimeNull转仓日期YwmanCharNull业务员O_ckdmCharNull转出仓库编号I_ckdmCharNull转入仓库编号WzdmCharNull产品编号SlNumericNull数量Total_jeNumericNull总金额BzCharNull备注信息mate配料单表列名数据类型可否为空说明M_noCharNotnull配料单编号M_dateDatetimeNull设置日期Wzdm1CharNull产品编号Wzmc1CharNull产品名称Jldw1CharNull计量单位Wzdm2CharNull配料产品编号Wzmc2CharNull配料产品名称Jldw2CharNull配料计量单位Sl2NumericNull配料数量In_djNumericNull配料价格JineNumericNull配料总金额YwdmCharNull业务员编号BzCharNull备注信息plang生产计划表列名数据类型可否为空说明Pl_noCharNotnull生产计划编号Pl_manCharNull业务员编号Pl_dateDatetimeNull制定日期DmCharNull产品编号McCharNull产品名称JldwCharNull计量单位Pl_slNumericNull生产数量DjNumericNull生产价格JineNumericNull总金额Cp_dateDatetimeNull计划开始日期St_dateDatetimeNull计划结束日期BzCharNull备注信息(三)、数据库结构的实现利用SQL2000数据库系统中的查询分析实现数据库的逻辑结构,其表格代码如下:‘判断是否存在同名的数据库,存在就删除同名的数据库IFEXISTS(SELECTnameFROMmaster.dbo.sysdatabasesWHEREname=N’My_Factory’) DROPDATABASE[My_Factory]GO‘创建订货单表CREATETABLE[dbo].[dh]( [in_date][datetime]NULL, [ywman][char](8)COLLATEChinese_PRC_CI_ASNULL, [dh_no][char](8)COLLATEChinese_PRC_CI_ASNOTNULL, [gfdm][char](8)COLLATEChinese_PRC_CI_ASNULL, [wzdm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [sl][numeric](10,0)NOTNULL, [in_danj][numeric](12,2)NULL, [I_zk][numeric](5,0)NULL, [I_zke][numeric](12,2)NULL, [bz][char](100)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建仓库表CREATETABLE[dbo].[dm_ck]( [dm][char](6)COLLATEChinese_PRC_CI_ASNOTNULL, [mc][char](40)COLLATEChinese_PRC_CI_ASNULL, [bz][char](255)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建供应商信息表CREATETABLE[dbo].[dm_gf]( [dm][char](8)COLLATEChinese_PRC_CI_ASNOTNULL, [mc][char](40)COLLATEChinese_PRC_CI_ASNULL, [addr][char](40)COLLATEChinese_PRC_CI_ASNULL, [yzbm][char](6)COLLATEChinese_PRC_CI_ASNULL, [tel][char](40)COLLATEChinese_PRC_CI_ASNULL, [itladd][char](50)COLLATEChinese_PRC_CI_ASNULL, [email][char](50)COLLATEChinese_PRC_CI_ASNULL, [sui_no][char](20)COLLATEChinese_PRC_CI_ASNULL, [bank_no][char](20)COLLATEChinese_PRC_CI_ASNULL, [bank][char](30)COLLATEChinese_PRC_CI_ASNULL, [ywman][char](8)COLLATEChinese_PRC_CI_ASNULL, [bz][char](255)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建客户信息表CREATETABLE[dbo].[dm_kh]( [dm][char](8)COLLATEChinese_PRC_CI_ASNOTNULL, [mc][char](40)COLLATEChinese_PRC_CI_ASNULL, [addr][char](40)COLLATEChinese_PRC_CI_ASNULL, [yzbm][char](6)COLLATEChinese_PRC_CI_ASNULL, [tel][char](40)COLLATEChinese_PRC_CI_ASNULL, [itladd][char](50)COLLATEChinese_PRC_CI_ASNULL, [ywman][char](8)COLLATEChinese_PRC_CI_ASNULL, [email][char](50)COLLATEChinese_PRC_CI_ASNULL, [sui_no][char](20)COLLATEChinese_PRC_CI_ASNULL, [bank_no][char](30)COLLATEChinese_PRC_CI_ASNULL, [bank][char](30)COLLATEChinese_PRC_CI_ASNULL, [card_no][char](13)COLLATEChinese_PRC_CI_ASNULL, [mb_reb][numeric](12,2)NULL, [bz][char](255)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建商品信息表CREATETABLE[dbo].[dm_wz]( [dm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [mc][char](40)COLLATEChinese_PRC_CI_ASNULL, [jldw][char](8)COLLATEChinese_PRC_CI_ASNULL, [lb][char](30)COLLATEChinese_PRC_CI_ASNULL, [rkj][numeric](12,2)NULL, [fxj][numeric](12,2)NULL, [lsj][numeric](12,2)NULL, [cj][char](20)COLLATEChinese_PRC_CI_ASNULL, [yxrq][datetime]NULL, [bz][char](255)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建商品类别表CREATETABLE[dbo].[dm_wzlb]( [lbcode][char](30)COLLATEChinese_PRC_CI_ASNULL, [lb][char](30)COLLATEChinese_PRC_CI_ASNULL, [bz][char](255)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建业务员信息表CREATETABLE[dbo].[dm_ywy]( [dm][char](6)COLLATEChinese_PRC_CI_ASNOTNULL, [mc][char](20)COLLATEChinese_PRC_CI_ASNULL, [lb][char](30)COLLATEChinese_PRC_CI_ASNULL, [tel][char](40)COLLATEChinese_PRC_CI_ASNULL, [addr][char](40)COLLATEChinese_PRC_CI_ASNULL, [sfz][char](18)COLLATEChinese_PRC_CI_ASNULL, [lbcode][char](30)COLLATEChinese_PRC_CI_ASNULL, [bz][char](255)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建业务员类别表CREATETABLE[dbo].[dm_ywylb]( [lbcode][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [lb][char](30)COLLATEChinese_PRC_CI_ASNULL, [bz][char](255)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建入库单表CREATETABLE[dbo].[inh]( [in_date][datetime]NULL, [ywman][char](8)COLLATEChinese_PRC_CI_ASNULL, [inh_no][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [gfdm][char](8)COLLATEChinese_PRC_CI_ASNULL, [ckdm][char](6)COLLATEChinese_PRC_CI_ASNULL, [wzdm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [sl][numeric](10,0)NOTNULL, [in_danj][numeric](12,2)NULL, [I_zk][numeric](5,0)NULL, [I_zke][numeric](12,2)NULL, [jsfk][char](2)COLLATEChinese_PRC_CI_ASNULL, [jz][char](2)COLLATEChinese_PRC_CI_ASNULL, [yf][numeric](5,0)NULL, [bz][char](100)COLLATEChinese_PRC_CI_ASNULL, [bz1][char](10)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建库存信息表CREATETABLE[dbo].[kucun]( [update_date][datetime]NULL, [kucun_no][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [ckdm][char](6)COLLATEChinese_PRC_CI_ASNULL, [wzdm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [sl][numeric](10,0)NOTNULL, [total_je][numeric](12,2)NULL)ON[PRIMARY]GO‘创建配料单表CREATETABLE[dbo].[mate]( [m_no][char](8)COLLATEChinese_PRC_CI_ASNULL, [m_date][datetime]NULL, [wzdm1][char](30)COLLATEChinese_PRC_CI_ASNULL, [wzmc1][char](40)COLLATEChinese_PRC_CI_ASNULL, [jldw1][char](4)COLLATEChinese_PRC_CI_ASNULL, [wzdm2][char](30)COLLATEChinese_PRC_CI_ASNULL, [wzmc2][char](40)COLLATEChinese_PRC_CI_ASNULL, [jldw2][char](4)COLLATEChinese_PRC_CI_ASNULL, [sl2][numeric](18,2)NULL, [in_dj][numeric](18,2)NULL, [jine][numeric](18,2)NULL, [ywdm][char](8)COLLATEChinese_PRC_CI_ASNULL, [bz][char](50)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建出货单表CREATETABLE[dbo].[outh]( [out_date][datetime]NULL, [ywman][char](8)COLLATEChinese_PRC_CI_ASNULL, [outh_no][char](14)COLLATEChinese_PRC_CI_ASNOTNULL, [khdm][char](8)COLLATEChinese_PRC_CI_ASNULL, [ckdm][char](6)COLLATEChinese_PRC_CI_ASNULL, [wzdm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [sl][numeric](10,0)NOTNULL, [out_danj][numeric](12,2)NULL, [o_zk][numeric](5,0)NULL, [o_zke][numeric](12,2)NULL, [jsfk][char](2)COLLATEChinese_PRC_CI_ASNULL, [jz][char](2)COLLATEChinese_PRC_CI_ASNULL, [yf][numeric](5,0)NULL, [bz][char](100)COLLATEChinese_PRC_CI_ASNULL, [bz1][char](100)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建生产计划表CREATETABLE[dbo].[plang]( [pl_no][char](8)COLLATEChinese_PRC_CI_ASNOTNULL, [pl_man][char](8)COLLATEChinese_PRC_CI_ASNULL, [pl_date][datetime]NULL, [dm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [mc][char](40)COLLATEChinese_PRC_CI_ASNULL, [jldw][char](8)COLLATEChinese_PRC_CI_ASNULL, [pl_sl][numeric](12,2)NULL, [dj][numeric](12,2)NULL, [jine][numeric](12,2)NULL, [cp_date][datetime]NULL, [st_date][datetime]NULL, [bz][text]COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GO‘创建销售订货表CREATETABLE[dbo].[xsdh]( [out_date][datetime]NULL, [ywman][char](8)COLLATEChinese_PRC_CI_ASNULL, [xsdh_no][char](8)COLLATEChinese_PRC_CI_ASNOTNULL, [khdm][char](8)COLLATEChinese_PRC_CI_ASNULL, [wzdm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [sl][numeric](10,0)NOTNULL, [out_danj][numeric](12,2)NULL, [o_zk][numeric](5,0)NULL, [o_zke][numeric](12,2)NULL, [bz][char](100)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO‘创建转仓信息表CREATETABLE[dbo].[zc]( [zc_no][char](8)COLLATEChinese_PRC_CI_ASNOTNULL, [zc_date][datetime]NULL, [ywman][char](8)COLLATEChinese_PRC_CI_ASNULL, [o_ckdm][char](6)COLLATEChinese_PRC_CI_ASNULL, [I_ckdm][char](6)COLLATEChinese_PRC_CI_ASNULL, [wzdm][char](30)COLLATEChinese_PRC_CI_ASNOTNULL, [sl][numeric](10,0)NOTNULL, [total_je][numeric](12,2)NULL, [bz][char](100)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO四、企业进销存管理系统模块的创建(一)、创建公用模块Module1.bas由于系统中各个功能模块都将频繁使用数据库中的各种数据,因此需要一个公共的数据操作函数,用以执行各种SQL语句。添加函数ExecuteSQL,代码如下:PublicFunctionExecuteSQL(ByValSQL_AsString,MsgStringAsString)_AsADODB.Recordset'执行SQL语句,并返回记录集对象'声明一个连接DimcnnAsADODB.Connection'声明一个数据集对象DimrstAsADODB.RecordsetDimsTokens()AsString'异常处理OnErrorGoToExecuteSQL_Error'用Split函数产生一个包含各个子串的数组sTokens=Split(SQL)'打开连接Setcnn=NewADODB.Connectioncnn.OpenConnectStringIfInStr("INSERT,DELETE,UPDATE,EXECUTE",_UCase$(sTokens(0)))Then'执行查询语句cnn.Execute(SQL)MsgString=sTokens(0)&_"querysuccessful"ElseSetrst=NewADODB.Recordsetrst.OpenTrim$(SQL),cnn,_adOpenKeyset,_adLockOptimistic'rst.MoveLast'getRecordCount'返回记录集对象SetExecuteSQL=rstMsgString="查询到"&rst.RecordCount&_"条记录"EndIfExecuteSQL_Exit:Setrst=NothingSetcnn=NothingExitFunctionExecuteSQL_Error:MsgString="查询错误:"&_Err.DescriptionResumeExecuteSQL_ExitEndFunction在EexecuteSQL函数中使用了ConnectString函数,这个函数用来连接数据库。PublicFunctionConnectString()_AsString'返回一个数据库连接ConnectString="FileDSN=my_factory.dsn;UID=sa;PWD="EndFunction在录入有关信息时,需要回车来进入下一个文本框,这样对用户非常方便。所有的功能模块都需要这个函数,所以也将它放在在公用模块中。PublicSubEnterToTab(KeyascAsInteger)'判断是否为回车键IfKeyasc=13Then'转换成Tab键SendKeys"{TAB}"EndIfEndSub添加全局变量,用来记录各个功能模块的读写状态。PublicgintWZSmodeAsInteger'forWZsetupPublicgintGFSmodeAsInteger'forGFsetupPublicgintKHSmodeAsInteger'forKHsetupPublicgintYWYLBSmodeAsInteger'forYWYLBsetupPublicgintYWYSmodeAsInteger'forYWYsetupPublicgintCKSmodeAsInteger'forCKsetupPublicgintWZLBSmodeAsInteger'forWZLBsetupPublicgintWZYSSmodeAsInteger'forWZYSsetupPublicgintDHmodeAsInteger'fordinhuoPublicgintINHmodeAsInteger'forrukuhuoPublicgintXSDHmodeAsInteger'forxiaoshoudingdanPublicgintOUTHmodeAsInteger'forxiaoshoudingdanPublicgintZCmodeAsInteger'forshangpinzhuancangPublicgintGETmodeAsInteger'foryingshouPublicgintOFFERmodeAsInteger'forYINGFUPublicgintPLLISTmodeAsInteger'forPEILIAOLISTPublicgintPLmodeAsInteger'forPEILIAOPublicgintPLANGLISTmodeAsInteger'forplanlistPublicgintPLANGmodeAsInteger'forplan这些全局变量用来记录是添加状态还是修改状态,赋值1为添加,赋值2为修改。(二)、基本信息设置模块的创建基本信息设置模块主要实现如下功能:添加和修改产品信息添加和修改产品类别信息添加和修改客户信息添加和修改供应商信息添加和修改业务员类别信息添加和修改业务员信息添加和修改仓库信息1、产品设置窗体的创建选择“基本信息设置/产品设置”菜单,将出现如图所示的窗体。这个窗体用来显示产品设置信息,并且可以对各条记录进行操作。在载入窗体时,将自动显示所有记录,代码如下:PrivateSubForm_Load()ShowTitleShowDataEndSub函数ShowTitle用来显示表头,代码如下:PrivateSubShowTitle()DimiAsIntegerWithmsgList'设置列数目.Cols=11.TextMatrix(0,1)="款号".TextMatrix(0,2)="名称".TextMatrix(0,3)="单位".TextMatrix(0,4)="类别".TextMatrix(0,5)="入库价格".TextMatrix(0,6)="分销价格".TextMatrix(0,7)="零售价格".TextMatrix(0,8)="生产厂家".TextMatrix(0,9)="设置日期".TextMatrix(0,10)="备注信息"'固定表头.FixedRows=1'设置各列的对齐方式Fori=0To10.ColAlignment(i)=0Nexti'表头项居中.FillStyle=flexFillRepeat.Col=0.Row=0.RowSel=1.ColSel=.Cols-1.CellAlignment=4'设置单元大小.ColWidth(0)=1000.ColWidth(1)=1000.ColWidth(2)=2000.ColWidth(3)=1000.ColWidth(4)=1000.ColWidth(5)=1000.ColWidth(6)=1000.ColWidth(7)=1000.ColWidth(8)=1000.ColWidth(9)=1000.ColWidth(10)=1000.Row=1EndWithEndSub函数ShowData把各条记录加到表格中,并显示出来,代码如下:PrivateSubShowData()DimjAsIntegerDimiAsIntegerDimMsgTextAsStringSetmrc=ExecuteSQL(txtSQL,MsgText)WithmsgList.Rows=1DoWhileNotmrc.EOF.Rows=.Rows+1Fori=1Tomrc.Fields.CountIfNotIsNull(Trim(mrc.Fields(i-1)))ThenSelectCasemrc.Fields(i-1).TypeCaseadDBDate.TextMatrix(.Rows-1,i)=Format(mrc.Fields(i-1)&"","yyyy-mm-dd")CaseElse.TextMatrix(.Rows-1,i)=mrc.Fields(i-1)&""EndSelectEndIfNextimrc.MoveNextLoopEndWithmrc.CloseEndSub在窗体时显示时,可以控制窗体中各个控件按照要求的位置显示。可以在窗体的Resize事件中加入代码,代码如下:PrivateSubForm_Resize()IfMe.WindowState<>vbMinimizedAndfMainForm.WindowState<>vbMinimizedThen'边界处理IfMe.ScaleHeight<10*lblTitle.HeightThenExitSubEndIfIfMe.ScaleWidth<lblTitle.Width+lblTitle.Width/2ThenExitSubEndIf'控制控件的位置lblTitle.Top=lblTitle.HeightlblTitle.Left=(Me.Width-lblTitle.Width)/2msgList.Top=lblTitle.Top+lblTitle.Height+lblTitle.Height/2msgList.Width=Me.ScaleWidth-200msgList.Left=Me.ScaleLeft+100msgList.Height=Me.ScaleHeight-msgList.Top-1500Frame2.Top=msgList.Top+msgList.Height+50Frame2.Left=Me.ScaleWidth/2-3000EndIfEndSub2、产品设置信息添加窗体的创建在产品设置窗体中单击“添加”按钮,将出现如图所示的窗体。载入窗体时,首先根据标志变量判断状态,然后决定是添加还是修改,代码如下:PrivateSubForm_Load()DimintCountAsIntegerDimMsgTextAsStringDimiAsIntegerDimmrccAsADODB.Recordset‘判断是否添加IfgintWZSmode=1ThenMe.Caption=Me.Caption&"添加"Fori=0To8txtItem(i).Text=""Nexti‘判断是否修改记录ElseIfgintWZSmode=2ThenSetmrc=ExecuteSQL(txtSQL,MsgText)Ifmrc.EOF=FalseThenWithmrcForintCount=0To2txtItem(intCount)=.Fields(intCount)NextintCountForintCount=3To8txtItem(intCount)=.Fields(intCount+1)NextintCountEndWithtxtItem(0).Enabled=FalseEndIfMe.Caption=Me.Caption&"修改"EndIf‘添加产品信息类别信息Combo1(1).CleartxtItem(7)=Format(Now,"yyyy-mm-dd")txtItem(7).Enabled=FalsetxtSQL="selectlbfromdm_wzlb"Setmrcc=ExecuteSQL(txtSQL,MsgText)IfNotmrcc.EOFThenDoWhileNotmrcc.EOFCombo1(1).AddItemmrcc.Fields(0)mrcc.MoveNextLoopEndIfmrcc.ClosemblChange=FalseEndSub输入内容完毕,单击“保存”按钮,将首先判断输入内容是否满足要求,然后添加到数据库中,代码如下:PrivateSubcmdSave_Click()DimintCountAsIntegerDimsMegAsStringDimMsgTextAsString‘判断输入内容是否为空ForintCount=0To7IfTrim(txtItem(intCount)&"")=""ThenSelectCaseintCountCase0sMeg="款号"Case1sMeg="名称"Case2sMeg="单位"Case3sMeg="入库价格"Case4sMeg="分销价格"Case5sMeg="零售价格"Case6sMeg="生产厂家"Case7sMeg="设置日期"EndSelectsMeg=sMeg&"不能为空!"MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"txtItem(intCount).SetFocusExitSubEndIfNextintCount‘判断是否输入数字ForintCount=3To5IfNotIsNumeric(Trim(txtItem(intCount)))ThensMeg="产品价格"sMeg=sMeg&"请输入数字!"MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"txtItem(intCount).SetFocusExitSubEndIfNextintCount'添加判断是否有相同的ID记录IfgintWZSmode=1ThentxtSQL="select*fromdm_wzwheredm='"&Trim(txtItem(0))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)Ifmrc.EOF=FalseThenMsgBox"已经存在此产品编号的记录!",vbOKOnly+vbExclamation,"警告"txtItem(0).SetFocusExitSubEndIfmrc.CloseEndIf'先删除已有记录txtSQL="deletefromdm_wzwheredm='"&Trim(txtItem(0))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)'再加入新记录txtSQL="executewz_setup'"ForintCount=0To2txtSQL=txtSQL&Trim(txtItem(intCount))&"','"NextintCounttxtSQL=txtSQL&Trim(Combo1(1))&"','"ForintCount=3To7txtSQL=txtSQL&Trim(txtItem(intCount))&"','"NextintCounttxtSQL=txtSQL&Trim(txtItem(8))&"'"‘执行SQL语句Setmrc=ExecuteSQL(txtSQL,MsgText)‘更新窗体IfgintWZSmode=1ThenMsgBox"添加记录成功!",vbOKOnly+vbExclamation,"添加记录"ForintCount=0To8txtItem(intCount)=""NextintCounttxtItem(7)=Format(Now,"yyyy-mm-dd")mblChange=FalseUnloadfrmWZSetupfrmWZSetup.txtSQL="select*fromdm_wz"frmWZSetup.ShowElseIfgintWZSmode=2ThenUnloadMeUnloadfrmWZSetupfrmWZSetup.txtSQL="select*fromdm_wz"frmWZSetup.ShowEndIfEndSub3、产品设置信息修改窗体的创建在产品设置信息列表中选择需要修改的记录,然后单击“修改”按钮,将出现如图所示的窗体。选择记录的内容将显示在窗体中,可以进行修改,最后保存修改后的记录,代码如下:PrivateSubcmdModify_Click()DimintCountAsInteger‘判断记录是否为空IffrmWZSetup.msgList.Rows>1ThengintWZSmode=2intCount=msgList.Row‘判断是否选择记录IfintCount>0ThenfrmWZSetup1.txtSQL="select*fromdm_wzwheredm='"&Trim(msgList.TextMatrix(intCount,1))&"'"frmWZSetup1.Show1ElseMsgBox"警告",vbOKOnly+vbExclamation,"请首先选择需要修改的纪录!"EndIfEndIfEndSub4、产品设置信息删除按钮的创建在产品设置信息列表中选择需要删除的记录,然后单击“删除”按钮,将删除当前记录,代码如下:PrivateSubcmdDelete_Click()DimtxtSQLAsStringDimintCountAsIntegerDimmrcAsADODB.RecordsetDimMsgTextAsString‘判断记录是否为空IfmsgList.Rows>1ThenIfMsgBox("真的要删除款号为"&Trim(msgList.TextMatrix(msgList.Row,1))&"的记录吗?",vbOKCancel+vbExclamation,"警告")=vbOKThenintCount=msgList.Row‘判断库存产品中是否有相关信息txtSQL="selectsum(sl)fromkucunwherewzdm='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)IfNotmrc.EOFThen‘判断库存中该商品数量是否为零Ifmrc.Fields(0)>0ThenMsgBox"库存中仍存在"&Trim(msgList.TextMatrix(intCount,2))&",不能进行删除操作!",vbOKOnly,"警告"ExitSubElsetxtSQL="deletefromdm_wzwheredm='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)‘删除库存中的零记录txtSQL="deletefromkucunwheredm='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)EndIfElsetxtSQL="deletefromdm_wzwheredm='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)txtSQL="deletefromkucunwheredm='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)EndIf‘更新产品列表窗体UnloadfrmWZSetupfrmWZSetup.txtSQL="select*fromdm_wz"frmWZSetup.ShowEndIfEndIfEndSub(三)、进货信息管理模块的创建进货信息管理模块主要实现如下功能:订货单管理入库单管理进货信息查询1、订货单管理窗体的创建一般进货分两步:第一步到供应商签订订货单,达成进货意向;第二步产品到货并入库,完成产品入库、库存更新。选择“进货信息管理/订货单录入修改”菜单,将出现如图所示的窗体。2、入库单管理窗体的创建产品入库需要实现入库单和库存信息的更新。在实现这个模块功能的过程中需要特别注意多个数据表的数据的关联:如修改入库单信息时,首先需要删除入库记录,恢复库存信息到原始状态,然后添加新的入库记录,并更新库存信息。选择“进货信息管理/入库单录入修改”菜单,所有入库单将出现如图所示的窗体。在入库单信息列表中选择记录,单击“删除”按钮。程序同时更新入库单信息和库存信息,代码如下:PrivateSubcmdDelete_Click()DimtxtSQLAsStringDimintCountAsIntegerDimmrcAsADODB.RecordsetDimMsgTextAsString‘判断入库单列表是否为空IfmsgList.Rows>1ThenIfMsgBox("真的要删除编号为"&Trim(msgList.TextMatrix(msgList.Row,1))&"的入库单记录吗?",vbOKCancel+vbExclamation,"警告")=vbOKThenintCount=msgList.Row‘保存需要删除的记录txtCKDM=Trim(msgList.TextMatrix(intCount,5))txtWZDM=Trim(msgList.TextMatrix(intCount,6))txtSL=Trim(msgList.TextMatrix(intCount,7))txtZKE=Trim(msgList.TextMatrix(intCount,10))‘删除入库单txtSQL="deletefrominhwhereinh_no='"&Trim(msgList.TextMatrix(intCount,1))&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)‘更新库存表中相关信息txtSQL="select*fromkucunwhereckdm='"&txtCKDM&"'"txtSQL=txtSQL&"andwzdm='"&txtWZDM&"'"Setmrc=ExecuteSQL(txtSQL,MsgText)IfNotmrc.EOFThenmrc.Fields(0)=Format(Now,"yyyy-mm-dd")mrc.Fields(4)=mrc.Fields(4)-txtSLmrc.Fields(5)=mrc.Fields(5)-txtZKEmrc.UpdateEndIfmrc.Close‘更新入库单信息UnloadfrmINHfrmINH.txtSQL="selectinh_no,in_date,ywman,gfdm,ckdm,wzdm,sl,in_danj,i_zk,i_zke,jsfk,jz,yf,bzfrominh"frmINH.ShowE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度养老机构租赁服务合同
- 2025年度餐饮管理合伙企业合作协议书
- 二零二五年度儿童娱乐中心店面租赁协议模板
- 二零二五年度酒店客房设施设备保养与维修合同
- 2025年度网络安全技术顾问聘请合同范本
- 二零二五年度牧草种植基地牧草购买与种植保险协议
- 2025年度汽修厂汽车维修行业技术标准制定与实施劳务合同
- 2025年货车挂靠业务委托管理合同
- 二零二五年度酒店客房承包经营及收益分成协议
- 二零二五年度废旧纸业买卖与再生利用合同
- 教育机构招生合作协议
- 我的寒假生活课件模板
- ISO37000-2021组织治理-指南(雷泽佳译2022)
- c语言期末机考(大连理工大学题库)
- 洞顶回填技术交底
- 贝多芬与《月光奏鸣曲》
- 《汽车理论》复习提纲
- 利用勾股定理作图计算(课堂PPT)
- 第18课 罐和壶(一)
- 初二下分式混合计算练习1(附答案)
- 交通建设工程工程量清单计价规范(第1部分公路工程)-解析
评论
0/150
提交评论