国开电大《VisualBasic程序设计》形考任务作业一、二、三、四、五试题及参考资料

此科目答案未上传,可以右侧扫码联系客服或者加HAA600,获取最新资料

《VisualBasic程序设计》形考任务一答案

请同学选择《第1章》-《实战演练》“实验1欢迎程序”或《第2章》-《实战演练》“实验2计时秒表程序”的其中之一,在VB集成开发环境中认真完成实验。

实验完成后,将调试好的程序保存在以“姓名+实验名称”命名的文件夹下,并将该文件夹压缩成.rar或者.zip格式进行提交。本次实验满分15分,提交后需要辅导教师批阅打分。

实验目的

1学会VB(VisualBasic)6.0的安装,掌握启动与退出VB6.0的方法。

2熟悉VB集成开发环境,掌握工具栏、工具栏、属性窗口、工程资源管理器窗口、代码编辑器窗口的使用。

3掌握建立、编辑和运行一个简单的VB应用程序的全过程。

实验内容

本实验将要开发一个“欢迎”程序。程序运行界面如图1.15所示,完成的功能是:单击“显示”按钮,在文本框内显示“欢迎学习VisualBasic程序设计”字样。

图1.15欢迎程序运行界面

实验步骤

1界面设计

(1)启动VisualBasic6.0,在出现的“新建工程”对话框中,单击“打开”按钮,进入VB集成开发环境,出现Form1的窗体,如图1.16所示。

图1.16“Form1”窗体

(2)在Form1窗体上添加控件。用鼠标单击工具箱中的文本框按钮,然后在Form1窗体上用鼠标拖曳,或者直接双击工具箱中的文本框按钮,在Form1窗体上形成一个默认名为Text1的按钮对象,用同样方法将工具箱中的命令按钮添加到Form1窗体上,调整好位置,如图1.17所示。

图1.17在窗体上添加控件

(3)设置窗体的属性。单击Form1窗体,在属性窗口列表的左栏中选择Caption属性,并将右栏中的属性值改为“欢迎”,窗体效果如图1.18所示。

图1.18设置了Form1属性后的窗体

(4)设置控件的属性。在窗体上单击Command1按钮控件,在属性列表的左栏中选择Caption属性,并将右栏中的属性值改为“显示”。单击文本框控件,在属性列表的左栏中找到Text属性,将其值Text1删除。更改了属性值之后的应用程序界面如图1.19所示。

图1.19设置属性后的应用程序界面

2代码设计

双击窗体上的Command1按钮,可在代码编辑器窗口中自动建立起Command1_Click事件的代码框架。在Command1_Click事件过程中添加代码:Text1.Text="欢迎学习VisualBasic程序设计",如图1.20所示。

图1.20Command1_Click事件的代码

注意:

代码顶部的OptionExplicit语句用于要求对程序中的变量进行显示声明。要使该语句自动生成,可从“工具”菜单中选择“选项”,在弹出的“选项”对话框中,将编辑器选项卡中“要求变量声明”前的复选框选中即可。

3保存和运行工程

单击工具栏上的“保存”按钮,将窗体、工程分别以hy.frm、hy.vbp保存在磁盘上预先建立好的文件夹中。单击工具栏中的“启动”按钮,再单击运行界面上的“显示”按钮,在文本框中显示“欢迎学习VisualBasic程序设计”,如图1.15所示。

4生成可执行文件

从“文件”菜单中选择生成hy.exe,在“生成工程”对话框中,单击“保存”按钮。该文件可以脱离VB环境,在操作系统下单独运行。

VisualBasic程序设计形考任务二答案

请同学选择课程《第3章》-《实战演练》“实验3冒泡排序程序”,在VB集成开发环境中认真完成实验。

实验完成后,将调试好的程序保存在以“姓名+实验名称”命名的文件夹下,并将该文件夹压缩成.rar或者.zip格式进行提交。本次实验满分15分,提交后需要辅导教师批阅打分。

实验目的

1理解冒泡排序算法。

2掌握循环、分支结构的使用方法。

3掌握断点设置、监视跟踪等调试方法,深入分析该程序的运行过程、值的变化情况。

实验内容

本实验开发一个“冒泡排序”程序,并通过这个程序,巩固一下第2章所学的程序调试方法。这个程序的运行逻辑是:首先用户在Text1中输入一个整数,单击“添加到初始序列中”按钮后将该整数添加到“初始序列”List1中,如此多次后,再单击“排序”按钮,在List2中显示排序结果,我们期望的运行结果如图3.10所示。

图3.10期望的程序运行结果

实验步骤

1界面设计

(1)首先请同学们参照图3.11完成排序程序的界面设计。

图3.11排序程序的界面设计

2编写事件代码

“添加到初始序列中”按钮的Click事件:

PrivateSubCommand1_Click()

List1.AddItemText.Text

EndSub

“排序”按钮的Click事件;

PrivateSubCommand2_Click()

Dimi,jAsInteger

'定义数组,以List1的项目个数为数组维数

DimstrList(List1.ListCount)AsInteger

'定义中间临时变量,用于数据交换

DimstrTmpAsInteger

'将List1中的项目导入到strList数组中

Fori=0ToList1.ListCount

strList(i)=List1.List(i)

Nexti

'按“冒泡”算法完成排序工作

Fori=0ToUBound(strList)

Forj=i+1ToUBound(strList)

IfstrList(i)>strList(j)Then

strTmp=strList(i)

strList(i)=strList(j)

strList(j)=strTmp

EndIf

Nextj

Nexti

'将排序结果输出到List2中

Fori=0ToUBound(strList)

List2.AddItemstrList(i)

Nexti

EndSub

3运行程序并调试程序语法错误

(1)运行程序,在Text1文本框中输入一个整数,比如1,然后单击“添加到初始序列中”按钮,此时会出现如图3.12所示的错误提示。

[i图3.12实时错误

(2)单击“调试”按钮,进入中断模式,VB编译器将自动标识出引发错误的语句行,如图3.13所示窗体。

图3.13自动定位引发错误的语句行

(3)分析错误原因,很容易发现该行语句的正确写法应该是:

List1.AddItemText1.Text

(4)修改错误后,按F5键继续执行程序,将出现如图3.14所示界面。

图3.14排序程序运行界面

(5)依次输入整数序列21、9、8、6后,将出现如图3.15所示界面。

图3.15输入初始序列后的界面

(6)单击“排序”按钮后,又出现如图3.16所示的运行错误。

图3.16编译错误

(7)单击“确定”按钮后,再次进入中断模式,编译器以加重显示的形式指出了引发错误的位置,如图3.17所示。

图3.17以加重显示的形式定位错误

(8)分析如图3.16所示的错误提示“要求常数表达式”后,发现引用错误的原因是不能用变量作为数组的下标,即下列数组声明语句不符合VB语法约定:

DimstrList(List1.ListCount)AsInteger

为此我们作如下选择,即采用动态数组声明的方法。

DimstrList()AsInteger

ReDimstrList(List1.ListCount)AsInteger

(9)选择完成后,按F5键继续执行,又会出现如图3.18所示的错误提示。

图3.18类型不匹配错误提示

(10)单击“调试”按钮后,错误定位如图3.19所示。

图3.19类型不匹配错误定位

(11)分析错误原因发现,我们将数组strList()声明为Integer数据类型,而List1.List()表示的是字符型数据,VB无法进行自动类型转换,因此我们只能通过Val函数进行转换:

strList(i)=Val(List1.List(i))

(12)按F5键继续,程序成功运行,出现如图3.20所示界面。这说明语法错误已基本排除了。但是观察运行结果,发现“排序结果”序列中多出了一个数值0。这种结果并不是我们期望的。

图3.20有问题的运行结果

(13)关闭程序,重新运行,仍然出现图3.20的问题,这说明程序中存在逻辑问题,需要进一步调试。

4设置断点,分析逻辑错误

逻辑错误是最难定位的,对于那些逻辑稍微复杂的程序,常常需要花费大量的时间和精力查找分析。一般要用到设置断点、单步执行和立即调试窗等工具或技术。

(1)单击如图3.21所示位置,设置断点。

图3.21设置断点

(2)按F5键运行程序并输入一组整数,比如5、4、3、2。单击“排序”按钮后,程序将进入中断模式,出现如图3.22所示界面。

图3.22程序遇到断点

(3)在VB集成环境的“立即”窗口中,使用“?”打印strList数组的上界和相关的值,如图3.23所示。当然也可以使用Print、Debug.Print命令,它们等效于“?”。

[图3.23在“立即”窗中观察变量的值

(4)仔细分析不难发现,List1.ListCount的最大值是4,说明数字序列中共有4个数,即5、4、3、2。但是List1.List()的下标是从0开始的,下标最大值应该为3,即:

List1.ListCount–1

为此,我们需要选择strList()数组的上界和循环次数。

'个性数组声明

ReDimstrList(List1.ListCount-1)AsInteger

'修改循环次数

Fori=0ToList1.ListCount-1

strList(i)=Val(List1.List(i))

Nexti

(5)修改后的完整代码及运行结果如图3.24、图3.25[并排这两个图]所示。

图3.24修改后的代码

图3.25最终的运行结果

5程序的进一步完善

这个程序经过调试能够正常运行了,但还是存在一些不足,比如我们可以在Text1中输入非整数、字符和汉字等。另外,当重新单击“排序”按钮后,数字序列会被重复添加到List2中。上述情况下,应用程序并不会报错,但这与我们的设计要求是不相符的,因此需要进一步完善程序功能,主要有以下两种措施,这些知识将在后续章节介绍。请同学们先提前思考一下。

(1)通过Keypress事件控制Text1控件的输入,使它只能接收数字。

(2)在“排序”按钮的Click事件中加入List2.Clear语句。

VisualBasic程序设计形考任务三答案

请同学选择课程《第4章》-《实战演练》“实验4菜单设计”或《第5章》-《实战演练》“实验5鼠标MouseMove事件应用”的其中之一,在VB集成开发环境中认真完成实验。

实验完成后,将调试好的程序保存在以“姓名+实验名称”命名的文件夹下,并将该文件夹压缩成.rar或者.zip格式进行提交。本次实验满分15分,提交后需要辅导教师批阅打分。

实验目的

1掌握菜单编辑器的使用方法。

2掌握下拉式菜单的制作。

实验内容

本实验主要开发一个如图4.21所示的菜单系统。在菜单栏中有“插入”和“颜色”两个菜单,其中“插入”菜单中包含“符号”“图片”“文本框”和“文件”4个菜单项,“文本框”子菜单又包含“横排”和“竖排”两个选项。“颜色”菜单中包含“红色”“蓝色”和“绿色”3个子菜单。


国开电大《VisualBasic程序设计》形考任务作业一、二、三、四、五试题及参考资料 国开网课题库 2026秋国开作业答案 终结性考核 终考大作业 国家开放大学作业答案 国开形考作业答案 电大试题答案 电大形考作业 国开作业 形成性考核 形考作业 形考任务 网上形考 网上作业 大作业答案 专题测验 国家开放大学学习网 国开一网一平台 国开学习指南 形势与政策 第1张

图4.21简单菜单设计


程序的运行逻辑是:若文本框中没有文本,“颜色”菜单中的各项均为灰色显示,表示当前不可用。当用户向文本框中输入了文字后,单击“颜色”菜单中相应的选项可以改变文本框中文字的颜色。

实验步骤

1界面设计

(1)启动VB进入VisualBasic6.0集成开发环境。单击工程菜单下的“菜单编辑器”命令,打开菜单编辑器对话框,如图4.22所示。

图4.22菜单编辑器

(2)在标题框中输入“插入(&I)”,在名称框中输入Insert,这样就创建了“插入”菜单。各菜单控件设置如表4.3所示。

表4.3菜单控件设置

菜单层次

标题(Caption)

名称(Name)

快捷键设置

顶层

插入(&I)

Insert


一级

符号(&S)

Symbol


一级

图片(&P)

Picture


一级

文本框(&X)

Text


二级

横排(&H)

Horizon


二级

竖排(&V)

Vertical


一级

?

Sep


一级

文件(&L)

Document


顶层

颜色

Color


一级

红色(&R)

Red


一级

蓝色(&B)

Blue


一级

绿色(&G)

Green


(3)单击按钮,再单击按钮(条形光标的左端出现了“…”),在标题框中输入“符号(&S)”,在名称框中输入Symbol,即创建了“插入”菜单的一级子菜单:“符号”。

(4)单击[按钮,在标题框中输入“图片(&P)”,在名称框中输入Picture,创建了“插入”菜单的子菜单:“图片”。按照同样方法创建“文本框”子菜单。

(5)单击按钮,再单击按钮,在标题框中输入“横排(&H)”,在名称框中输入Horizon,即创建了“文本框”的下一级菜单:“横排”。用同样方法创建“文本框”的另一个子菜单:“竖排”。

(6)单击按钮,再单击按钮,在标题框中输入“?”,在名称框中输入Sep,创建了分隔条。

(7)单击按钮,在标题框中输入“文件”,在名称框中输入File,创建一级子菜单“文件”。

(8)单击按钮,再单击按钮,在标题框中输入“颜色”,在名称框中输入Color,创建了顶级菜单“颜色”。

(9)仿照上面的步骤,创建“颜色”菜单的一级子菜单:“红色”“蓝色”和“绿色”。创建了各菜单项的菜单编辑器如图4.23所示。

[i图4.23创建了各菜单项后的菜单编辑器

(10)单击菜单编辑器上的“确定”按钮,生成了如图4.24所示的菜单栏。

图4.24菜单设计窗体界面

(11)在Form1窗体上添加文本框Text1,并将文本框的Text属性值清空,将ScrollBars属性设置为3?both,将MultiLine设置为True。

2代码设计

单击工程资源管理器窗口中的“查看代码”按钮,打开代码编辑器窗口,编写如下程序代码:

PrivateSubColor_Click()

IfText1.Text=""Then

Red.Enabled=False

Blue.Enabled=False

Green.Enabled=False

Else

Red.Enabled=True

Blue.Enabled=True

Green.Enabled=True

EndIf

EndSub

PrivateSubRed_Click()

Text1.ForeColor=vbRed

EndSub

PrivateSubBlue_Click()

Text1.ForeColor=vbBlue

EndSub

PrivateSubGreen_Click()

Text1.ForeColor=vbGreen

EndSub

3保存和运行工程

单击工具栏上的“保存”按钮,分别以CDSJ(1).frm和CDSJ(1).vbp保存窗体文件和工程文件。单击工具栏中的“启动”按钮运行程序,在文本框中输入文字,检验效果。

如果程序出现运行错误或者未达到预期效果,则请同学们根据第2章学习的程序调试方法,找找原因并改正。

VisualBasic程序设计形考任务四答案

请同学选择课程《第6章》-《实战演练》“实验6word文件显示程序”或《第7章》-《实战演练》“实验7绘制图形程序”或《第8章》-《实战演练》“实验8网络下载程序”的其中之一,在VB集成开发环境中认真完成实验。

实验完成后,将调试好的程序保存在以“姓名+实验名称”命名的文件夹下,并将该文件夹压缩成.rar或者.zip格式进行提交。本次实验满分15分,提交后需要辅导教师批阅打分。

实验目的

1掌握建立图形坐标系的方法。

2掌握VB图形控件和图形方法以及常见几何图形的绘制方法。

实验内容

我们上网浏览一些精彩的网页时,会经常看到一串五颜六色的字符或漂亮的图片尾随着鼠标不断移动。在VB程序中要实现这一功能非常容易,只需要一个MouseMove事件就可以了,本实验就是要学习这种编程技巧。

实验步骤

1实验步骤

新建标准EXE工程,将默认窗体Form1的Caption属性改为“绘制三角函数图形”,在窗体上添加3个命令按钮Command1、Command2和Command3,将其Caption属性分别改为“建立坐标系”“y=Sin(x)”和“y=Cos(x)”,并按图7.18调整好位置。

2编写代码

双击窗体上的“建立坐标系”按钮,进入代码编辑器窗口,在代码编辑区的Command1_Click()中添加代码:

'绘制坐标轴和坐标刻度

PrivateSubCommand1_Click()

Cls

Form1.Scale(-8,2)-(8,-2)????'用Scale方法定义坐标系

Line(-7.5,0)-(7.5,0)????'用Line方法画X轴

Line(0,1.7)-(0,-1.7)????'画Line方法画Y轴

CurrentX=7.6:CurrentY=0.1:Print"X"????'标识X轴

CurrentY=0.5:CurrentY=1.8:Print"Y"????'标识X轴

Fori=-7To7

Line(i,0)-(i,0.1)????'在X轴上标记坐标刻度

CurrentX=i-0.2:CurrentY=-0.1:PrintI????'在X轴上输出数字标识

Nexti

Fori=-1To1

Ifi<>0Then

CurrentX=-0.7:CurrentY=i+0.1:PrintI????'在Y轴上输出数字标识

Line(0.5,i)-(0,i)????'在Y轴上标记坐标刻度

EndIf

Nexti

EndSub

'绘制正弦曲线

PrivateSubCommand2_Click()

CurrentX=-6.283:CurrentY=0????'曲线的起点坐标

Fori=-6.283To6.283Step0.01

x=i:y=Sin(i)

Line-(x,y)????'用Line方法绘制正弦曲线

Nexti

CurrentX=2.5:CurrentY=1:Print"y=Sin(x)"????'输出y=Sin(x)

EndSub

PrivateSubCommand3_Click()????'绘制余弦曲线

DrawWidth=2????'设置线宽

CurrentX=-6.283:CurrentY=1

Fori=-6.283To6.283Step0.01

x=i:y=Cos(i)

Line-(x,y)????'绘制余弦曲线

Nexti

CurrentX=-7:CurrentY=1.2:Print"y=Cos(x)"????'输出y=Cos(x)

EndSub

运行程序,并单击“建立坐标系”按钮,即绘制出坐标系,然后单击“y=Sin(x)”“y=Cos(x)”按钮,分别绘制出正弦、余弦曲线。

VisualBasic程序设计形考任务五答案

请同学选择课程《第9章》-《实战演练》“实验9进销存管理信息系统”,在VB集成开发环境中认真完成实验。

实验完成后,将调试好的程序保存在以“姓名+实验名称”命名的文件夹下,并将该文件夹压缩成.rar或者.zip格式进行提交。本次实验满分40分,提交后需要辅导教师批阅打分。

实验目的

1掌握利用SQL语句,通过ADO数据对象管理数据库的方法。

2理解数据库实用程序的框架体系。

3了解数据报表的制作方法。

实验内容

本实验主要开发一个“进销存”管理系统。要求同学们首先在SQLServer上创建名为“进销存”的数据库,并在该数据库上创建“物资台账”“物资入库”“物资出库”3张表。然后编写一个简单“进销存”数据库管理系统,它具有数据增加(Insert)、删除(Delete)、修改(Update)和查询(Select)功能,并能将查询结果在计算屏幕和打印机上输出。

实验步骤

1创建数据库

在进行本实验之前,请同学们先根据表9.4、表9.5、表9.6在SQLServer上创建“进销存”数据库。如果你不具备SQLServer实验环境,也可以在Access数据库上完成创建工作。无论采用哪种数据库,程序设计过程和代码基本相同。

表9.4物资台账表结构

字段名

类型

长度

备注

物资编码

Char

4

1.主关键字为“物资编码”

2.在主关键字上创建聚集唯一索引

3.“物资编码”由4位组成,其中第1位使用英文字母表示物资类别,后3位使用数字表示流水号。物资类别如下:A表示钢笔类,B表示橡皮类

物资名称

Varchar

10

计量单位

Char

2

单价

Money

8

期初库存

Numeric

9

表9.5物资入库表结构

字段名

类型

长度

备注

物资编码

Char

4

在主关键字“物资编码”上创建聚集不唯一索引

入库时间

Datetime

8

入库数量

Numeric

9

表9.6物资出库表结构

字段名

类型

长度

备注

物资编码

Char

4

在主关键字“物资编码”上创建聚集不唯一索引

出库时间

Datetime

8

出库数量

Numeric

9

同学们既可以利用SQLServer企业管理器,通过图形化界面完成数据库创建工作,也可以直接在SQLServer查询分析器中运行以下语句:

--创建“进销存”数据库容器

CREATEDATABASE进销存

GO

USE进销存

GO

--创建物资台账表

CREATETABLE物资台账(

物资编码char(4)NOTNULL,

物资名称varchar(10)NOTNULL,

计量单位char(2)NOTNULL,

单价moneyNOTNULL,

期初库存numeric(18,0)NOTNULL

)ON[PRIMARY]

GO

--创建物资入库表

CREATETABLE物资入库(

物资编码char(4)NOTNULL,

入库时间datetimeNOTNULL,

入库数量numeric(18,0)NOTNULL

)ON[PRIMARY]

GO

--创建物资出库表

CREATETABLE物资出库(

物资编码char(4)NULL,

出库时间datetimeNOTNULL,

出库数量numeric(18,0)NOTNULL

)ON[PRIMARY]

GO

2根据业务逻辑书写SQL语句

由于拟开发的应用程序具有对数据表的增加、删除、修改和查询4项基本功能,因此请同学们首先在实验报告上写出相应的SQL语句,比如:

--向物资台账表中新增数据

INSERTINTO物资台账(物资编码,物资名称,计量单位,单价,期初库存)

VALUES('A001','英雄牌钢笔','只',2.5,50)

--修改物资台账表中现有数据

UPDATE物资台账SET单价=3,期初库存=60

WHERE物资编码='A001'

--删除物资台账表中现有数据

DELETEFROM物资台账

WHERE物资编码='A001'

--查询物资台账表中现有数据

SELECT*FROM物资台账

WHERE物资编码='A001'

--(其他略,请同学们自己完成)

3程序界面设计

(1)创建工程。新建一“标准EXE”工程,工程名为“进销存管理信息系统”。通过“工程-部件”或“工程-引用”菜单项添加ADO数据对象、工具条、MSFlexGrid等相关对象或控件,并按以下要求创建窗体,所有窗体的StartUpPosition属性均设置为:2?屏幕中心。

(2)创建主窗体(frmMain)。如图9.33所示,运用菜单技术、工具条技术创建窗体。窗体名frmMain,其他控件保留默认名称。

图9.33主窗体(frmMain)运行界面

(3)创建“物资台账管理”窗体(frm台账)。如图9.34所示,使用图片(PictureBox)、表格(MSFlexGrid)、命令按钮(CommandButton)控件,添加并设计“新增记录”窗体。窗体名为“frm台账”,所有控件保留默认名称。

图9.34“物资台账管理”窗体(frm台账)设计界面

(4)创建“物资台账数据增加”窗体(frmAdd台账)。如图9.35所示,使用标签、文本框、组合框、命令按钮控件,添加并创建“物资台账数据增加”窗体。窗体名为“frmAdd台账”。其中Text1为控件数组,Text1(4)控件的Enable属性为False。另外,在Combo1控件的List属性中输入一些常用的计量单位,比如“台”“个”“只”等,其他控件保留默认名称和设置。

图9.35“物资台账数据增加”窗体(frmAdd台账)设计界面

(5)创建“物资台账数据修改”窗体(frmUpdate台账)。如图9.36所示,使用标签、组合框、命令按钮控件,添加并创建“物资台账数据修改”窗体。窗体名为“frmUpdate修改”。其中Text1为控件数组,Text1(0)和Text1(4)(物资编码和期初金额)控件的Enable属性设置为False,其他控件保留默认名称和设置。

图9.36“物资台账数据修改”窗体(frmUpdate台账)运行界面

(6)创建“物资台账数据查询”窗体(frmQuery台账)。如图9.37所示,使用标签、组合框、命令按钮控件,添加并创建“物资台账数据查询”窗体。窗体名为“frmQuery台账”。其中Text1为控件数组,ComboBox控件的Style属性为2?DropdownList。

图9.37“物资台账数据查询”窗体(frmQuery台账)设计界面

(7)创建“物资台账报表”窗体(frmReport台账)。通过“工程-添加DataReport”菜单项添加报表窗体,命名为“frmReport台账”。按下列步骤完成设计工作(如图9.38所示):

图9.38“物资台账”报表窗体设计界面

①在报表标头、页标头部分添加rptLabel控件,并修改它们的Caption属性。

②在细节部分添加rptTextBox控件,并修改它们的DataField属性。

③添加rptLine控件。

(8)按上述(3)~(7)步的方法创建“物资入库管理”“物资出库管理”界面。

4代码设计

(1)添加Module模块,编写Main过程:

'声明全局对象变量ADOcn,用于创建与数据库的连接

PublicADOcnAsConnection

'声明全局变量strQuery1用于存储查询条件

PubicstrQuery1AsString

PublicSubMain()

'定义数据库连接字符串

DimstrSQLServerAsString

'用于连接SQLServer数据库,其中:

'Server为服务器名称

'UserID为登录账号,Password为登录口令

'Database为具体的数据库名

'请根据具体的实验环境修改这些参数

strSQLServer="Provider=SQLOLEDB;Server=bigdog;Us_

erID=sa;Password=sa;Database=进销存"

'连接SQLServer数据库

ADOcn.OpenstrSQLServer

'显示主窗体

frmMain.Show

EndSub

将Main过程设为工程启动对象。

(2)FrmMain窗体主要代码。该窗体的代码主要用于调度其他各窗体,起串接作用。

PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.But_ton)

SelectCaseButton

Case"物资台账管理"

frm台账.Show1

Case"物资入库管理"

frm入库.Show1

Case"物资出库管理"

frm出库.Show1

Case"退出系统"

UnloadMe'或者使用End命令

EndSelect

EndSub

(3)“frm台账”窗体代码。

“通用”部分声明一个Sub过程,用于在MSFlexGrid中显示记录。

PrivateSubDisplayGrid()

'声明变量

DimstrGridAsString

DimiAsInteger

DimADOrsAsNewRecordset

ADOrs.ActiveConnection=ADOcn

'打开物资台账

IfstrQuery1<>""Then

ADOrs.Open"Select*From物资台账Where"+strQuery1+"OrderBy物资编码"

Else

ADOrs.Open"Select*From物资台账orderby物资编码"

EndIf

'设置MSFlexGrid控件的表头

MSFlexGrid1.Clear

MSFlexGrid1.Rows=0

MSFlexGrid1.Cols=6

strGrid="物资编码"+vbTab+"物资名称"+vbTab+"计量单位"+vbTab

strGrid=strGrid+"单价"+vbTab+"期初库存"+vbTab+"期初金额"

i=0

'在第i行增加一列

MSFlexGrid1.AddItemstrGrid,i

i=i+1

'通过循环显示表中所有记录

DoWhileNotADOrs.EOF

strGrid=ADOrs("物资编码")+vbTab+ADOrs("物资名称")+vbTab+ADOrs("计量单位")

strGrid=strGrid+vbTab+Str(ADOrs("单价"))+vbTab+Str(ADOrs("期初库存"))

strGrid=strGrid+vbTab+Str(ADOrs("单价")*ADOrs("期初库存"))

MSFlexGrid1.AddItemstrGrid,i

ADOrs.MoveNext'指针下移一条记录

i=i+1

Loop

MSFlexGrid1.Rows=i+1

MSFlexGrid1.FixedRows=1

MSFlexGrid1.FixedCols=1

EndSub

PrivateSubForm_Load()

'设置查询条件变量的初值

strQuery1=""

'显示物资台账记录

DisplayGrid

EndSub

PrivateSubCommand1_Click()

'调用增加记录窗体

FrmAdd台账.Show1

DisplayGrid

EndSub

PrivateSubCommand2_Click()

'删除一条记录

DimstrSQLAsString

DimiAsInteger

'取当前光标所在行

i=MSFlexGrid1.Row

'取当前行的第0列单元值,即物资编码列

IfMSFlexGrid1.TextMatrix(i,0)=""Then

MsgBox"请先选择一个记录!",vbQuestion+vbOKOnly,"信息提示"

ExitSub

EndIf

strSQL="DeleteFrom物资台账"

strSQL=strSQL+"Where物资编码='"+MSFlexGrid1.TextMatr_

ix(i,0)+"'"

IfMsgBox("是否要删除?",vbQuestion+vbOKCancel,"信息提示")=vbOKThen

ADOcn.ExecutestrSQL'执行删除操作

EndIf

'重新显示

DisplayGrid

EndSub

PrivateSubCommand3_Click()

'调用修改记录窗体

DimiAsInteger

i=MSFlexGrid1.Row

IfMSFlexGrid1.TextMatrix(i,0)=""Then

MsgBox"请先选择一个记录!",vbQuestion+vbOKOnly,"信息提示"

ExitSub

EndIf

'对frmUpdate台账窗体赋值

WithfrmUpdate台账

.Text1(0)=MSFlexGrid1.TextMatrix(i,0)

.Text1(1)=MSFlexGrid1.TextMatrix(i,1)

.Combo1.Text=MSFlexGrid1.TextMatrix(i,2)

.Text1(2)=MSFlexGrid1.TextMatrix(i,3)

.Text1(3)=MSFlexGrid1.TextMatrix(i,4)

.Show1

EndWith

'修改完后重新显示

DisplayGrid

EndSub

PrivateSubCommand4_Click()

'调用设置查询条件窗体

FrmQuery查询.Show1

'设置完查询条件后重新显示记录

DisplayGrid

EndSub

PrivateSubCommand5_Click()

'调用打印报表窗体

DimADOrsAsNewRecordset

ADOrs.ActiveConnection=ADOcn

IfstrQuery1<>""Then

ADOrs.Open"Select*From物资台账Where"+strQuery1+"OrderBy物资编码"

Else

ADOrs.Open"Select*From物资台账OrderBy物资编码"

EndIf

'设置报表窗体的DataSource和DataMember属性

SetfrmReport台账.DataSource=ADOrs.DataSource

FrmReport台账.DataMember=ADOrs.DataMember

FrmReport台账.Show1

EndSub

PrivateSubCommand6_Click()

'退出本窗体

UnloadMe

EndSub

(4)“frmAdd台账”窗体代码。

PrivateSubCommand1_Click()

DimstrSQLAsString

DimADOrsAsNewRecordset

SetADOrs.ActiveConnection=ADOcn

'首先查询主关键字“物资编码”是否重复

ADOrs.Open"Select物资编码From物资台账Where物资编码='"+Text1(0)+"'"

IfNotADOrs.EOFThen

MsgBox"物资编码已存在,请重新输入",vbQuestion+vbOKOnly,"信息提示"

ExitSub'退出本过程

EndIf

'增加一条新记录

strSQL="InsertInto物资台账(物资编码,物资名称,计量单位,单价,期初库存)"

strSQL=strSQL+"Values('"+Text1(0)+"','"+Text1(1)+"','"+Combo1.Text+"',"

strSQL=strSQL+Text1(2)+","+Text1(3)+")"

ADOcn.ExecutestrSQL

MsgBox"增加成功,请继续!",vbQuestion+vbOKOnly,"信息提示"

EndSub

PrivateSubCommand2_Click()

'退出本窗体

UnloadMe

EndSub

PrivateSubForm_Load()

'赋初值

Text1(0)=""

Text1(1)=""

Text1(2)="0"

Text1(3)="0"

Combo1.ListIndex=0

EndSub

PrivateSubText1_Change(IndexAsInteger)

'当“单价”和“期初库存”值发生变化时,自动计算“期初金额”

IfIndex=2OrIndex=3Then

Text1(4)=Trim(Str(Val(Text1(2))*Val(Text1(3))))

EndIf

EndSub

PrivateSubText1_KeyPress(IndexAsInteger,KeyAsciiAsInteger)

'将用户输入的回车键转换为Tab键,使焦点自动下移

IfKeyAscii=13Then

SendKeys"{Tab}"

EndIf

'对于“单价”和“期初库存”文本框只允许输入数字、小数点和退格键

IfIndex=2OrIndex=3Then

IfNot((Chr(KeyAscii)>="0"AndChr(KeyAscii)<="9")_OrChr(KeyAscii)="."OrKeyAscii=8)Then

KeyAscii=0

EndIf

EndIf

EndSub

(5)“frmUpdate台账”窗体代码。主要代码是:

PrivateSubCommand1_Click()

DimstrSQLAsString

strSQL="Update物资台账Set物资名称='"+Text1(1)+"',"

strSQL=strSQL+"计量单位='"+Combo1.Text+"',"

strSQL=strSQL+"单价="+Text1(2)+","

strSQL=strSQL+"期初库存="+Text1(3)

strSQL=strSQL+"Where物资编码='"+Text1(0)+"'"

ADOcn.ExecutestrSQL

UnloadMe

EndSub

(6)“frmQuery台账”窗体代码。

PrivateSubCommand1_Click()

'拼写查询条件字符串

Dimstr1,str2AsString

str1=""

str2=""

IfText1(0)<>""Then

str1="物资编码"+Combo1.Text+"'"+Text1(0)+"'"

EndIf

IfText1(1)<>""Then

str1="物资名称"+Combo2.Text+"'"+Text1(1)+"'"

EndIf

Ifstr1=""Andstr2=""Then

strQuery1=""

ElseIfstr1=""Andstr2<>""Then

strQuery1=str2

ElseIfstr1<>""Andstr2=""Then

strQuery1=str1

Else

strQuery1=str1+"And"+str2

EndIf

UnloadMe

EndSub

PrivateSubCommand2_Click()

'退出本窗体

UnloadMe

EndSub

PrivateSubForm_Load()

'对窗体对象赋初值

Combo1.Clear

Combo1.AddItem"="

Combo1.AddItem">="

Combo1.AddItem">"

Combo1.AddItem"<"

Combo1.AddItem"<="

Combo1.AddItem"<>"

Combo2.Clear

Combo2.AddItem"="

Combo2.AddItem">="

Combo2.AddItem">"

Combo2.AddItem"<"

Combo2.AddItem"<="

Combo2.AddItem"<>"

Text1(0).Text=""

Text1(1).Text=""

EndSub


网友评论

在线客服
微信号:HAA600
QQ:12345678
在线时间
9:00 ~ 23:00