vb6.0开发实例
vb6.0开发实例
Visual Basic 6.0(VB6.0)是一款经典的集成开发环境(IDE),用于Windows平台的软件开发。
本文将通过一个简单的实例来演示如何使用VB6.0创建一个学生成绩管理系统,旨在帮助初学者了解VB6.0的基本开发过程。
一、新建项目:打开VB6.0,选择“标准EXE”模板,创建一个新项目。
接下来,设计一个简单的窗体,包括学生姓名、学号、数学成绩和英语成绩等基本信息的输入框。
二、设计数据库:在VB6.0中,我们可以使用Access数据库作为后台数据库。
创建一个名为"StudentDB.mdb"的Access数据库,其中包含一个名为"StudentTable"的表,用于存储学生信息(姓名、学号、数学成绩、英语成绩)。
三、连接数据库:在VB6.0的窗体上添加ADO控件,用于与数据库进行交互。
通过ADO控件建立与"StudentDB.mdb"数据库的连接,并在代码中编写SQL语句,实现数据的插入、更新、删除和查询等操作。
' 连接数据库
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Dat a Source="& App.Path & "\StudentDB.mdb;Persist Security Info=Fal se"
Adodc1.Refresh
End Sub
四、添加按钮和事件处理:在窗体上添加按钮,如“添加记录”、“更新记录”、“删除记录”、“查询记录”等。
通过按钮的Click事件处理程序,调用相应的SQL语句实现对数据库的操作。
' 添加记录
Private Sub cmdAdd_Click()
Adodc1.Recordset.AddNew
Adodc1.Recordset("Name") = txtName.Text
Adodc1.Recordset("StudentID") = txtStudentID.Text
Adodc1.Recordset("MathScore") = txtMathScore.Text
Adodc1.Recordset("EnglishScore") = txtEnglishScore.Text
Adodc1.Recordset.Update
End Sub
' 查询记录
Private Sub cmdSearch_Click()
Adodc1.RecordSource = "SELECT * FROM StudentTable WHERE StudentID = '"& txtSearchStudentID.Text & "'"
Adodc1.Refresh
End Sub
' 更新记录
Private Sub cmdUpdate_Click()
Adodc1.Recordset("MathScore") = txtMathScore.Text
Adodc1.Recordset("EnglishScore") = txtEnglishScore.Text
Adodc1.Recordset.Update
End Sub
' 删除记录
Private Sub cmdDelete_Click()
Adodc1.Recordset.Delete
Adodc1.Recordset.Update
End Sub
五、界面美化:通过VB6.0提供的控件属性设置,对窗体和控件进行美化,使其更符合用户界面设计的要求。
调整字体、颜色、大小等属性,提高用户体验。
六、编译和运行:完成代码编写后,进行编译并运行程序。
通过界面上的按钮,可以轻松实现对学生信息的增、删、改、查等操作,同时更新到数据库中。
这个简单的学生成绩管理系统实例展示了如何使用VB6.0进行Windows应用程序开发,包括界面设计、数据库连接、SQL语句的编写和事件处理等基本操作。
通过不断实践和学习,你将能够掌握更多
高级的VB6.0开发技巧,构建更为复杂和实用的应用程序。
VB6实例
VB6如何在托盘中写入应用程序图标1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False2、菜单:工程--添加模块按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas3、在Module1中写下如下代码:4、在Form1的Load事件中写下如下代码:5、在Form1的QueryUnload事件中写入如下代码:6、在Form1的MouseMove事件中写下如下代码:7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。
单击此图标,Form1就自动弹出来了。
将个性化进行到底VB中打造个性进度条2005-03-26 13:28作者:伍学慧出处:天极网责任编辑:方舟控件下载简介VB的第三方控件ccrpProgressBar是一个进度条的控件,可以有多种形态供选择。
比起VB 中自带的进度条控件ProgressBar更有个性。
使用实例:用ccrpProgressBar制作各式各样的进度条在VB中自带了一个进度条控件ProgressBar,但功能简单。
我向大家推荐一个VB的第三方进度条控件ccrpProgressBar。
该控件功能强大,有多种形态供选择,而且只需要简单的设置控件的属性就能实现,非常的好用。
下面通过一个例子向大家介绍该控件的用法。
(1)加载控件启动Visual Basic 6.0,创建一个工程并保存为"工程1.vbp",同时产生一个名为"Form1"的窗口。
在工具箱的空白处单击鼠标右键,从弹出的快捷菜单中启动"部件"窗口,如图1所示。
图1点击"浏览"按钮,从存放ccrpProgressBar控件的文件夹中找到ccrpprg.ocx文件。
点击"应用"后ccrpProgressBar控件就添加到工具箱中。
如图2。
图2(2)设计窗体和控件向窗体中添加9个ccrpProgressBar控件和一个Timer控件。
基于VB6.0的上位机与PLC实时通信技术
基于VB6.0的上位机与PLC实时通信技术一、引言随着自动化技术的不断发展,PLC(可编程逻辑控制器)已经成为自动化领域中不可或缺的设备。
PLC通常用于控制工业生产线上的设备和机器,而上位机则是用来监控和管理PLC系统的设备。
众所周知,实时通信是保证PLC系统正常运行的重要因素之一。
在这篇文章中,我们将重点介绍基于VB6.0的上位机与PLC实时通信技术。
二、VB6.0简介VB6.0是微软公司于1998年发布的一款集成开发环境(IDE),它是一种编程语言,被广泛用于开发Windows平台下的应用程序。
VB6.0具有简单易学、功能丰富、开发效率高等特点,因此在工业领域得到了广泛应用。
考虑到VB6.0的这些优势,我们可以利用它来开发上位机程序,并实现与PLC的实时通信。
三、PLC实时通信技术1. 串口通信PLC通常通过串口与上位机进行通信。
在VB6.0中,我们可以利用MSCOMM控件来实现串口通信。
通过在VB6.0的界面中添加MSCOMM控件,并设置相应的串口参数(如波特率、数据位、校验位、停止位等),就可以实现与PLC的串口通信。
2. Modbus通信Modbus是一种通信协议,被广泛用于工业控制领域。
通过Modbus协议,我们可以实现上位机与PLC之间的实时通信。
在VB6.0中,我们可以使用第三方的Modbus通信库来实现Modbus通信,例如Modbus ActiveX控件等。
通过这些控件,我们可以轻松地实现Modbus通信,从而实现上位机与PLC的实时数据交换。
3. Socket通信1. 配置MSCOMM控件接下来,我们需要编写VB6.0代码,实现与PLC的串口通信。
您可以编写相应的串口通信代码,例如打开串口、发送数据、接收数据等。
示例代码如下:Private Sub Form_Load()mPort = 1 ' 串口号MSComm1.Settings = "9600,n,8,1" ' 波特率、校验位、数据位、停止位MSComm1.PortOpen = True ' 打开串口End SubPrivate Sub Command1_Click()MSComm1.Output = "010*********FF01" ' 发送数据End Sub3. 运行程序并测试您可以运行程序,并测试与PLC的串口通信是否正常。
中文VisualBasic6.0案例教程教学设计
中文VisualBasic6.0案例教程教学设计1. 引言VisualBasic6.0是微软公司发布的一款基于COM组件技术的编程语言,具有易学易用的特点,因此被广泛使用。
为了更好的进行VisualBasic6.0的教学,本文将介绍一种以案例为主的教学设计。
2. 案例选择选择好案例非常重要,既要贴近实际,又要具有代表性,能够涵盖较为全面的知识点和技能。
以下是本人整理的常用案例:2.1 学生信息管理系统该系统是一个简单的CRUD(Create、Retrieve、Update、Delete)系统,涉及到VisualBasic6.0中的ADO对象、SQL语句、控件的使用等。
2.2 游戏用户管理系统该系统是一个游戏用户管理系统,涉及到VisualBasic6.0中的用户界面设计、文件读写、Socket编程等。
2.3 图像处理软件该软件是一个图像处理软件,涉及到VisualBasic6.0中的高级控件、COM组件、数据结构等。
从以上三个案例中,我们可以看出,选择好的案例不仅仅能够帮助学生掌握VisualBasic6.0的知识和技能,还能够让学生了解到不同类型的应用场景,增加实践经验。
3. 教学设计基于以上案例,我们可以进行如下的教学设计:3.1 前期准备在进行案例教学之前,需要做好后期发布的准备工作。
包括编写教学视频、制定教学进度、策划案例实践等。
3.2 案例引入在正式进行案例教学之前,需要进行案例引入,包括案例的背景、功能需求等,这样可以增加学生的兴趣和理解。
3.3 知识讲解在案例讲解过程中,需要结合案例所使用的知识点,进行相关讲解。
例如,在学生信息管理系统中,需要讲解VisualBasic6.0中的ADO对象、SQL语句等。
3.4 代码实现在讲解完知识点之后,需要进行代码的实现,包括具体的代码编写和实验操作。
如果学生遇到问题,可以进行解答和指导。
3.5 案例实践在完成代码的实现之后,需要进行案例实践。
VB2012基于VB6.0开发交互式CAD系统
内容提要在交互式CAD系统中,不仅可以实现用鼠标绘图,还可以选择图元,并对选中的图元进行缩放、缩小、等操作。
在众多的交互式CAD开发工具中,VisualBasic是使用最简单、应用最广泛、使用者最多的一种开发工具,Visual Basic语言具备一定的绘图功能。
本设计的主要内容是在学习Visual Basic 语言和交互式CAD技术的基础上,运用Visual Basic语言来开发交互式CAD系统。
本系统具有交互绘图功能。
能实现鼠标绘图,能对图形进行各种形式的缩放操作。
本文中的缩放主要包括图形的放大、缩小和局部放大与全屏显示。
关键词:Visual Basic交互式CAD 缩放一、绪言 (4)二、开发基础 (5)(一) 交互式CAD简介 (5)(二) Visual Basic的简介 (5)三、系统分析 (6)(一) 可行性研究 (6)(二) 需求分析 (6)四、系统总体设计 (8)五、详细设计 (8)(一)界面制作 (8)(二)绘图 (9)(三)缩放 (11)六、用户手册 (16)七、结束语 (17)八、致谢 (18)九、参考文献 (19)图3-1系统的总体设计图3-2图像选项图3-3主界面图3-4窗口模板(二)绘图代码设计图3-5 “绘图”菜单图3-6 “缩放”菜单图3-7原始图形图3-8全局放大和全局缩小结果AB B F`C D C G ` D H `图3-9局部放大的原理图示图3-10用矩形窗口选择所要放大的局部范围图3-11 局部放大的效果(1)全屏显示全屏显示是要在绘图环境中刚好显示所有图元。
实际上,它是局部放大的一个特例。
就如图(3-12)所示,把矩形EFGH 中的图形元素正好全部显示在ABCD 矩形区域中。
所有图元的包围矩形可以通过比较所有图元各自的包围矩形得到。
所有图元包围矩形对角定点的最小横坐标和最小纵坐标可以确定一个点,最大横坐标和最大纵坐标可以确定另一个点,由两点所确定的矩形就是要求的包围矩图3-13原图 图3-14 全屏显示的结果六、用户手册D B H ` F `运行系统,会出现一个界面就如下面所示的图---用户界面。
vb6.0高清教程系列 第02章 VB简单的程序设计(共九章)
5. Enabled属性(逻辑值) 决定控件是否可操作。 True :允许用户进行操作,并对操作出响应(缺 省值) 。 False:呈暗淡色,禁止用户进行操作。 6. Visible属性(逻辑值) 决定控件是否可见 True :运行时控件可见(缺省值) 。 False:运行时控件隐藏,用户看不到,但控件本 身是存在的。
例2.4 使用Move方法移动一个窗体。双击窗体,窗体移动 并定位在屏幕的左上角,同时窗体的长宽也缩小一倍。 为了实现这一功能,可以在窗体Forml的“代码”窗口中输 入下列代码:
四、方 法(Method)
在对象上可操作的过程,是VB系统提供的一种特殊的 过程和函数——方法。方法是面向对象的,所以对象的方法 调用一般要指明对象。 对象方法 调用形式:
[ 对象.]方法[ 参数列表 ]
如省略对象,表示在当对象,一般指窗体。 例如: Form1.print " VB程序设计"
五、VB应用程序的工作方式
工具箱的各种控件并不是对象,而是代表了各个不同的 类。通过类的实例化,可以得到真正的对象。当在窗体上画 一个控件时,就将类转换为对象,即创建了一个控件对象, 也简称为控件。
VB中的类与对象
3、对 象的建立和命名
(1)对象的建立 方法一: 单击工具箱控件对象 左键拖拉到所需要的大小后释放。 方法二: 双击工具箱控件对象,则立即在窗体出现一 个默认大小的对象框。 (2)编辑对象 先选中对象(单击对象), 放大、缩小 删除对象 复制对象 在窗体上按住
7.BackColor属性和ForeColor属性 BackColor属性用于返回或设置对象的背景颜色, ForeColor属性用于返回或设置在对象里显示图片和 文本的前景颜色。它们是十六进制长整型数据 在程序代码中可用Windows 运行环境的红-绿-蓝 (RGB) 颜色方案,使用调色板或在代码中使用 RGB 或 QBColor 函数指定标准RGB颜色。 例如,将窗体Form1的背景色设置为红色,则可使用下 面三种情况: Form1.BackColor = RGB(255, 0, 0) Form1.BackColor = &HFF& Form1.BackColor = vbRed
vb6.0实例教程
浅谈用VB6.0 编写木马程序现在网络上流行的木马软件基本都是客户机/服务器模式也就是所谓的C/S 结构,目前也有一些开始向B/S 结构转变,在这里暂且不对B/S 结构进行详谈,本文主要介绍C/S 结构其原理就是在本机直接启动运行的程序拥有与使用者相同的权限。
因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。
下面来谈谈如何用VB 来实现它。
首先使用VB 建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。
在Client 工程中建立一个窗体,加载WinSock 控件,称为tcpClient,协议选择TCP,再加入两个文本框,用以输入服务器的IP 地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:Private Sub cmdConnect_Click()If Len(Text1.Text) = 0 And Len(Text2.Text) = 0 ThenMsgBox ("请输入主机名或主机IP 地址。
")Exit SubElseIf Len(Text1.Text) > 0 ThentcpClient.RemoteHost = Text1.TextElsetcpClient.RemoteHost = Text2.TextEnd IfEnd IftcpClient.ConnectTimer1.Enabled = TrueEnd Sub连接建立之后就可以使用DataArrival 事件处理所收到的数据了。
在服务器端systry 工程也建立一个窗体,加载WinSock 控件,称为tcpServer,协议选择TCP,在Form_Load 事件中加入如下代码:Private Sub Form_Load()tcpServer.LocalPort = 1999tcpServer.ListenEnd Sub准备应答客户端程序的请求连接,使用ConnectionRequest 事件来应答户端程序的请求,代码如下:Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)If tcpServer.State < > sckClosed ThentcpServer.Close…检查控件的State 属性是否为关闭的。
VB编程6.0 过程
形式ห้องสมุดไป่ตู้数
Fact = s
End Function
' 给函数过程名赋值
茂
名
院
学
Sub Command1_Click()
N = Val(Text1.Text) s=1
程 序 设 计 —— For i = 1 To N S=Fact(N) s=s*i Next Label1.Caption = s VB
例1:
VB
s
n
程 序 s=0 设 计 N=val(inputbox(―N=―)) —— 过 程
如果是S=1!+2!+3!+ ┅ +n!
For i=1 to N
s=s+sqr(i)
Next Print s
Print s
茂
名
院
学
例2: 排列组合:从N个数中取M个数有多少种组合?
M 分析: 公式 C N
VB 程 序 设 计 ——
Call SubTest( 10 , 1+2 )
Sub SubTest( n As Integer,Sum As Single) 字ByVal来实现。
过 程 (2) 实参是变量时,要实现按值传递需要在形参之前通过关键
茂
名
院
学
示例: Sub过程的调用参数传递
Sub Command1_Click() 实参 …… Call Fact ( x , y ) ‗Fact x , y 程 …… 序 End Sub 设 计 内存: 过 程
End Sub
Private Sub Command1_Click()
VB 程 序 设 计 —— 过 程
VB6.0图文实例教程[汇编]
教程辅导This is my personal work summary and plan, thank you for your attention and support!来历网络·汇编收拾VB教程:序文-不再游戏咱们需求什么咱们需求什么?当咱们在一个精彩的游戏国际中游历了一番之后,或是惊叹于某一东西软件的细巧精美之余,多少总会发生少许编程的激动。
编程吗,在从前假如你对电脑仍是一个外行人,那真实是一件可望而不行及的作业。
假如运用依据DOS下的编程言语,比方C、Qbasic、Pascal等等,真不知何年何月才干有所成果。
编程是需求天分的,你有必要在大脑中对整个程序有一个明晰的概括,一个高效的流程,这并不是每个人都能做到的,你有必要思之慎之,这也使编程变成一件最单调无味的作业。
但在第四代核算机言语(可视化编程)呈现后,能够切当的说它开发了人们的更多天分,并不局限于那些脑筋反常明晰的人,每一个人都能够发现自己也能够编出一些早年不敢问津的程序,想象力的充分发挥才是第四代言语的精粹。
Visual Basic(以下简称VB)能够说是可视化言语的前驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它现已阅历了五个版别,而且现在微软正在严重的进行着VB6.0的研发、测验,这么高的更新率,不外乎阐明两个问题:用户对VB的热心,微软对VB的重视。
不行否认微软对商场的猜测才干是极为高超的,而它强壮的技能、财力支撑也使它在许多从前未进入的范畴,在不长的时刻内有成为最有力的竞争对手,如IE之于阅读器范畴,《帝国年代》之于游戏都是最好的比方。
关于VB现在也有一个很强的竞争对手――Delphi,有人把它称作VB杀手,这显然有过火之处,VB的确有它的缺乏之处,但Delphi又何曾不是呢,而且以微软对VB的倾慕,VB的功用必定会越来越强壮。
VB的诞生VB的呈现能够说是Microsoft Windows的日渐老练的必定产品。
看实例学VB6.0
文本框控件(TextBox)是VB中最常用的控件。
它是显示和输入文本的容器,相当于一个文字编辑器,提供了所有基本的文字处理功能,例如文本的编辑等。
在下面这个小程序中,我们能看到文本框控件(TextBox)的最基本的属性。
为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码:(源程序下载)这个例子的两个窗体界面如下:主窗体(FormTxtBox)窗体(FormBack)我们首先新建一个标准的EXE工程。
添加两个窗体,并把TextBox、Button、Label在属性窗口中将TextPassWord的PassWordChar属性设为*;TextResume的Multiline属性设为Ture,ScrollBars属性设为2 -Vertical;TextAll文本框的Multiline属性设为为Ture, ScrollBars属性设为2 -Vertical,Appearance属性设为为0 - Flat。
下一步我们为FormTxtBox窗体中“确定”(CmdOK)和“清除”(CmdClear)按钮的Click事件中添加相应的程序。
其中:TextID.Text = "" 是把会员编号文本框中的内容清空,其它语句与此类似。
FormBack.TextAll.Text = LblID.Caption & " " & TextID.Text _ & vbNewLine &该语句设置FormBack窗体中TextAll文本框的文本。
vbNewLine是换行显示标志。
“ _”是续行标志,当语句一行写不下时使用此标志,但要注意:前面要加空格。
代码写好之后,我们就可以保存工程,然后按“Ctrl+F5”键,测试检验一下我们的程序了。
看实例学VB6.0--简单的列表框ListBox的例子--列表框(ListBox)控件表示一个选项清单,用户可能用鼠标选择其中一个或者几个选项。
[doc]基于VB6.0编程实现SQL数据任意条件查询
基于VB6.0编程实现SQL数据任意条件查询基孑V?O.摘要本文介绍了用VB6.0中标准控件与SQL语言中的SELECT查询语句实现数据任意条件查询,数据简单的统计及通过Excel报表输出等内容.关键词VB6.0,控件,SQL一,前言在Windows操作系统中,VisualBasic是简单,常用的数据库开发平台,通过它可以在很短的时间内开发出高效,美观的数据库应用程序,这正是目前许多用户仍然采用Visw,dBa—sic作为开发大,中型数据库应用系统的原因.SQL(StructureQueryLanguage)是一个标准的结构化查询语言.功能强,效率高,简单易学易维护,是数据库和数据库系统人机交互的接口,SQL现已成为数据库操作语言的通用语言.在数据库的实际应用中,SELECT语句足SQL的核心,使用非常频繁,利用它可以实现不同要求的数据查询,并把查询结果以表格的形式返回.为了实现不同要求的数据查询,用户首先必须根据实际要求的动态条件,自动生成SQL查询语句(SELECT语句).一般情况下,系统设计者在定义数据表结构时,字段名往往使用英文字符名,而用户在组织条件时,如果根据英文字段名进行组织,叉很不直观,明白,丁是用户希望在组织条件时,用英文字段名相对应的中文含义名进行条件组织.而系统在执行时自动转化为标准的,系统能够识别的SELECT语句.二,实例在开发人力资源管理系统中,用户要求员工基本信息表中任意一个字段均能任意选择动忿条件输出,也能利用这些字段动态组织多重条件.同时,输出的数据信息能够进行简单的计数,排序,数据导入Excel后,能够打印出符合用户要求的各种格式的报表.于是设计了+个”基于VB6.0编程实现SQL数据任意条件查询”的查询生成器,提高了用户检索数据的灵活性,使用户组织条件变得简单,直观,明白.例如:模糊查询姓”李”的,性别为”男”的员工的”姓名,身份证号,性别,出生日期,民族,籍贯,政治面貌,毕业学校,学历,进厂时间”信息,按”身份证号”升序排序.运行程序,效果如下图所示.查询界面三,实现1.定义数据表结构(如表1所示)表1数据表结构序号字段代码字段属性中文说明员工基本信息表Employees1Dep-ldInt部门序号2Dep-CodeV丑Ich8r10部门代码3I~p-NtimeV8h8r40部门名称4Emp-IdInt虽工序号5Emp-CodeV archar12员工代码/I作证号6Emp-CardV archar18身份证号,社会保障号7Emp-NameVamhar12姓名8Emp-1V amhar12曾用名9Emp-2V archar12档案电脑号10StateTinylnt员工状态…………………………………………………………_实用第一智慧密集………………………………………~………………2.界面没计(1)新建一个标准工程.名称为【Projectl】.在工程中创建一个窗体,名称为【FrmCreatSql】(2)单击【工程】菜单F的【部件】选取项,在弹出的列表中选取中【MicrosoftADODataControl6.0(sp4)】选项和【MicrosoftDataGridControl6.0(sp5)】选项,然后单击【确定】按键,Adodc控件和DataGrid控件添加到工具箱中. (3)在【FrmCreatSql】窗体中放置2个Adodc控件,1个DataGrid控件,2个l,istBox控件,5个ComboBox控件,3个TextBox控件,2个CheckBox控件,9个CommandButton控件等.主要控件对象的属性如表2所爪.(4)添加程序代码(注:本文列出了几个关键的程序段,其它内容见源程序)1)窗体初始化主要完成窗体上各种控件的初始化工作,置初值.PrivateSubFOrm_Load《)Adodc1.RecordsetMoveFirstFori0ToAdodc1.Recordset.RecordCount一1 ListSourceAddltemAdodcRecordset.Fields(2)…用中文名填充【可以】选择的字段列表.Adodc1.IRecordset.MoveNext-NextIlForil_0ToListSource.IListCount一1TmpChiName;Trim(ListSourceList(㈨CallMyEngChi.GetlnfOByChiName(TmpChiName) TmpEngName=MyEngChiEngNameCondition1;Condition1+TmpEngName+AS4- TmpChiName+,汉化列表浏览宇段名.NextiLen=Len《Condition1)Adodc2.RecordSourceSELECT+Left《Condition1.iLen一1)+FROMIEmployeesWHEREState=1 TxtSQLSELECT4-Left《Condition1.iTmp一1)+ FROMEmployeesWHEREState1Adodc2.RefreshLbIfleccount=Trim{Str(Adodc2.Recordset.RecordCount)) EndSub2)添加条件命令主要根据用户要求动态地组织数据输出条件.根据字段的数据类型,利用SELECTCASE程序控制语句分别进行c(字符型),N(数值型),D(日期型)三种类型数据处理,并且将字段名由中文名转化为英文名. PrivateSubCmd_AddCond_Click《)TmpChiType=Trim《CmbCondi.Text)1.mpCmbCompTrIm{CmbComp.Text)TmpTxtV alueTrim《TxtV alue.Text)TmpCmbLogic=Trim《CmbLogic.Text)ffTmpChiType一OrTmpCmbCOmp OrTmpCmbLogicThenMsgBox【组织条件】时选择项中有I空值】- ⑩与表2主要控件的属性列裹对象属性值功能Connection—DSN=SQL-TestString(ODBC名称)ReconiSource蜘U£(*FROM AdodclEagChiFields提供数据绑定U8erNamePo~swozdConnection.DSN=SQL-TestString(ODBC名称)RecordSourceSEU£(*FROMAdodc2Employees提供数据绑定U盯N8n1ePasswordDataGridlDataSoum~Adodc2提供数据浏览Hst1DataSoumeAdodel显示【可以】选择的宇段List2Data.~uree最示【已经】选择的字段显示宇段的名称与数据Combo1名称CmbCondi类型Combo2名称CmbC0ⅡIp显示关系运算符Combo3名称CmbLosic显示逻辑运算符Comlm4名称Cmb-Order显示排序宇段名Combo5名称Cmb-Count显示计数字段名Text1名称tv-1输人条件Text2名称~tSQL显示sQL查询语句Text3名称TxtRepmf/~itle输入报表标题名称ChecklCheck1确定升序或降序Caption升/降名称Check1Check2确定是否计数Caption计数名称CmdSelectCommand1一次选取所有的宇段名Caption一>)名称CmdSdectCoamaaad2一次选取1个宇段名Caption一名称CmdSelectCommand3一次退选所有的字段名Caption<一名称CmdSdectComnnmd4一次退选1个宇段名Caption《《一名称Cmd—AddCondi Command5添加条件Caption添加条件名称CmdGondiNull Command6清空条件Caption清空条件名称Cmd-SearchCommand7执行查询Caption查询名称Cmd—ExcdCommand8数据导人Excel中CaptionExcel名称Cmd-BackCommand9退出程序Caption返回T×tSQL=~ExitSubElseTmpChiType=Trim(CmbCondi.Text) CallMyEngChi.GetlnfoByChiType(TmpChiType) TmpEngName=MyEngChi.EngNamecType;Right(TmpChiType,1)MsgBox【中文名:+TmpChimype+】【英文名:+ TmpEngName+】l类型:+cmype+】SelectCasecTypeCaseC第1种情况:字符型数据. cCmbComp=Trim(CmbComp.Text) SelectCasecCmbCompCase‟LikeIfTrim(TxtValue.Text)=…ThenCondition2=Condition2++Trim (TmpEngName)++Trim(CmbComp.Text)+%+ +%+Trim(CmbLogicText)ElseCondition2=Condition2++TI.im (TmpEngName)++Trim《CmbComp.Text)+%+ Trim(TxtV alue.Text)+%+Trim《CmbLogic.Text) EndIfCaseLeftIfTrim(TxtValue.Text)=~ThenCondition2=Condition2++Trim {TmpEngName)++Like+…++%+Trim(CmbLo~lic.Text)ElseCondition2=Condition2++Trim (TmDEngName)++Like4-+Trim《TxtV alue.Text)+%+Trim《CmbLogic.Text) EndIfCaseRightlfTrim《T×tV alue.Text)=~Then Condition2=Condition24-+Tnm (TmpEngName)+4-Like4-%4-++Trim(CmbLogic.Text)ElseCondition2=Condition24-+TI.im (TmpEngName)+4-Like4-%+TrIm(TxtV alue.TextJ+…+Trim(CmbLogic.TextJ EndIfCaseElseIfTrim(TxtVaIue.Text)=~ThenCondltbn2=Condition24-4-Trim (TmpEngName)++Tr|rn(CmbComp.Text)++.+…+Tr}rn(CmbLogicText)ElseCondition2;Condition24-+Trim (TmpEngName)++TrIm(CmbComp.Text)+…+ Trim(TxtV alue.Text)+…+Trim(CmbLogic.Text) EndIfEndSelectiLenLenfCondition2)MsgBox右边字符l4-Right(Condition2,2l4-r IfRig.)=结束.ht(Condition22ThenCondRion2#Left《Condition2,iLen一2) Cmd..AddCondi.Enabled#FaIse使添加条件按钮不可用.T)(tSOLCondition2.E)citSubEI$eTxtSQL=Condition2EndIfCaseN第2种情况:数值型数据,-. Condition2=Condition24-+Trim(TmpEngName)+4-Trim《CmbComp.Text)4- Trim《Str(V al(TxtV alue.Text)))4--+Trim (CmbLogic.Text)..iLen#Len(Condition2)0.MsgBox右边字符r4-Right(Condition2,2).+r IfRight(Conditlon2,2)结束T.hen... Condition2Left《Condition2iLen一-2)≯Cmd_AddCondi.En8bIedFalse使添加条件按钮不可用.0TxtSOL=Condition2kIExitSub-Else一0TxtSQL=Condition2..EndIf.C8seD第3种情况日期型数据.●一IfTrim《_TxtV alueText)#Then._0Condition2Condition24-+.Trim (TinIpEngName)++TrimI{CmbComp.Text)+j+_ +~+Trim(CmbLogicText)_EIse.Condition2=Condition24-TrimfT忡EngName)4-+Trim(CmbComp,Text)+?Trjm(TxtV alue.Text)4-…4-Trim(CmbLogic.Text)i√“EndIf|cCmbCompTrim《CmbComp.Text).SelectCasecCmbComP.CaseLikeIfTrim(TxtValue.TemJ~Then.Condition2=Condilcion24-+Trim (TinPEngName)4-~4-Trim(CmbComp.Text)+~%十+%4-TrimICmbLogic.Text)ElseCondition2=Condition24-+Tr.m(Tin1pEngName)4-.+Trim(CmbComP.Text)+%o一串Trim(TxtV alue.Text)+%+Trim(CmbLogic,Text)一. EndIfCaseLeft”IfTrim(TxtValue.Text)=~ThenC~ondition2;Condition24-4-Trim ………………………………………………………实用第一智慧密集(TmpEngName)4-+Like4-…++%+T—m(CmbLogic,Text)ElseCondition2=Condition2++Trim (TmpEngName)++Like+…+Trim(TxtV alue,Text)+%4-Trim(CmbLogic.Text) EndIfCaseRightIfTrim(TxtValue.Text);~Then Condition2zCondition2++Trim (TmpEngName)++Like+%++…+Trim(CmbLogicTeXt)ElseCondition2Condition2++Tr{m (TmpEngName)++Like+%+Trim(TxtV al ue,Text)+…+Trim(CmbLogic.Text) EndlfCaseElseIfTrim(TxtValue.Text)=~Then Condition2=Condition2++Trim(TmpEngName)++Trim{CmbComp.Text)+…+ +…+Trim(CmbLogic.Text)EI$eCondition2=Condition2++Trim (TmpEngName)++Trim(CmbComp.Text)+…+ Trjm(TxtV alue.Te xt)+…+Trim(CmbLogic.Text) EndIfEndSelectiLenLen(Condition2)MsgBox右边字符【+R_ght(conditi0n2,2)+】IfRight(Condition2,2);结束ThenCondition2#Left(Condition2,iLen一2)Cmd_AddCondi.EnablectI=False使添加条件按奄丑不可用. TxtSQLCondition2ExitSubElseT×tsQL=Condition2EndIfEndSelectEndlfEndSub3.模块设计模块用来管理全局常量,全局变量和用户自定义函数等.本例中分别添加了Const模块,用来管理工程中的全局常量; DbFunc模块.用来管理工程中与数据库操作相关的声明,变量和函数;GeneralFunc模块,用来管理工程中一些通用的自定义函数;V ariable模块,用来管理工程中的全局变_量;lni. Manager模块,用来管理从INI文件中读取数据的声明和函数.下面将DbFunc模块主要源程序说明如下: vateSubConnect()连接数据库⑩与DimTmpStatAsLongSQLConnect()函数的返回值如果连接标记为真,则返回否则会出错IfIsConnect=TrueThenExitSubEndIf分配环境甸柄,保存在变量Henv中IfSQLAIIocEnv(Henv)ThenMsgBox无法初始化ODBC环境I.ODBCAPI执行错误CallMsgBox(无法初始化ODBC环境l.vbExclamation.提示…)EndEndIf根据环境句柄分配连接旬柄,保存在变量Hdbc中IfSQLAIIocConnect(Henv.Hdbc)ThenMsgBox无法连接ODBCf,,ODBCAPI执行错误CallMsgBox(无法连接ODBCI,vbExclamation,提示.,)EndEndIf根据连接句柄,数据源,用户名和密码连接指定的数据库TmpStat=SQLConnect{HdbcDSN,Len(DSN),DB_uSERNAME,_Lench(DBUSER_NAME),DB_PASSWORD,Len(DB_PASSWORD))如果连接不成功则退出程序IfTmpStat<>SQL_SUCCESSAnd—TmpStat<>SQLSUCCESS~VVITHJNFOThen MsgBox无法获得连接句柄},,ODBCAPI执行错误CallMsgBox(无法获得连接甸柄{,vbExclamation,提示...)IsConnect=TrueDisconnectEndEndIf设置连接标记IsConnect=TrueEndSubPrivateSubDisconnect()断开与数据库的连接DimRcAsLong如果连接标记为假,标明已经断开连接则直接返回IfIsConnectFalseThenExitSubEndIfRcSQLDisconnect(Hdbc)断开连接Rc=SQLFreeConnect(Hdbc)释放连接句柄释放环境句柄Rc=SQLFreeEnv(Henv)IsConnect=FalseEndSubPublicSubOdbcExt(ByV alTmpSQLstmtAsString) 执行ODBC数据库操作语句lfSQLAIlocStmt(Hdbc.Hstmt)Then根据连接句柄,分配语句句柄CallMsgBox(句柄分配失败i,vbExclamation,提示...)DBapLDisconnectEndEndIfffSQLExecDjrectIHstmt.TmpSQLstrnt,Lench (TmpSQLstmt))ThenCallMsgBox(数据库访问语句执行失败l,vbExclama tion,提示..)MsgBoxTmpSQLstmtDBapiIDisconnectEndEndIfEndSubPublicSubDBdataExt(TmpDataAsData,ByV alTmpSource AsString)执行指定的SQL语句DBapi_Disconnect关闭已有的ODBC连接Data控件连接数据库TmpDataConnect#0DBC;DA TABASE=+DA TABASE一+UID4-DBjjSER_NAME+PWD一+DB_PASSWORD4-:DSN;+DBJ,』AMETmpData.RecordSource=TmpSourceTmpData.RefreshEndSub4.类模块设计.类模块可以封装纠‟对数据库的各种操作.本例中采用自定义类模块封装数据库的各种操作,即数据库中的所有表对应一个类模块,类的属性变量对应表的相应列,类的方法(成员函数)对应表的各种操作,这样将所有与数据库有关的错误都被集中在类模块中,极大地提高r软件开发效率.添加EngChi—Fields类模块,主要作用足进行字段的汉化,核心代码如F:定义变量PublicIdAsIntegerPublicEngNameAsStringPublicChiNameAsStringPublicChiTypeAsString根据”中文名”读取”英文名”PublicFunctionGetlnfoByChiName(ByV alTmpChiNameAs String)AsBooleanIfTmpChiName=ThenGetlnfoByChiNameFalseExitFunctionEndIfChiName=TmpChiNameDB_ConnectSqlStmt=SELECTEngNameFROMEngChiFieldsWHERE ChiName=+Trim(TmpChiName)+…0dbcExtfSqlStmt)ffSQLFetch(Hstmt)=SQLO-DA TA_FOUNDThen GetlnfoByChiName=FalseExitFunctionElseColV al;String(400,0)RcSQLGetData(Hstmt,1.1,ColV a1.Lench{ColV a1), pcblench)EngNameTrimStr(ColV a1)EndIfRe=SQLFreeStmtIHstmt,SQL_DROP) GetlnfoByChiName.TrueDBDisconnectEndFunction根据”字段的数据类型”读取”英文名”. PublicFunctionGetlnfoByChiType(ByV alTmpChiTypeAs String)AsBooleanIfTmpChffypet~ThenGetInfoByChiType=FalseExitFunctionEndIfChiType=TmpChiTypeDB_ConnectSqlStmt=SELECTEngNameFROMEngChiFieldsWHERE ChiType=+Trim(TmpChffype)+…0dbcExtfSqlStmt)IfSQLFetchIHstmt)S0O_DA TA_FOUNDThen GetlnfoByChiType=FalseExitFunctionElseColV al=Stringf(400,0)Rc=SQLGetData(Hstmt.1.1.ColVaLLench(ColVa1), pcblench)EngName=TrimStr(ColVa”EndIfRc=SQLFreeStmt(HstmtSQL_DROP) GetInfoByChiType=TrueDB_DisconnectEndFunction四,结语通过使用VB6.0中标准控件,模块程序,类模块程序,利用SQL语言中的SELECT查询语句实现丁用英文字段名相对应的中文含义名组织动态查询条件(即用中文名进行动态条件组织)的目的.笔者在开发人力资源管理系统中,很好地利用该方法实现丁用户不同的查询要求.此程序只是起到抛砖引玉的作用,大家可以根据自己开发MIS系统的实际要求,借鉴本文所述设计思路,实现属于自己系统的任意条件SQL查询.五,参考文献1.李晓秸,张晓辉,李祥胜.SQLServer2000管理及应用系统开发.人民邮电出版社,20042.高春艳,李艳,谷伟东.VisualBasic数据库开发关键技术与实例应用.人民邮电出版社,2005(收稿日期:2004年4月15日)。
