毕业设计(论文)-进销存管理系统设计与实现.doc_第1页
毕业设计(论文)-进销存管理系统设计与实现.doc_第2页
毕业设计(论文)-进销存管理系统设计与实现.doc_第3页
毕业设计(论文)-进销存管理系统设计与实现.doc_第4页
毕业设计(论文)-进销存管理系统设计与实现.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

进销存管理系统学 院专 业班 级学 号姓 名指导教师教师职称年月日 35 引言中小企业在我国经济发展中具有重要地位,目前我国的中小企业数量较多、地区分布广泛、行业分布跨度大,随着全球经济一体化的发展及中国加入WTO,中小企业将面临外资企业和国外产品与服务的严峻挑战,比较而言,外资企业具有更为雄厚的资金实力、丰富的管理经验和先进的技术手段,因此,如果我国的中小企业不借助先进的管理思想转变经营观念、使用信息化提高企业的管理水平和工作效率,将很难在今后的国际竞争中取胜。然而企业管理在很多方面、很大程度上都必须借助信息化来完成,而我国中小企业的信息化水平还很低,与外资企业相比,还处于起步阶段。随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争激烈,因此企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必然。1 系统分析1.1 需求分析通过实际调查,要求本系统具有以下功能:q 由于操作人员的计算机知识普遍偏低,因此要求系统具有良好的人机界面。q 如果系统的使用对象较多,则要求有较好的权限管理。q 方便的数据查询,支持多条件查询。q 批量填写进货单及销售单。q 与代理商和供应商往来账本明细,绝不存在假账、漏账、差账等情况。q 图表分析月销售状况。q 当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全。q 在相应的权限下,删除数据方便简单、数据稳定性强。q 数据计算自动完成,尽量减少人工干预。q 强大的报表打印功能。1.2 可行性分析本系统后台数据库采用目前比较流行的Microsoft SQL Server,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据库量大,效率高;前台采用Microsoft公司的Visual Basic 6.0作为主要的开发工具,其可与SQL Server 2000数据库无缝链接。2 总体设计2.1 项目规划进销存管理系统具体规划如下:q 进货管理模块该模块主要负责商品的进货数据录入、进货退货数据录入、进货分析、进货统计(不含退货)、与供应商往来对账。q 销售管理模块该模块主要负责商品的销售数据录入、销售退货数据录入、销售统计(不含退货)、月销售状况(销售分析、明细帐本)、商品销售排行、往来分析(与代理商对账)、商品销售成本表。q 库存管理模块库存管理模块主要负责库存状况、库存商品数量上限报警、库存商品数量下限报警、商品进销存变动表、库存盘点(自动盘赢盘亏)。q 基础数据管理模块基础数据管理模块主要负责对系统基本数据录入,相关基础数据为:库存商品、往来单位、内部职员。q 系统维护模块本单位信息、操作员设置、操作权限设置、数据备份和数据库恢复、数据清理。q 辅助工具模块登录Internet、启动Word、启动Excel、日历本、计算器、记事本、通讯录。q 系统信息模块帮助信息、每日提示、系统关于、明日互联网。2.2 系统功能结构图1 系统功能结构图3 详细设计3.1 系统启动设计系统启动主要用于检测用户是否为已注册用户、并在没有创建数据库的情况下将其自动创建到SQL Server 2000中。系统启动窗体运行结果如图2所示。图2 系统启动窗体1窗体设计(1)新建1个窗体,将窗体的“名称”属性设置为“frm_star”,BorderStyle属性设置为0-None,设置Picture属性,为窗体添加图片。(2)在窗体上添加ShockwaveFlash控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框将其添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Shockwave Flash”列表项,然后单击【确定】按钮,ShockwaveFlash控件添加成功。(3)在窗体中添加Timer控件,默认“名称”属性为Timer1,设置Enabled属性值为False,Interval属性值为1500。2代码设计在代码窗口的声明部分定义如下变量。Private rs As New ADODB.Recordset 记录集对象Dim str As String在窗体装载过程中,判断用户是否第一次使用本系统,如果第一次使用,将系统当前日期保存在注册表中,并将系统数据库文件自动附加到SQL Server 2000中。Private Sub Form_Load() Dim ss As Date Dim dd As Integer ShockwaveFlash1.Movie = App.Path & SWFsss.swf 自动识别Falsh文件路径 If GetSetting(appname:=this, Section:=user, Key:=time) = Then MsgBox 尊敬的用户:你好!你还没有注册软件,从现在开始,你的试用为30天! SaveSetting appname:=this, Section:=user, Key:=time, setting:=Date 将软件第一次使用的日期存储到注册表中 Call cnn 调用模块中 共享数据库连接函数 Set rs = New ADODB.Recordset 开始附加数据库 str = EXEC sp_attach_db dbname = Ndb_SSS, filename1 = N + App.Path + DataSourcedb_SSS_Data.MDF + , filename2 = N + App.Path + DataSourcedb_SSS_Log.LDF + rs.Open str, cnn, adOpenDynamic, adLockOptimistic cnn.Close 关闭数据库连接 Else提取注册表中的日期数据 ss = GetSetting(appname:=this, Section:=user, Key:=time) dd = Date - ss 计算软件试用天数 If dd 30 Then MsgBox 对不起,你的试用期已到! Unload Me 试用期已到,卸载本窗体,终止程序继续进行 Else MsgBox 您现在还没有注册本软件,试用期还有 & 30 - dd & 天! End If End If Timer1.Enabled = True 设置控件可用End Sub3.2 系统登录设计系统登录主要用于对进入进销存管理系统的用户进行安全性检查,以防止非法用户进入该系统。只有合法的用户,才可以进入系统,同时根据管理员分配的权限,给予操作员相应的操作权限。验证操作员及其密码,主要通过记录集结果(RecordSet)并结合If语句判断用户选定的操作员及其输入的密码是否符合数据库中的操作员和密码,如果符合则允许登录,并给予相应的权限,否则提示用户非法登录。系统登录窗体运行结果如图3所示。图3 系统登录窗体1窗体设计(1)新建一个窗体,将窗体的“名称”属性设置为frm_login,BorderStyle属性设置为0-None,设置Picture属性,为窗体添加图片。(2)在窗体上添加Adodc控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框将其添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Ado Data Controls 6.0(SP4)”列表项。(3)在窗体中添加2个文本框控件,分别设置“名称”属性为txtName和txtPassword,设置BorderStyle属性为0-None。(4)在窗体中添加2个Label控件,使用默认名称、设置BackStyle属性为0-Transparent”,Label3和Label4的Caption属性为“登录”和“取消”。2代码设计在代码窗口的声明部分定义如下变量。Dim txtRS As String在窗体装载事件中,通过ADO控件的ConnectionString属性建立数据库连接,代码如下:Private Sub Form_Load() Adodc1.ConnectionString = PublicStr 建立数据库连接 Adodc1.RecordSource = select * from tbS_power 执行SQL语句 Adodc1.Refresh 刷新数据源End Sub当鼠标移动到Form窗体范围内,将Label3和Label4中的字体颜色设置为黑色。Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single) Label3.ForeColor = &H80000012 设置控件的前景色(字体颜色) Label4.ForeColor = &H80000012End Sub鼠标单击Label1控件,对进入系统的用户进行安全性检查并给予分配权限。Private Sub Label1_Click() Adodc1.RecordSource = select * from tbS_power Adodc1.Refresh On Error Resume Next 错误处理 txtRS = Adodc1.Recordset.Fields(0) 获得用户名称 If txtRS = Then 首先判断该系统是否有用户 MsgBox 尊敬的用户,你还没有注册为本系统用户,请尽快注册为系统用户 frm_main.Show 显示主窗体 frm_setOP.Show 显示指定的窗体 frm_main.Enabled = False Unload Me 卸载登录窗体 Exit Sub End If Adodc1.RecordSource = select * from tbS_power where sysuser= + txtName.Text + and password= + txtPassword.Text + 验证用户身份 Adodc1.Refresh 管理员最高权限 If Adodc1.Recordset.Fields(2).Value = 0 Or Adodc1.Recordset.Fields(3).Value = 0 Or Adodc1.Recordset.Fields(4).Value = 0 Or Adodc1.Recordset.Fields(5).Value = 0 Or Adodc1.Recordset.Fields(6).Value = 0 Then Else frm_main.Show 窗体的 Show方法 显示指定的窗体 Unload Me Exit Sub 结束当前过程 End If 为用户分配权限 If Adodc1.Recordset.RecordCount 0 Then If Adodc1.Recordset.Fields(2).Value Then 进货管理frm_main.File1.Enabled = True file1为进货管理菜单 Else frm_main.File1.Enabled = False End If If Adodc1.Recordset.Fields(3).Value Then 销售管理 frm_main.file2.Enabled = True file1为销售管理菜单 Else frm_main.file2.Enabled = False End If If Adodc1.Recordset.Fields(4).Value Then 库存管理 frm_main.file3.Enabled = True file1为库存管理菜单 Else frm_main.file3.Enabled = False End If If Adodc1.Recordset.Fields(system).Value Then 系统管理 frm_main.file6.Enabled = True file1为系统管理菜单 Else frm_main.file6.Enabled = False End If If Adodc1.Recordset.Fields(base).Value Then frm_main.file5.Enabled = True file1为基础管理菜单 Else frm_main.file5.Enabled = False End If frm_main.Show 窗体的 Show方法 显示指定的窗体 Unload Me Else MsgBox 您输入的信息不正确! txtName.SetFocus 使控件获得焦点 Exit Sub End IfEnd Sub当鼠标移动到Label1控件区域中,设置Label控件中的颜色设置为蓝色。Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single) Label3.ForeColor = &HC00000 设置Label控件中的颜色设置为蓝色End Sub在用户名文本框中按Enter键,将鼠标光标跳到密码文本框Private Sub txtName_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys TAB 回车时,焦点移到下一个控件End Sub3.3 进货单在商品进货过程中,如果进货的商品品种较多、数量也很大,那么使用文本框一条一条的录入数据,效率将会很低。VB提供的MSFlexGrid控件,处理数据比较灵活,虽然显示的数据是只读的,但可以通过TextBox控件向MSFlexGrid控件中输入数据,然后使用For循环逐一将表格中数据添加到数据表中。1窗体设计(1)新建1个窗体,将窗体的“名称”属性设置为frm_stockBill,Caption属性设置为“进货单”、MaxButton属性为False。(2)在窗体上添加Adodc控件和DataGrid控件,由于这两个控件属于ActiveX控件,在使用前必须从“部件”对话框(如图4所示)将其添加到工具箱中,添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Ado Data Controls 6.0(SP4)”列表项(Adodc控件)和勾选“Microsoft DataGrid Controls 6.0(SP5)”列表项(DataGrid控件)。 图4 添加ActiveX控件在窗体中添加3个DataGrid控件,使用默认名称,分别设置控件的选取框样式,在DataGrid控件上单击鼠标右键,选择“属性”菜单,弹出“属性页”,选择“拆分”选项卡,将DataGrid控件的选取边框样式设置为4-dbgHighlightRowRaise,如图5所示。图5 设置边框样式(3)在窗体中添加6个ADO控件,名称分别为Adodc1、Adodc2、AdoCount、AdoStock、AdoEmploy、AdoUnits,Visible属性均设置为False。(4)在窗体中添加TextBox控件、Label控件和CommandButton控件。(5)添加DTPicker控件,该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Windows Common Controls 2.6.0”列表项,添加DTPicker控件后,其名称为默认的DTPicker1。(6)添加MSFlexGrid控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱,添加方法为:在“工程”/“部件”对话框中勾选“Microsoft FlexGrid Controls 6.0(SP3)”列表项。添加后,设置名称为“MS1”,其他属性均为默认设置。进货管理窗体的设计结果如图6所示。图6 进货单窗体的设计结果2代码设计窗体的装载过程中,主要实现以下功能:(1)建立数据库的连接,初始化ADO数据源。(2)将职员表、往来单位表、库存表通过Set语句绑定到相应的DataGrid表格中。(3)初始化MSFlexGrid表格总行数和总列数、列标题。Private Sub Form_Load() Adodc1.ConnectionString = PublicStr 建立数据库连接 Adodc1.RecordSource = select * from tbS_warehouse_main 初始化数据源 Adodc1.Refresh Adodc2.ConnectionString = PublicStr Adodc2.RecordSource = select * from tbS_warehouse_detailed Adodc2.Refresh adoCount.ConnectionString = PublicStr adoCount.RecordSource = select * from tbS_currentaccount adoCount.Refresh AdoUnits.ConnectionString = PublicStr AdoUnits.RecordSource = select unitcode,fullname from tbS_units AdoUnits.Refresh Set DataGrid2.DataSource = AdoUnits AdoEmploy.ConnectionString = PublicStr AdoEmploy.RecordSource = select employecode,fullname from tbS_employ AdoEmploy.Refresh Set DataGrid1.DataSource = AdoEmploy 使用Set语句设置 DataSource 属性 AdoStock.ConnectionString = PublicStr AdoStock.RecordSource = select * from tbS_stock AdoStock.Refresh Set DataGrid3.DataSource = AdoStock Adodc1.RecordSource = select * from tbS_warehouse_main order by billcode Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then 0 查询到结果 Adodc1.Recordset.MoveLast Text1(0)=Format(Now, yyyymmdd) & JH & Left(Mid(Adodc1.Recordset.Fields(1), 11, 17), 7) + 1 Else Text1(0) = Format(Now, yyyymmdd) & JH1000001 End If DTPicker1.Value = Format(Now, yyyy-mm-dd) 将日期格式化为长日期格式 MS1.Rows = 100: MS1.Cols = 7 定义MS1控件的总行数、总列数。 定义MS1表的宽度 MS1.ColWidth(0) = 12 * 25 * 1 MS1.ColWidth(1) = 12 * 25 * 4 MS1.ColWidth(2) = 12 * 25 * 9 MS1.ColWidth(3) = 12 * 25 * 3 MS1.ColWidth(4) = 12 * 25 * 3 MS1.ColWidth(5) = 12 * 25 * 3 MS1.ColWidth(6) = 12 * 25 * 4 设置固定行、列 MS1.FixedRows = 1: MS1.FixedCols = 1 定义MS1表的表头 MS1.TextMatrix(0, 0) = NO。 MS1.TextMatrix(0, 1) = 商品编号 MS1.TextMatrix(0, 2) = 商品全名 MS1.TextMatrix(0, 3) = 单位 MS1.TextMatrix(0, 4) = 数量 MS1.TextMatrix(0, 5) = 单价 MS1.TextMatrix(0, 6) = 金额 定义MS1表的列序号 For i = 1 To 99 MS1.TextMatrix(i, 0) = i Next i 装载窗体时,确定text3的位置 Text3.Text = Text3.Width = MS1.CellWidth: Text3.Height = MS1.CellHeight Text3.Left = MS1.CellLeft + MS1.Left Text3.Top = MS1.CellTop + MS1.TopEnd SubText3控件Change事件下主要实现以下功能:(1)根据商品名称和拼音简码检索需要的商品信息。(2)动态统计进货单的商品数量和商品金额。Private Sub Text3_Change() If MS1.Col = 2 Then If Text3.Text = Then Else 筛选商品名称和拼音简码 AdoStock.RecordSource = select * from tbS_stock where fullname like + Text3.Text + + %or spell like + Text3.Text + +% AdoStock.Refresh If AdoStock.Recordset.RecordCount 0 Then DataGrid3.Visible = True If DataGrid3.Visible Then DataGrid3.SetFocus 使控件获得焦点 End If End If End IfDim qtp As IntegerDim tsum As Single For i = 1 To 99 If MS1.TextMatrix(i, 4) Then 统计商品数量 qty = Val(MS1.TextMatrix(i, 4) + qty Label5.Caption = qty End If If MS1.TextMatrix(i, 5) Then 计算商品金额 MS1.TextMatrix(i, 6) = Format(Val(MS1.TextMatrix(i, 4) * Val(MS1.TextMatrix(i, 5), #0.00) Else MS1.TextMatrix(i, 6) = End If If MS1.TextMatrix(i, 6) Then 统计商品金额 tsum = Val(MS1.TextMatrix(i, 6) + tsum Label6.Caption = Format(tsum, #0.00) End If Next iEnd SubText3控件KeyPress事件下主要实现以下功能:(1)将Text控件中的数据传输给MSFlexGrid控件中。(2)将Text控件移动到表格的下一个单元格或者表格的下一行。Private Sub Text3_KeyPress(KeyAscii As Integer) VbKeyReturn常数为键盘上的回车键 If KeyAscii = vbKeyReturn Then 按Enter键,text3向右移动 MS1.Text = Text3.Text Text3.Text = MS1.Text If MS1.Col = 5 Then MS1.Row = MS1.Row + 1 MS1.Col = 1 Else If MS1.Col + 1 = MS1.Cols - 1 Then MS1.Col = MS1.Col + 1 Else If MS1.Row + 1 0 Then 判断是否有记录 With AdoStock.Recordset With语句用来在一个单一对象或一个用户定义类型上执行一系列的语句 If .Fields(fullname) Then 赋值给ms1表格 If .Fields(tradecode) Then MS1.TextMatrix(MS1.Row, 1) = Trim(.Fields(tradecode) If .Fields(fullname) Then MS1.TextMatrix(MS1.Row, 2) = Trim(.Fields(fullname) If .Fields(unit) Then MS1.TextMatrix(MS1.Row, 3) = Trim(.Fields(unit) If .Fields(price) Then MS1.TextMatrix(MS1.Row, 5) = .Fields(price) 赋值给text3 Text3.Text = MS1.Text Text3.SetFocus 使控件获得焦点 MS1.Col = 4 DataGrid3.Visible = False Else MsgBox (无数据选择!) DataGrid3.Visible = False Text3.SetFocus 使控件获得焦点 End If End With End If Text3.SetFocus 使控件获得焦点 End If vbKeyEscape为键盘上的ESC键 If KeyCode = vbKeyEscape Then 按ESC键dataGrid1不可见 DataGrid3.Visible = False Text3.SetFocus 使控件获得焦点 Text3获得焦点 End IfEnd Sub3.4 月销售状况月销售状况窗体下含有两个子窗体和一个商品销售状况报表,结构如图7所示。窗体分别为销售分析窗体和明细帐本窗体。笔者在此主要讲解月销售状况窗体和销售分析窗体。图7 月销售状况模块结构图月销售状况主要先统计当年的所有商品销售数据信息(含销售退货)和净销售商品数据信息,然后根据分析出的基础数据,以商品为单位利用图表进行月销售分析;以商品为单位分析商品的销售明细账本和销售退货明细账本。月销售状况模块运行结果如图8所示。图8 月销售状况模块运行结果1月销售状况窗体设计(1)新建一个窗体,将窗体的“名称”属性设置为frm_saleStatus,Caption属性设置为“月销售状况”、MaxButton属性为False。(2)在窗体中添加1个DataGrid控件,使用默认名称;在窗体中添加3个Adodc控件均使用默认名称。(3)添加Toolbar控件和ImageList控件到工具箱在窗体上制作工具栏是通过Toolbar控件和ImageList控件共同来实现的。Toolbar控件和ImageList控件都属于ActiveX控件,使用时需要从“部件”对话框中添加。(4)在窗体上添加StatusBar控件,为窗体设计状态栏,在状态栏的窗格中显示合计商品销售数量和销售金额。2月销售状况代码设计在窗体装载时统计全年的商品销售状况。主要使用SQL语句左外联接技术(左向外联接的结果集包括LEFT子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。)将销售明细表(tbS_sell_detailed)和销售退货明细表(tbS_resell_detailed)进行统计计算,并显示销售数量和销售金额及除去净销售数量和销售金额(不含退货)。代码如下:Private Sub Form_Load() Adodc1.ConnectionString = PublicStr 共享数据库连接 Adodc2.ConnectionString = PublicStr Adodc3.ConnectionString = PublicStr ADO控件的RecordSource执行SQL语句 统计销售状况 Adodc1.RecordSource = select a.tradecode as 商品编号,a.fullname as 商品名称,a.qty as 销售数量,a.price AS 销售均价,a.tsum as 销售金额,a.qty-b.qty2 as 销售数量【含退货】,a.tsum-b.tsum2 as 销售金额【含退货】 from (SELECT tradecode,fullname,avg(price)as price,sum(qty) AS qty, sum(tsum) as tsum from tbS_sell_detailed group by tradecode,fullname) a left join (SELECT tradecode,fullname,sum(qty) AS qty2, sum(tsum) as tsum2 from tbS_resell_detailed group by tradecode,fullname) b on a.tradecode=b.tradecode Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 将数据源绑定到 DataGrid控件上 DataGrid1.Columns(0).Width = 12 * 25 * 3 初始化DataGrid单元格的宽度 DataGrid1.Columns(1).Width = 12 * 25 * 7 DataGrid1.Columns(2).Width = 12 * 25 * 3 DataGrid1.Columns(3).Width = 12 * 25 * 3 DataGrid1.Columns(4).Width = 12 * 25 * 3 DataGrid1.Columns(5).Width = 12 * 25 * 6 DataGrid1.Columns(6).Width = 12 * 25 * 6 ADO控件的RecordSource执行SQL语句 统计销售数量和销售金额 Adodc2.RecordSource = SELECT SUM(qty) AS 销售数量, SUM(tsum) AS 销售金额 FROM tbS_sell_detailed Adodc2.Refresh Adodc3.RecordSource = SELECT SUM(qty) AS 退货数量, SUM(tsum) AS 退货金额 FROM tbS_resell_detailed Adodc3.Refresh SBar1.Panels(1).Alignment = sbrCenter 在状态栏的窗格中,显示文本 SBar1.Panels(2).Alignment = sbrCenter SBar1.Panels(3).Alignment = sbrCenter在状态栏的第2个窗格中显示销售数量 SBar1.Panels(2).Text = 销售数量: & Adodc2.Recordset.Fields(0).Value - Adodc3.Recordset.Fields(0).Value SBar1.Panels(3).Text = 销售金额: & Format(Adodc2.Recordset.Fields(1).Value - Adodc3.Recordset.Fields(1).Value, #0.00)End Sub3销售分析窗体设计利用图表来分析月营业情况。实现方法:定义一个动态二维数组,将数据表中月份字段的值和月营业额的值赋值给动态二维数组(例如:arrValues(i, 1) = Adodc2.Recordset!billdate & 月份和arrValues(i, 2) = Adodc2.Recordset!qty月份营业额),将赋值的数据返回给控件MSChart的ChartData属性,便可以显示月营业分析图(例如:msChart1.ChartData = arrValues)。另外,图表的X轴和Y轴分别代表月份和月营业额。销售分析窗体设计结果如图9所示。图9 销售分析窗体设计结果(1)新建1个窗体,将窗体的“名称”属性设置为frm_saleImagesss,Caption属性设置为“每月销售比较”、MaxButton属性为False。(2)在窗体上添加ToolBar控件和ImageList控件,设计二者控件的属性方法同“月销售状况窗体”的ToolBar控件和ImageList控件设计控件属性方法完全相同。(3)添加3个Adodc控件和1个Combo控件其属性均为默认。(4)在窗体上添加MSChart控件,因为该控件属于ActiveX控件,那么在使用前必须添加到工具箱中,添加方法与前面添加ActiveX控件方法相同,只是在“部件对话框”中勾选“Microsoft Chart Controls 6.0(SP4)”,即可将MSChart控件添加到工具箱中。设置名称为默认msChart1、ColumnCount属性为1、RowCount属性为1。(5)添加CheckBox、HScrollBar、OptionButton控件。4销售分析代码设计在代码窗口中定义相关变量,代码如下:Private rs As New ADODB.RecordsetPrivate str1 As StringDim i As Integer在【确定】按钮的Click事件下,主要完成利用图表分析商品的月销售状况,设计思路为:将销售商品信息(含退货)按月统计出的数据存储在tbS_temp表中,然后按月统计销售退货数据,二者做差,更新tbS_temp表。最后tbS_temp表中的数据为图表所分析数据。代码如下:Private Sub cmdOK_Click() 删除临时表中的所有数据 Call cnn Set rs = New ADODB.Recordset str1 = delete from tbS_temp rs.Open str1, cnn, adOpenDynamic, adLockOptimistic cnn.Close 向临时表添加数据 For i = 0 To Check1.Count - 1 If Check1(i).Value = 1 Then dd = Mid(Date, 1, 4) & -0 & Check1(i).Index + 1 dd = Format(dd, yyyy-mm) ADO控件的RecordSource执行SQL语句 销售总数量和总价格 Adodc1.RecordSource = SELECT SUM(qty) AS 总数量, SUM(tsum) AS 总价格 FROM tbS_sell_detailed WHERE year(billdate)= + str(Year(Date) + and month(billdate)= + str(Check1(i).Index + 1) + AND (tradecode = + frm_saleStatus.Adodc1.Recordset.Fields(0) + ) Adodc1.Refresh Adodc2.RecordSource = select * from tbS_temp Adodc2.Refresh Adodc2.Recordset.AddNew A

温馨提示

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

评论

0/150

提交评论