VB范文10篇

时间:2023-03-26 19:56:36

VB范文篇1

关键词:串口;RS232;API;Pcomm;Mscomm;通信程序

现在通讯方式越来越多,速度越来越快,但串行通讯由于自身价格低、协议透明、硬件投资少、软件编程简单等诸多优点在远程数据采集、监视、通信及控制领域里一直占据着极其重要的地位。它不仅没有因为时代的进步而被淘汰,反而在规格上越来越完善、应用越来越广,长久不衰。

一、串口通信的通信机理

PC串行通信是指直接对串行端口的UART(PC机的通用异步收发器,也叫异步通信适配器,是PC机用于异步通信的接口)进行编程实现的通信。PC机每个UART中的INS8250中有10个可编程的单字节寄存器,可用于控制、监视操作串行端口,COM1的寄存器地址3F8H-3FEH,COM2的寄存器地址为2F8H-2FEH。10个寄存器由7个地址访问,其中5个寄存器的访问条件是先设置3FBH线路控制寄存器的最高位为“1”,该位也称为DLAB状态位。

一般说来,PC机都有一个或多个串行端口,它们依次为Com1、Com2。这些串口提供了外部设备与PC进行数据传输和通信的通道,在CPU和外设之间充当了解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;而当接受数据时,从外界进来的比特流数据被转换成字符数据传递给CPU进行处理。在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接受数据。当用通信控件或声明调用API函数时,它们由COMM.DRV解释并传递给设备驱动程序。

作为一个VB程序员,要编写串口通信程序,只需知道通信控件提供给Windows通信API函数的接口即可,换言之,只需设定和监视通信控件的属性和时间即可。

二、串行通讯接口RS-232

前一章节讨论了串口通讯的通信机理,但为了实现具体的数据采集、监视、通信功能,必须了解具体的串口形式。目前使用最广泛的串行接口有两种:RS-232和RS-485。本文着重讨论RS-232,RS-485不作介绍。

RS-232C标准的全称是EIA-RS-232C标准,其中EIA代表美国电子工业协会,RS代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969年),在这之前,有RS232A、RS232B协议。它规定连接电缆和机械、电气特性、信号功能及传送过程。EIA-RS-232C定义了按位串行传输的数据终端设备(DTE)和数据通讯设备(DCE)之间的接口信息。RS-232C是从DTE或计算机串行接口角度来定义引脚信号的。

目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS232采取不平衡传输方式,即所谓的单端通讯。

DB9(9针串口)的接线方式如下:1脚,数据载波检测DCD;2脚,接收数据RXD;3脚,发送数据TXD;4脚,数据终端准备DTR;5脚,信号地GND;6脚,数据设备就绪DSR;7脚,请求发送RTS;8脚,清除发送CTS;9脚,振铃指示DELL。

DB25(25阵串口),常用的针脚也有9个,且和DB9可以一一对应,具体接线方式为:8脚,数据载波检测DCD;3脚,接收数据RXD;2脚,发送数据TXD;20脚,数据终端准备DTR;7脚,信号地GND;6脚,数据设备就绪DSR;4脚,请求发送RTS;5脚,清除发送CTS;22脚,振铃指示DELL。

一般来说,对于要求不太高的场合,使用接收数据RXD,发送数据TXD,信号地GND三个脚即可实现数据传输。如果要求有硬件流控制,则必须使用DTR、DSR、RTS和CTS这四个脚。

值得注意的是RS-232C是用正负电压来表示逻辑状态,与TTL以高电平表示逻辑状态的规定不同。因此,为了能够与计算机接口或终端的TTL器件连接,必须在RS-232C与TTL电路之间进行电平和逻辑关系的变换。目前较为广泛地使用集成电路转换器件,如MC1489、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。

三、三种读取串口数据的方式

目前通用的串口通讯的软件实现方式有3种,本文都进行详细的介绍,它们各有自身的优缺点,读者在编程时可根据具体的情况选择合适的方式。

3.1利用Mscomm控件

VB提供的这个通信控件“隐藏”了大部分串口通信的底层运行过程,程序员只需编写少量的代码就可以完成软件的开发过程。在通信数据量不大,通信要求不是很高的情况下建议采取此方式。

利用Mscomm控件实现通信最需要掌握的就是它的几个主要属性,下面选取其中重要的进行介绍,其余的可以参考相关资料。

(1)Settings属性:以字符串的形式设置并返回波特率、奇偶校验位、数据位、停止位。这个属性很重要,针对不同的终端设备需要根据设备的具体情况进行调整(比如日本的设备不同于美国的设备,通常会采用奇校验)。

(2)InputMode属性:设置接收数据的类型,0为文本格式,1为二进制格式。

(3)Input属性:读取并删除接收缓冲区中的数据流。

(4)Output属性:向发送缓冲区传送一数据流。

(5)Rthreshold属性:该属性为一阀值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。

(6)Handshaking属性:设置和返回握手协议,即计算机内部CPU与串口之间的通讯协议,保证在缓冲区过载时数据不会丢失。这个属性在保证数据传输的正确性方面有很大的作用,共有四个选项,分别表示:①无流控制;②软件流控制;③硬件流控制;④软硬件流控制。采用硬件流控时,要求串口之间和电缆支持硬件握手,在自己制作串口通信线时,有关硬件握手的线RTS、CTS、DSR、DTR要连接正确。

在正确设置这些属性的基础上,剩下的就是打开串口,通过串口发送及接受数据了。本文后续章节利用一个实例详细讲解了这些属性的设置及具体代码。

3.2直接调用Win32API通信函数

直接调用WindowsAPI函数,可以清楚地理解串口通信的机制,根据需要灵活地配置串口的各种参数和属性,而且直接调用低层API函数,通信效率比较高,但付出的代价就是程序较复杂,编程周期长,适合于大型通信程序及通讯质量要求较高的场合。

在32位的Windows系统中,串口通信是作为文件处理的,串口操作一般为打开、关闭、读取、写入等操作,相应的WindowsAPI函数如下:

(1)CreateFile()函数:实现串口的初始化并打开串口,返回串口句柄资源以供后续进程调用。

(2)CloseFile()函数:关闭串口,串口是非共享资源,应用程序以独占方式使用,通信结束应立即关闭。

(3)ReadFile()函数:从串口输入缓冲区读取数据流。

(4)WriteFile()函数:向串口输出缓冲区发送数据。

(5)GetCommState()函数:获取串口的当前配置。

(6)SetCommState()函数:重新分配串口资源的各个参数。

由于WindowsAPI函数大部分是用C或C++编写,所以在VisualBasic6.0中调用WindowsAPI函数之前必须先在模块级代码上用Declare语句对所调用的函数和用到的数据结构进行声明,具体的函数声明及数据结构请参考朱友芹编《新编WindowsAPI参考大全》。

3.3调用第三方函数库(如Pcomm函数库)

DLL(DynamicLinkLibrary)动态链接库是一种可以被VB语言调用的程序模块。DLL中包含的可执行代码不能单独执行,而应由Windows应用程序调用执行。一般数据采集卡的供应商都会提供该采集卡的DLL库函数,使用这些DLL库函数,可以做到程序代码共享,减少程序的编写工作量。用户不需要知道这些代码的实现细节,只需要了解调用函数的参数和函数处理后的返回值。

Pcomm函数库是由台湾Moxa公司为开发串口通信程序提供的一套函数库。通过对WindowsAPI函数的进一步封装,提供50多个串口操作函数。覆盖了Windows操作系统下几乎所有异步通信的问题,可以简洁的开发多线程通讯程序。采用该库,通信的可靠性与使用MSComm32控件比较有了明显提高,而相对直接使用Win32API函数编程则降低了程序开发难度,缩短了程序开发周期。

这种方式上述直接调用WindowsAPI函数有相似之处,但也有明显的差异。API函数常采取的方法是在串口监视线程中设置串口通信事件掩码及重叠机制,允许程序在后台等待串口通信事件。通过WaitCommEvent检测特定的串行通信事件。而在Pcomm中,可以采用中断处理的方式,为各种事件指定相应的中断处理函数,如接收到一定数目的字符,接收到结束字符,接收到中止信号以及发送缓冲区为空等;同时还可以采用线程控制的方式,直接采用库中的sio_read()和sio_write()函数读写串口。

Pcomm..DLL中的函数按功能分为6项:端口设置、数据发送与接收、串口状态检测、事件服务、文件传输、杂项。Pcomm..DLL中主要的函数介绍如下。

sio_open:打开端口;sio_close:关闭端口。

sio_ioctl:设置端口参数,如波特率等。

sio_read:从端口接收数据;sio_write向端口发送数据。

sio_iqueue:得到接收缓冲区中的数据长度。

sio_oqueue:得到发送缓冲区中的数据长度。

Pcomm在串口通信中的功能十分强大,但基于篇幅的考虑,在此不便赘述,读者可参考相关书籍或Pcomm自带的帮助文档。

四、串口通讯的错误及处理

由于外界干扰或电压波动等原因,串口通讯可能会出现错误,如接受缓冲区溢出,奇偶校验错误等。为了处理这些错误,在Mscomm控件中就提供了一个OnComm事件,它可以捕获通信时发生的串口事件和错误信息,自动转入事件处理程序。在OnComm事件中,CommEvent属性是OnComm事件的指示,下面简单介绍几个重要的CommEvent属性值。

ComEventBreak:表示收到一个中断信号;

ComEventFrame:表示硬件检测到一个数据帧错误;

ComEvenRxover:表示接收缓冲区溢出;

ComEventTxFull:表示输出缓冲区已满;

ComEvReceive:表示接手到了Rthreshold个字符;

ComEvEOF:表示接受到了EOF字符(ASCII字符26)。

编程时用SelectCase语句,根据不同的CommEvent属性值,去执行不同的处理程序。

除了以上所述的通讯错误外,在串口通信时,如果数据传输突然中断,对串口的读写操作可能会进入无限期的等待状态,为避免这种情况发生,必须设置串口读写操作的等待时间,等待超时后,串口的读写操作将被主动放弃,这样即使数据传输突然中断程序也不会被挂起或阻塞。可以根据具体要求规定串口读写操作的最长时间值,即串口读写必须在这段时间内完成,否则提示串口操作失败。

五、串口通讯实例

本实例是一个采集设备电流及功率的通讯程序,采集仪为横河WT230数字功率计,因为要采集的数据量不大,且工程结构简单,故采用Mscomm控件的形式进行串口读写操作。

具体实现步骤如下:

(1)在窗体Form上添加两个重要的控件:Timer1和Mscomm1;

(2)在程序的Form_Load事件过程中添加如下代码:

mPort=1‘使用COM1端口

MSComm1.Setting=“9600,o,8,1”‘设置通信口参数,注意是奇校验,具体的校验方式要视具体的仪器而定

MSComm1.InputMode=comInputModeBinary‘设置接收模式为二进制形式,注意一般对于数据采集这类设备通信,都应该设置为二进制形式

MSComm1.PortOpen=True‘参数设置好后打开端口

MSComm1.HandShaking=2-comRTS‘设置为硬件流控制,可以有效避免数据丢失的情况发生

(3)程序开始后在一定情况设置Timer1.Enabled属性值为True激活Timer1_Time事件,可以在固定的时间间隔下执行Timer1_Timer过程中的代码程序,完成数据采集。在Timer1_Timer过程中添加如下代码:

MSComm1.Output="COMMUNICATE:WAIT1"+Chr(13)+Chr(10)

MSComm1.Output="MEASURE:NORMAL:VALUE?"+Chr(13)+Chr(10)

上述语句是将读取指令发送到串口输出缓冲区(注意每个命令字符串后都要加上回车和换行符Chr(13)+Chr(10)),再由系统将其自动发送给通过RS232通信线与计算机端口连接的WT230数字功率计,功率计在接收到命令字符串后,经过自身的单片机处理,就自动地把它测到的电压、电流、功率数据以固定的格式和字符形式通过RS232通信线传回至计算机,计算机程序从输入缓冲区读取这些字符数据并利用VB字符处理函数(如Val,InStr)进行处理就得到了所要的数据,下面是具体的程序代码。

Dimbytinput()asbyte‘注意要将bytinput定义为不定长数组

DimstrtemAsString

DimiasInteger

bytinput=MSComm1.Input‘将输入缓冲区数据读入给字节型数组bytinput

Fori=0ToUBound(bytinput)

strtem=strtem+Chr(bytinput(i))‘字节数组中的ASCII码值转换成相应Next的字符得到的strtem字符就形象的展示了电流、电压和功率值。对于WT230而言,它的数据结构是这样的,每个数据之间由逗号字符“,”隔开,每个数据以用科学计数法表示,且每个数据以字符“E”分为前半部分和后半部分,前半部分为具体的数据(整数形式),后半部分为此数据的指数,指数的底为10。

例如得到strtem的值为“23423E-2,00241E-3,05645E-2”这就表示电压值为234.23V,电流值为0.241A,功率为56.45W。

六、结论

串口通讯的硬件投资少,软件编程简单,在低速少量数据传输方面的应用极其广泛的应用。本文详细介绍了串口通讯的基本内容及其具体实现方式,读者可以根据具体情况进行选择。以上代码是实现串口通信的核心部分,经过笔者在多个数据采集系统开发中的应用,具有较强的实用价值。

参考文献:

1李朝青.PC机及单片机数据通信技术[M].北京:国防工业出版社,2002

2李长林.VisualBasic串口通信技术与典型实例[M].北京:清华大学出版社,2006

3[美]Microsoft公司著、北京希望电脑公司译.MicrosoftVisualBasic6.0控件参考手册[M],1999

4朱友芹.新编WindowsAPI参考大全[M].电子工业出版社,2000

VB范文篇2

一、编程准备

VB通过OLE自动化技术创建和控制InternetExplorer对象的实例,因此,在新建一个工程后需要加入MicrosoftInternet控制的参考,方法是打开VisualBasic的Project下拉菜单中的Reference…选项,单击Browse…按钮,在Windows的system目录下找到SHDOCVW.DLL并选中它,它是InternetExplorer的类库。

二、实现方法

在窗体form1中添加表1所示的控件。控件类型控件名称控件内容

LabelLable1地址:

TextText1(空)

CommandcmdView浏览

CommandcmdForward向前

CommandcmdBackward向后

CommandcmdCloseView关闭浏览窗口

CommandcmdExit退出

对上述窗体添加如下代码即可实现对InternetExplorer的调用与控制,

DimWithEventsieViewAsInternetExplorer

''''在通用模块中定义InternetExplorer对象

PrivateSubForm_Load()

cmdForward.Visible=False

cmdBackward.Visible=False

cmdCloseView.Visible=False

''''窗体调入时隐藏InternetExplorer控制按钮

EndSub

PrivateSubcmdView_Click()

DimtxtAddressAsString

OnErrorResumeNext''''设置错误陷阱

SetieView=GetObject("","InternetExplorer.Application")

ieView.Visible=True

''''创建InternetExplorer对象的一个实例,并设为可见

txtAddress=Trim(Text1.Text)

ieView.NavigatetxtAddress,navNoReadFromCache

''''按text1控件的内容进行浏览

cmdView.Enabled=False

cmdExit.Enabled=False

cmdForward.Visible=True

cmdBackward.Visible=True

cmdCloseView.Visible=True

''''使浏览、退出命令钮无效,使IE控制命令钮可见

EndSub

PrivateSubcmdForward_Click()

OnErrorResumeNext''''设置错误陷阱

ieView.GoForward

EndSub

PrivateSubcmdBackward_Click()

OnErrorResumeNext''''设置错误陷阱

ieView.GoBack

EndSub

PrivateSubcmdCloseView_Click()

OnErrorResumeNext''''设置错误陷阱

ieView.Quit

EndSub

PrivateSubieView_OnQuit()

SetieView=Nothing

''''消除ieView对象

cmdForward.Visible=False

cmdBackward.Visible=False

cmdCloseView.Visible=False

cmdView.Enabled=True

cmdExit.Enabled=True

''''恢复初始按钮状态

EndSub

PrivateSubcmdExit_Click()

End

EndSub

程序启动后"向前"、"向后"、"关闭浏览窗口"等命令钮不可见,在文本框内输入相应的URL地址,单击"浏览"按钮即可调入InternetExplorer进行浏览,此时,"向前"、"向后"、"关闭浏览窗口"命令钮转为可见,从而实现对浏览器的控制,单击"关闭浏览窗口"命令按钮可关闭当前打开的InternetExplorer窗口,此时窗口又还原为初始模样,可再次输入新的地址进行浏览。

三、注意问题

1.必须在最上层通用模块中定义InternetExplorer对象,并且将其定义为WithEvents类型以便响应由ActiveX组件触发的事件;

2.浏览时需用下述语句创建InternetExplorer对象实例,并设为可见:

SetieView=GetObject("","InternetExplorer.Application")

ieView.Visible=True

退出时须消除该对象以释放内存,即

SetieView=Nothing

否则会因大量占用系统资源导致系统不稳定。

3.调用和控制InternetExplorer过程中会产生各种错误,如在浏览器历史记录为空时,执行"向前"、"向后"操作就会产生OlE自动化错误,必须在"浏览"、"向前"、"向后"、"关闭浏览窗口"等命令按钮相应程序模块开始处加入错误捕获语句:

VB范文篇3

【关键词】Internet;VisualBasic;ActiveX组件;技术;程序

发展Internet技术为编程人员提供了更广泛的施展身手的空间。早先“Internet应用程序"这个词只是指一些用FTP协议下载文件或浏览HTML页面的工具,如今使用VisualBasic,不仅可为Internet开发应用程序,还可把Internet技术作为一部分融入大型的解决方案中。

这里所要讨论的问题是利用VisualBasic创建面向Internet应用起重要作用的ActiveX组件。例如,所创建的ActiveX控件可用于HTML页面;开发ActiveX文档可以在Internet浏览器中使用并与其他组件一起和HTML页面集成;另外ActiveX代码组件(以前被称为OLE服务器),可以被部署在客户端或服务器端的计算机上,用于后台的处理。

一、Internet开发环境

Internet是使用TCP/IP协议、全球性非集中管理的计算机网络。如果用于局部,所谓“Internet技术"完全可以和本地局域网中所使用的技术一样。

一方面,Internet技术为开发人员提供了一个施展身手的空间。如果和Web连接时使用了ActiveX组件,尽管具体实现的方法有所不同,如采用了HTML和VBScript代码以实现安全性等,但仍然在调用方法、设置属性、处理事件等等。这样,VB开发人员所有的知识和技能都被用于Internet环境。另一方面,应用Internet技术可延伸开发工作。如将ActiveX组件和Internet技术综合有以下益处:更简单维护——作为Web一部分的组件可以根据需要下载,无须用户运行一个setup程序进行升级;将功能延伸至Internet——通过通用协议,用户将看不见在Internet和Intranet之间的切换。

二、Internet客户/服务器

可以借用客户机/服务器的关系来考查Internet的开发环境,客户端和服务器端都可以有“静态的"和“活动的"两种状态。活动的客户机或服务器可据其内部状态的改变而动态地运行一个脚本或是改变其行为;静态的客户机或服务器仅仅只是对外界激励作出反应。

Internet开发包括四种情形:静态的客户机和静态的服务器;静态的客户机和活动的服务器;活动的客户机和静态的服务器;活动的客户机和活动的服务器。

三、在Web上使用ActiveX组件

ActiveX组件为Internet技术带来新功能。通过Internet组件的下载、超连接、菜单协商等各种功能,将ActiveX组件和Internet集成起来,内容和应用程序之间的界线越来越模糊;另外由于在站点上(在客户机和服务器之间)分布功能函数,则可创建更具扩展性和灵活性的站点。

在Internet应用程序中使用ActiveX文档,可以开发和Internet/Intranet站点的其他元素紧密集成的VisualBasic的应用程序。利用这些组件开发出来的应用程序,用户可以透明地在HTML页面和ActiveX文档之间迁移。

可以把ActiveX文档作为VisualBasic为Internet提供的应用,几乎现在用标准应用程序完成的工作都可以用ActiveX文档实现。作为HTML页面中的一个元素,如果在用户的客户机上没有安装ActiveX文档,用时可以自动地从网上下载;如果客户机上的版本较旧,也可自动升级。??ActiveX文档的许多特性提供了安装和导航性能,并可以保证持续一致性:

Internet组件的下载——可创建一个到ActiveX文档的连接,使浏览器可以自动找到并下载所有需要的组件。

超连接对象——在一个超连接感知的包容器中,可使用VisualBasic的超连接对象的属性和方法,跳转到一个给定的URL或是通过历史记录清单进行导航。

菜单和协商——由于可以从Word或Excel中获得文档,VisualBasic的ActiveX文档提供了将其菜单嵌入浏览器中的菜单的功能。例如当文档被装载入InternetExplorer中后,浏览器的菜单将与该ActiveX文档创建的菜单混合。

PropertyBag——当在InternetExplorer中部署ActiveX文档时,可以通过PropertyBag对象保持数据的一致性。

在InternetExplorer中部署一个ActiveX文档,要通过一个HTML页面中的超连接连接到这个ActiveX文档上。

1.用HTML创建引用这个ActiveX文档的连接。由于ActiveX文档将在InternetExplorer中取代HTML页面,所以要将组件的OBJECT标签放在另一个HTML页面中。当跳转到该页面后,一旦ActiveX文档被装载,它就会立刻消失。

2.用HTML为浏览器提供下载、注册以及导航到这个ActiveX文档的途径。在OBJECT标签中应该说明ActiveX文档的类ID和CODEBASE属性。

3.在同一页面上,使用VBScript指示InternetExplorer立刻通过相应的vbd文件导航到该ActiveX文档上。

四、在Internet应用程序中使用ActiveX控件

ActiveX控件为HTML页面带来了活力:通过HTML和VBScript,可在一个HTML页面上使用ActiveX控件,设置其属性,调用其方法并处理其事件;一个包含控件的的HTML页面仿佛一个VisualBasic的设计窗口,ActiveX控件可以提供更多交互式且生动的用户界面特性,使HTML页面变得更加有活力。

一般需要通过HTML和VBScript的综合手段引用并控制ActiveX控件的行为。使用HTML为浏览器提供下载,注册并引用ActiveX控件引用的途径。在HTML代码的OBJECT标签中需要包括:

1.控件的类别ID,以使程序能在Windows的注册表中找到它们;

VB范文篇4

关键字:VB5.0数据库表查询SQL

VB全称VisualBasic,是微软公司推出的基于Windows的可视化编程环境,以其简单易学、编程简洁、程序集成化高、功能强大而倍受程序员及广大电脑爱好者的青睐。它在数据库应用方面也有相当强大的功能。

查询模块是数据库管理系统中不可缺少的部分。在VB中进行数据库记录查询操作,根据打开数据库的方式来确定。大概有四种查询方法:SEEK方法查询、FILTER属性查询、Find方法查询、SQL查询。本文对前三种方法只作简单说明,着重介绍第四种SQL查询方法。

1、SEEK方法查询、FILTER属性查询、Find方法查询的简单说明。

用SEEK方法查询:

这种方法只使用于以OPENTABLE方式打开的数据表,而且在查询之前必须要对查询字段建立索引文件,由于已建立了索引文件,所以查询速度快,这种方式结果是将指针移到符合条件的第一个记录。例如:

SETTB=DB.OPENTABLE(“INPUT”)

TB.INDEX=”NAMEINDEX”

TB.SEEK”=”,“石脑油”

用FILTER属性查询:

FILTER属性查询是用来过滤数据的,只要我们给定过滤条件就可以将所需的记录筛选出来。需要说明的是,我们需要将以Filter属性筛选出来的数据集打开才能对其进行操作。例如:

SetDy1=db.CreateDynaset(“input”)

Dy1.Filter=”物资名称like‘石*’”

SetDy2.Dy1.CreateDynaset()

用Find方法查询。

Find查询有Findfirstfindnext两个方法,每次查询到一个记录。例如:

SetDy=db.CreateDynaset(“input”)

S=”到货数量>100and物资名称like‘石脑油’”

Dy.FindfirstS

Dy.FindnextS

2、用SQL查询。

2.1、Select-SQL查询语句的格式:

SQL(STRUCTUREQUERYLANGUAGE)即结构化查询语言,是查询关系型数据库的常用语言。由于SQL语言使用方便、功能丰富、简单易学得到很快的应用和推广,是各种关系型数据库的公用语言。使用SQL查询可以从一个表或多个表或视图中对数据库进行查询(有关SQL的更多信息,请参阅相关书籍,本文不多介绍)。它的核心语句是Select-SQL语句。

Select-SQL查询语句的格式:

SELECT[DICTINCT/ALL]----查询目标列

FROMtableexpression----------表名/视图名

[WHERE]---------------------------条件

[GROUPBY...]--------------------将查询结果的记录分组

[HAVING...]------------------------满足条件的分组

[ORDERBY...]---------------------对查询结果进行排序

下面应用笔者完成的《供应处物资管理软件》为例,。说明使用SELECT-SQL查询语句实现查询模块具体方法。

2.2单项查询模块的实现:

2.2.1应用的数据库in_db.mdb中包含表:input字段名:物资名称、供货单位、供货日期、到货数量、总金额…….等等。

2.2.2定义窗体及控件:如下表

主要控件及名称属性设置说明

Frame(frame1)caption字段选择

Optionbutton(Option1)caption物资名称

字段选择Optionbutton(Option2)caption供货单位

Optionbutton(Option3)caption供货日期

Optionbutton(Option4)caption到货数量

Optionbutton(Option5)caption总金额

Textbox(text1)Text为空查询值

Textbox(text2)Text为空

Commandbutton(command1)caption确定确定本次查询

Commandbutton(command2)caption取消取消本次查询

Commandbutton(command3)caption结束结束查询

Data(data1)Caption数据浏览

databasenamed:\zu_vb\in_db.mdb

Dbgrid(dbgrid1)datasourceData1查询结果显示

如图(1):单项查询模块窗体图

2.2.3编写程序代码:

上述设计完成后,可以对窗体及控件的事件编写代码:

‘变量定义

Dimmy_dbAsDatabaseDimmy_drAsRecordsetDimField_val1AsStringDimField_val3AsDate

DimField_val32AsDate

DimField_val4AsInteger

DimField_val42AsInteger

DimSearch_txtAsInteger

PrivateSubForm_Load()Search_txt=1Text1.Text=""Text2.Text=""Label2.Caption=""EndSub

PrivateSubCommand1_Click()‘确定按钮

SelectCaseSearch_txt

Case1‘若选择“物资名称”

Field_val1=Text1.Text

Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")

Setmy_dr=my_db.OpenRecordset("input")

ss1="select*frominputwhere(物资名称="&"''''"&Field_val1&"'''')"

Data1.RecordSource=ss1

Data1.Refresh

Case2‘若选择“供货单位”

...

Case3‘若选择“供货日期”

Field_val3=Text1.Text

Field_val32=Text2.Text

IfVal(DateDiff("d",(Text1.Text),(Text2.Text)))>=0Then

Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")

Setmy_dr=my_db.OpenRecordset("input")

ss1="select*frominputwhere供货日期between"&"#"_

&Field_val3&"#"_&"and"&"#"&Field_val32&"#"Data1.RecordSource=ss1Data1.RefreshElsezz=MsgBox("您输入的起始日期比终止日期大,请重新输入!",vbCritical,"严重警告,输入无效!")

EndIf

Case4‘若选择“到货数量”

Field_val4=Text1.Text

Field_val42=Text2.Text

Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")

Setmy_dr=my_db.OpenRecordset("input")

ss1="select*frominputwhere到货数量between"&Field_val4_

&"and"&Field_val42

Data1.RecordSource=ss1

Data1.Refresh

Case5

...

EndSelect

EndSub

PrivateSubCommand2_Click()‘取消查询

Text1.Text=""

Text2.Text=""

EndSub

PrivateSubCommand3_Click()‘结束查询

UnloadMe

EndSub

PrivateSubOption1_Click()‘选定“物资名称”字段

Search_txt=1

Text1.Text=""

Label2.Caption=""

Text2.Enabled=False‘text2设为无效

Text2.Visible=False‘text2设为不显示

Text1.SetFocus

EndSub

PrivateSubOption2_Click()‘选定“供货单位”字段

(略)

EndSub

PrivateSubOption3_Click()‘选定“供货日期”字段Search_txt=3Text1.Text=""Text1.Text=Date‘起始日期Text2.Text=Date‘终止日期

Label2.Caption="至"

Text2.Enabled=True

Text2.Visible=True

Text1.SetFocus

EndSub

PrivateSubOption4_Click()‘选定“到货数量”字段

Search_txt=4

Text1.Text=""

Text2.Text=""

Text1.Text=Format(Text1.Text,"###,###,##0.00")‘设置字段格式为数值型

Text2.Text=Format(Text2.Text,"###,###,##0.00")‘设置字段格式为数值型

Label2.Caption="至"

Text2.Enabled=True

Text2.Visible=True

Text1.SetFocus

EndSub

PrivateSubOption5_Click()‘选定“总金额”字段

(略)

EndSub

PrivateSubText1_LostFocus()

‘判断如果选定的是“供货日期”字段,text1的输入值必须是日期型的IfSearch_txt=3Then

IfNotIsDate(Text1.Text)Then

z=MsgBox("非法日期!请重新输入!",vbCritical,"严重警告,输入无效!")

Text1.SetFocus

EndIf

EndIf

EndSub

PrivateSubText2_LostFocus()

‘判断如果选定的是“供货日期”字段,text2的输入值必须是日期型的

IfSearch_txt=3Then

Text2.Text=Format(Text2.Text,"yyyy-mm-dd")

IfNotIsDate(Text2.Text)Then

z=MsgBox("非法日期!请重新输入!",vbCritical,"严重警告,输入无效!")

Text2.SetFocus

EndIf

EndIf

EndSub

2.3多项复合查查询模块的实现:

2.3.1应用的数据库in_db.mdb中包含表:input字段名:物资名称、供货单位、供货日期、到货数量、总金额…….等等。

2.3.2定义窗体及控件:如下表主要控件及名称属性设置说明

Frame(frame1)caption查询条件选择

ComboBoxcaption为空物资名称选择

TextBox(text1)Text为空起始日期

TextBox(text2)Text为空终止日期

CommandButton(command1)caption确定确定本次查询

CommandButton(command2)caption结束结束查询

Data(data1)Caption数据浏览

databasenamed:\zu_vb\in_db.mdb

DbBrid(dbgrid1)datasourceData1查询结果显示

如图(2)多项查询模块窗体图

2.3.3编写程序代码:

上述设计完成后,可以对窗体及控件的事件编写代码:

下面程序可实现“物资名称”为某值,供货日期在一定范围的采购明细的查询。

‘定义变量

Dimmy_dbAsDatabaseDimmy_drAsRecordsetDimcom_txtAsStringDimtxt1AsDateDimtxt2AsDatePrivateSubCommand1_Click()

‘判断如果输入值不是日期型的,是无效值IfNotIsDate(Text1.Text)Thenz=MsgBox("非法起始日期,请重新输入!",vbCritical,"严重警告,输入无效!")

Text1.SetFocus

Else

IfNotIsDate(Text2.Text)Then

z=MsgBox("非法终止日期,请重新输入!",vbCritical,"严重警告,输入无效!")

Text2.SetFocus

Else

IfVal(DateDiff("d",(Text1.Text),(Text2.Text)))>=0Then

''''''''''''*****设置条件*********

com_txt=bo1.Text

txt1=Form5.Text1.Text

txt2=Form5.Text2.Text

Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")

Setmy_dr=my_db.OpenRecordset("input")

ww1="select*frominputwhere(物资名称="&"''''"&com_txt&"''''"_

…&"and(供货日期between"&"#"&txt1&"#"_

&"and"&"#"&txt2&"#))"

Data1.RecordSource=ww1

Data1.Refresh

Else

zz=MsgBox("您输入的起始日期比终止日期大,请重新输入!",vbCritical,"严重警告,输入无效!")

EndIf

EndIf

EndIf

EndSub

PrivateSubForm_Load()

‘将项目“石脑油”、轻烃、纯苯………添加到combo1控件中

Combo1.AddItem"石脑油"

Combo1.AddItem"轻烃"

Combo1.AddItem"纯苯"

Combo1.AddItem"丙烯腈"

Combo1.AddItem"甲基丙烯酸甲脂"

Combo1.AddItem"聚丁二烯乳胶"

Combo1.AddItem"C2"

Combo1.AddItem"C3/C4"

Combo1.AddItem"C5"

Combo1.AddItem"盐酸"

Combo1.AddItem"液碱"

Combo1.Text="石脑油"‘设置combo1的初始值

Text1.Text=Date‘设置text1text2为日期形式,执行时并显示当前日期。

Text2.Text=Date

EndSub

VB范文篇5

一、SolidEdge软件特点

(一)友好的用户界面

SolidEdge采用SrnartRibbon界面技术,用户操作时,可得到命令的具体内容、详细步骤及下一步工作内容等信息。同时SolidEdge自带了制作精良的教程(Tutorial,引导用户由浅入深地学习。

(二)二次开发

SolidEdge在OLE2的一些标准上保持对VB开发软件的应用提供一定的便利性,这样可以更好地运用VB进行二次开发,编写具有自己企业特点的应用程序。

(三)参数设计技术和特征技术

SolidEdge是基于参数和特征实体造型的新一代机械设计CAD系统,是专门为设计人员开发的、易于理解和操作的实体造型系统,它完全执行设计工程师的意图。专业设计人员完全可以利用参数技术,完成几乎任何机械零件或装配件的造型。

(四)先进的基于特征的造型技术

SolidEdge采用特征造型技术,记录了设计的全部过程,工程师可在特征管理器(FeaturePathFinder)中方便地浏览、修改特征,甚至改变特征的次序。

二、VB与仿真软件

来自EDS公司的SolidEdge仿真软件是一个功能非常强大的三维CAD软件,SolidEdge是为机械设计量身定制的一款设计软件,装配体设计到工程制图,各种功能无所不在,装配造型无与伦比,通用零件造型功能强大,它可以使机械产品、加工产品以及机电产品等设计者方便快捷地创建、记录和共享产品知识,这一功能是管理实现的。SolidEdge由于其创新功能和使用快捷方便性,成为世界上成千上万的公司首选应用软件。根据多年来的研究,SolidEdge仿真软件系统一般应具有以下特点:(1)模块化的体系结构。系统应该按照一定规则划分为若干个子模块,各模块相互独立,实现自己的功能,模块之间通过简单的接口联系起来。模块化是开放式SolidEdge仿真软件系统实现开放的基础。(2)统一的接口标准。系统各个构成要素之间应该有完善的,统一的接口标准。来自不同厂商的产品,只要遵循这个标准,就可以方便地集成到系统当中。接口标准是实现系统集成的关键。(3)动态的系统配置。用户可以根据自己的需要定义系统的功能,决定系统的复杂程度,并且可以选用不同厂商的产品,配置出具有个性化特征的SolidEdge仿真软件系统。(4)方便的升级与维护。当系统中的某一个模块出现问题时,可以很方便地选用新的模块替换它;当某一模块的功能需要增强时,只要保证原有接口不变,添加新的接口即可;当系统需要添加新的功能时,只需保证原有模块不变,增加新的功能模块即可。(5)良好的外部接口。能与其它的SolidEdge仿真软件系统甚至是企业的其它软件如CAD,CAPP等实现互操作。总之,通过以上分析可以看出VB开发仍然是SolidEdge的基本开发手段,它适合一般开发者用于较为简单交互性程序的开发。ASS将逐步被更为完善的AR.所取代。VB则成为SolidEdge用户二次开发的另一支生力军。SolidEdge提供的开发手段让各类开发者都能有适合于自己的开发工具。

三、VB在仿真软件中操控三维对象的实现

VB范文篇6

一·Winsock的主要属性、事件和方法

Winsock是不可见控件,控件文件名是MSWINSCK.OCX,全称为Mcirosoftwinsockcontrol,使用时要将此控件调入工具箱。

1·属性:①Protocol=0//使用TCP协议;

②RemoteHost//准备连接远程机的IP地址

③RemotePort//连接远程机的IP端口号(1024—65535之间)

④LocalPort//本地机监听IP端口号必须与呼叫机端口号相同

2·方法:①connect//申请连接远程机

②listen//设置监听

③accept//建立实际连接

④senddata//发送数据

⑤getdata//接收数据

⑥close//关闭连接

3·事件:①connectionrequest//一方请求连接时另一方产生

②connect//一方机接受连接时另一方产生

③close//一方机关闭连接时另一方产生

④dataArrival//一方发送数据另一方产生

⑤error//请求连接失败时产生

二·制作方法

⑴在一工程中添加两个表单form1(模拟客户端)、form2(模拟服务器端)。

form1中装入控件:

控件名

主要属性

用途

VB.Formform1

caption=”雷萌聊天室”

controlbox=0‘False

模拟客户机表单

VB.Textboxtext1

multiline=-1‘True

scrollbars=3‘Bath

用于输入发往聊天室的信息

VB.Textboxtext2

locked=-1‘True

multiline=-1‘True

scrollbars=3‘Bath

显示从聊天室发来的信息

boboxcombo1

text=”10.84.234.11”‘任定默认地址

放入常用的地址

mandbuttoncomm1

caption=”退出”

最小化form1

mandbuttoncomm2

caption=”连接”

请求与输入的地址连接

mandbuttonsend

caption=”发送”

发送Text1中的内容

VB.Labellabel1

caption=“请在此输入发表的信息”

Text1的框标

VB.Labellabel2

caption=“聊天室或对方的信息”

Text2的框标

VB.Labellabel3

caption=”等待连接”

显示连接状态信息

VB.Labellabel4

caption=”聊天室或对方地址”

用于指示Combo1

VB.Labellabel5

caption=”操作:选地址连接,连接成功看到聊天室内容后再输信息发送”

操作说明

VB.Timertimer1

interval=6000;enabled=false

防止连接超时

MSWinsocklib.winsocka

用于数据传输

form2中装入控件:

控件名

主要属性

用途

VB.Formform2

caption=”接收信息”

controlbox=0‘False

模拟客户机表单

mandbuttoncommand1

caption=”返回”

隐含Form2窗口

mandbuttoncommand2

caption=”对话”

点对点会话时用此直接启动Form1

VB.Textboxtext1

locked=-1‘True

multiline=-1‘True

scrollbars=3‘Bath

存放聊天或对话内容

VB.Labellabel1

caption=”接收的信息”

Text1的框标

MSWinsocklib.Winsocka

用于监听

MSWinsocklib.Winsockb

用于传送聊天信息

⑵在Form1的各控件事件中加入如下代码:

DimflagAsBoolean注释:连接状态变量

PrivateSuba_Connect()

flag=True

EndSub

PrivateSuba_DataArrival(ByValbytesTotalAsLong)

DimiAsString

a.GetDatai

Label3.Caption="连接成功!"

Comm2.MousePointer=0

Form1.MousePointer=0

Timer1.Enabled=False

Ifi=Chr(0)Then

Text2.Text="你是今天第一个进入本聊天室的客户。"+Chr(13)+Chr(10)

Else

Text2.Text=Text2.Text+i

EndIf

Text2.SelStart=Len(Text2.Text)

Send.MousePointer=0

Combo1.Enabled=False

Comm2.Caption="断开连接"

Text1.SetFocus

EndSub

PrivateSuba_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)

flag=False

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

MsgBox"网络连接失败!"

Label3.Caption="等待连接"

Combo1.Enabled=True

Combo1.SetFocus

a.Close

Comm2.Caption="连接"

EndSub

PrivateSubComm1_Click()

a.Close注释:关闭连接

Form1.WindowState=1

EndSub

PrivateSubComm2_Click()

IfComm2.Caption="断开连接"Then

a.Close

Comm2.Caption="连接"

Label3.Caption="等待连接"

Combo1.Enabled=True

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

Else

Text2.Text=""

Label3.Caption="正在连接.."

Comm2.MousePointer=11

Form1.MousePointer=11

Timer1.Enabled=True

flag=False

a.Protocol=sckTCPProtocol

a.RemoteHost=Combo1.Text

a.RemotePort=3000

a.Connect

EndIf

EndSub

PrivateSubForm_DblClick()

IfMsgBox("关闭本聊天室!确认吗?",36,"退出系统")=6Then

End

Else

Form1.WindowState=1

EndIf

EndSub

PrivateSubForm_Load()

IfApp.PrevInstanceThen

MsgBox"本系统已经加载,请看任务拦!",48,"提示"

End

EndIf

flag=False

LoadForm2‘读入form2进入监听

EndSub

PrivateSubSend_Click()

DimSAsString

OnErrorGoToffff‘防止链路中断

Send.MousePointer=11

IfRight(Text1.Text,1)<>Chr(10)Then

S=Text1.Text+Chr(13)+Chr(10)

Else

S=Text1.Text

EndIf

IfflagThen

a.SendDataS

EndIf

ExitSub

ffff:

MsgBox"连接中断!",48,"提示"

a.Close

Send.MousePointer=0

Comm2.Caption="连接"

Label3.Caption="等待连接"

Combo1.Enabled=True

Comm2.MousePointer=0

Form1.MousePointer=0

ExitSub

EndSub

PrivateSubTimer1_Timer()

flag=False

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

MsgBox"网络连接失败(超时)!"

Label3.Caption="等待连接"

Combo1.Enabled=True

Combo1.SetFocus

a.Close

Comm2.Caption="连接"

EndSub

⑶在Form2的各控件事件中加入如下代码:

Constmaxn=200‘最大同时连接本机的客户数

Dimuser(maxn)AsBoolean

PrivateSubCommand1_Click()

Form2.Hide

EndSub

PrivateSubCommand2_Click()

LoadForm1

Form1.Show

EndSub

PrivateSubForm_Load()

Dimstr1AsString

Form2.Caption="雷萌通信软件"

注释:winsock控件a作为服务器程序监听

a.LocalPort=3000

a.Listen

EndSub

PrivateSuba_ConnectionRequest(ByValrequestIDAsLong)

DimiAsLong

Fori=1Tomaxn‘当一客户请求时给启动一Winsock控件标志号

IfNotuser(i)Then

user(i)=True

ExitFor

EndIf

Nexti

Ifi>maxnThen

ExitSub

EndIf

Loadb(i)‘当一客户请求时启动一Winsock控件

b(i).AcceptrequestID注释:实际建立连接

IfText1.Text=""Then注释:发送数据

b(i).SendDataChr(0)

Else

b(i).SendDataText1.Text

EndIf

Form2.Show

EndSub

PrivateSubs_Close(IndexAsInteger)

b(Index).Close注释:关闭连接

Unloadb(Index)注释:卸载一个WinSock控件

user(Index)=False

EndSub

PrivateSubb_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)

DimstrAsString

DimiAsLong

b(Index).GetDatastr

Text1.Text=Text1.Text+str

Fori=1Tomaxn

Ifuser(i)Then

b(i).SendDatastr

EndIf

Nexti

EndSub

VB范文篇7

关键词:VB;程序设计;改革;实践

Abstract:VisualBasicprogrammingasapublicnon-professionalcomputer-basedlessons,theoryandpracticestrong,andteachingdifficult.Thearticleonhowtoimprovethequalityofteachingandtrainingstudentsinanintegratedapplicationdevelopmentcapabilitiesandexplorereformsweremade.

Keywords:VB;programming;reform;practice

1引言

VisualBasic(下面简称VB)程序设计是我校非计算机专业学生的必修课,然而VB语言枯燥、难以理解,学生缺乏相应的知识背景,导致学生对这门课有恐惧心理,缺乏兴趣。这就要求我们教师在教学中分析、摸索出一些较为行之有效的教学方法,才有可能培养学生程序设计能力,掌握一门技能,激发学生对程序设计的兴趣。笔者在近几年的教学实践中进行了如下改革探索,取得了良好的教学效果。

2教学改革与实施

2.1对课本原有知识进行整合,激发学生的学习兴趣

大部分的教材总是先讲VB语言的基本语法,然后再讲VB中对象的使用。但在讲授时不宜将两者分开,要把VB面向对象的程序设计方法,事件驱动的编程机制贯穿于整个教学过程中。VB中的对象主要用于构建界面,而具体程序功能的实现则要编写代码行,因此任何一个完整的应用程序都不可能只用对象或只用语法。这两块内容可进行穿插讲解。这样就避免了让学生在毫无知识背景的情况下去理解抽象难懂的概念,挫伤他们编程的积极性。在教学过程中,我始终坚持以学生已有的知识程度为基础,打破原有的以课本知识的逻辑结构为顺序组织课堂教学的模式,先不讲基本概念,改用从简单的实例人手,通过让学生观看、模仿,在实际操作中去探究和领悟这些概念,并适时地加以归纳总结,让学生在轻松愉快的气氛中接受新知识。比如,在讲到循环结构中DO——LOOP语句和FOR——NEXT语句的用法时,我用DO——LOOP语句的4种形式和FOR——NEXT语句实现求解N!的过程,让学生去观察、领悟它们的异同。

2.2教学方法多样化

笔者在教学实践中,除了采用传统的教学方法如:提问法、小组讨论法外,主要采用以下教学方法:

1)错例分析法

学生对变量、类型、运算符、表达式这些基本概念和语言规则的掌握需要一个过程,对算法和数据结构的知识需要不断积累。学习过程中,能听懂老师授课的内容,但自己编制的程序往往错误百出。课堂上,我经常将容易出错的概念以反例形式展示给学生,让他们找错误,通过运行。比如错误使用逻辑运算符。

假设a、b和c是三个变量。如果已知a<c,要判断b的值是否在a与c之间,可以使用以下表达式:a<bAndb<c

不能写成:a<b<c。

很多学生会错误延用数学上的概念,写成后一种形式。

例OptionExplicit

PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger,cAsInteger

a=-3:b=-2:c=-1

Printa<bAndb<c’显示True

Printa<b<c’显示False

EndSub

为什么a<b<c会得False?因为,VB在计算这个表达式时,先计算“a<b”部分,得True;再计算“True<c”,并将True转换为一1,-1<-1?最终得False。

通过诸如此类的反例教学,使学生豁然开朗,印象深刻。

2)零散实例和核心实例结合

零散实例教学法,对每个知识点的运用和理解是非常行之有效的,但对前后知识的贯穿缺乏说服力。笔者在教学改革实践中体会到,除经典的零散实例外,将一个规模较大的、典型的、有实用价值的、学生感兴趣的核心实例贯穿于教学全过程,对提高学生的编程能力非常帮助。所谓核心实例是指,实例从小到大、随章节的展开而逐步成长,呈现为逐步进化的多个版本。比如引入一个贯串全书的问题:设计一个“图书管理系统”。首先,用最基本的概念和最简单的结构,给出该系统的第一个(也是最简单的)版本,以后的每一次课,都对该系统提出新的功能和结构上的要求,并用本次课介绍的新概念和新方法对它进行功能上的扩充和结构上的改进。每次得到该系统的一个增强的新版本。为达到设计目标,学生随着教学的进程,可以积极投入到对实例系统的调试、改进的实践中,逐渐掌握了所学的基本知识,同时也提高了编程能力。

2.3重视实践教学,培养学生综合应用程序开发能力

VB是一门实践性很强的课程,如果只纸上谈兵,不上机练习,是不可能真正掌握VB程序开发的。实践教学主要注意抓住以下几点:

(1)模仿阶段,对课堂核心实例系统的调试、改进。核心实例的每次增强版是全面反映教学内容的,学生通过模仿、知识再现达到在实践中领悟知识,开拓编程思路。

(2)分层次阶段,在教学过程实施的开始,和核心实例同步,我就给出了几个类似核心实例的课程设计内容,供学生选择。对核心实例的调试比较成功的,可以同步实施自己所学的课程设计内容,达到培养学生分析问题和解决问题的能力。对掌握核心实例有困难的学生,针对教学内容重新布置实验,强化知识巩固。课程设计内容课后上机完成。

要掌握上面两个阶段的具体情况,教师应亲自指导,与学生一起上机实验,随时监控学生实验过程。对学生提出的问题及时予以指导,而发现学生常犯的共性错误,可在理论课上进行点评。

2.4培养学生使用标准编码,养成良好编程习惯

在程序设计过程中,使用标准编码可以避免一些不必要的错误。笔者在授课过程当中使用标准编码的实例,在讲解实例过程中对学生进行适当地引导,让学生养成一个良好的编程习惯。

程序书写规范是非常重要问题,不仅书写格式应该结构层次分明,而且程序里面应添加起码的注释。不按照标准书写程序会增加别人查看程序的难度,同时也不利于自己以后上机调试修改。强调学生避免使用VisualBasic中的隐式操作,养成显式编码的习惯。比如永远使用OptionExplicit,严格执行变量先定义后使用的原则。避免使用缺省属性,明确指出是在引用对象还是在引用对象属性。

3结束语

一门课程的教学是一个复杂的系统工程,笔者将以上一些改革和探索用在课堂教学和实践教学中,取得了一些效果,但教学有法,教无定法,只要教学得法。在教学实践中,合理运用多种教学方法,灵活地、创造性地掌握教学过程,激发学生的兴趣,培养学生的创造性思维和综合应用程序开发能力。

参考文献

[1]王栋.VisualBasic程序设计实用教程(第3版).北京:清华大学出版社2007

VB范文篇8

定制软件针对不同用户个性化的实际需求,编制最适用的程序,用户只需具备基本的计算机使用知识,就可以自如的操控软件,不必进行复杂的培训,使用方便。其完全根据企业现有的工作流程编制程序,开发费用低廉,定制软件根据企业实际情况,编制企业所需的功能模块,删除没有实际使用价值的功能,最大限度地缩短开发周期,从而节省开发费用。尊重用户操作及浏览习惯,把对于软件的操控权最大程度地交给用户,是保证软件“简单、易用、智能化、人性化”的重要思路。理清基于VB环境的定制软件系统的层次结构。定制软件的设计开发工作,主要集中在应用层中的定制模块的开发,并成功地应用于多个管理系统的开发工作。

2基于VB环境的定制软件开发模式

2.1结构分析与开发模式

供销管理系统在中小企业、特别是私营小企业的大量应用。通用型软件是以供销的共同特点研制的,不可能考虑到企业的特殊性,无论是在用户界面,还是在具体的操作适用性上均不能满足所有企业的需求。定制软件因此有了很大的市场空间,定制软件主要是解决上述问题,但用户多变的个性化需求,单个定制软件极小的市场份额,必将导致低下的效率与质量。一方面,用户对软件需求的个性化越来越强烈,主要表现两个方面:空间上和时间上的个性化。“空间上的个性化”是指不同用户对同一个软件的需求是不一样的。“时间上的个性化”是指同一用户在不同时间不同阶段对软件的需求也是不一样的。另一方面,定制软件的开发过程,几乎都是从用户登录、权限管理、模块管理等功能开始,最后到查询、统计、报表等功能结束,过程中要历经多次的模块接口定义、版本集成和系统联调,通常还会出现大量的返工。提高软件开发效率和质量的最佳途径就是软件复用。早期的复用仅限于代码复用,构件技术产生后,复用已经上升到应用层,实现了代码级、对象级、构架级和系统级等多个层次的复用,软件复用也变成了一种主动式复用[1],为了复用而设计和开发,并配以有效的管理,以方便查找和使用。这些模块有相对独立的功能。可在不同系统中复用。由于具有“独立性、功能性和互换性”的构件不再依存于系统,软件工程对单体开发者的依赖性随之减弱,质量也随之变得可控[2]。通过对供销管理软件的整体分析,基于VB环境的定制软件,总体结构分成以下几个部分如图1所示。数据层:主要是完成管理数据的存储,基于VB开发环境,数据库系统常用的是SQL及Access。数据层主要是在系统开发时完成的,数据库结构及表属性可以通过人工及程序方式进行修改。数据传输层:完成用户与数据库的数据交换,其可分为本地数据传输及远程数据传输。数据传输协议以TCP/IP及VB自定义协议为主。采用TCP/IP协议,使系统通用性更好,数据接口子程序丰富;采用VB自定义协议,数据传输层的程序开发量大,主要用于基于Intarnet的环境,数据传输速度及安全性较好。应用层:完成数据的录入、整理、数据的统计、查询等任务。应用层可以分成两大部分,通用模块及定制模块。用户的注册及管理权限设置、数据的录入、查寻等是所有系统均包含内容,代码利用效率最高,多以数据库字典生成通用录入、查寻、统计模块。通过上述分析可见,定制软件的设计开发工作,主要集中在应用层中的定制模块的开发。基于VB环境的定制软件,是以通用软件为模板,根据用户实际需求,对定制部分的相应模块进行修改,从而生成新的应用软件系统。大量的开发工作集中在通用软件模板的开发,定制软件是通用软件模板的基础上,从新编写定制功能模块,可以在短期内根据客户要求完成应用软件的开发、修改工作。

2.2基于VB系统的开发与应用

2.2.1中小学生双语学习多媒体资源管理系统的开发与应用客户特殊需求:建构中小学生双语学习环境,加强多媒体双语学习资源的管理与使用。教师对现有电子资源进行收集、整理、标定适应人群,为不同语言水平和学生提供多媒体电子学习资源。对电子资源学习难度的标定由多人评定,收集评定意见,后再进行综合评定;定期向教师发放资源更新信息;统计学生对资源的使用情况。定制模块组成及功能分析:多媒体资源信息提交模块,主要用于教师、学生在学习过程中,将新发现、新制作的多媒体资源提交给系统管理员;审核模块,相关教师得到要审核的电子资源后,提出评定意见,主要包括资源是否可作、用于哪一年级学生、是否要对提供的资源进行修改,如何修改等,提交给管理者;综合评定信息查寻模块,一方面用于教师根据集体语评议结果进行相关修改,另一方面为教师工作量记酬提供数据;资源使用情况统计模块,通过不同授权,统计教师、学生对资源的使用情况,为教学设计、资源更新等提供决策信息。

VB范文篇9

今天我们所要讨论的问题是利用VisualBasic创建在面向Internet的应用中起重要作用的ActiveX组件。例如,你所创建的ActiveX控件可以用于HTML页面;你开发的ActiveX文档可以在Internet浏览器中使用并于其他的组件一起和HTML页面集成起来;另外ActiveX代码组件(以前被称为OLE服务器),可以被部署在客户端或服务器端的计算机上用于后台的处理。

[Internet的开发环境]

Internet是一个使用TCP/IP协议、全球性的非集中管理的计算机网络。如果去掉全球性这一点,所谓"Internet技术"完全可以和本地局域网中所使用的技术一样。

从一方面来看,Internet技术只是简单地为开发人员提供了另一个施展身手的空间。如果你在和Web连接时使用了ActiveX组件,尽管你具体实现的方法有可能不同,如采用了HTML和VBScript代码以实现安全性或是其他,但是你仍然在调用方法,设置属性,处理事件等等。这样,作为一个VB开发人员所有的知识和技能都被用于了Internet的环境下。

从另外一个方面来看,应用Internet的技术可以使你向一些吸引人的方向延伸你的开发工作。例如将ActiveX组件和Internet技术综合有以下的益处:

更简单的维护---作为Web一部分的组件可以根据需要下载,无须用户运行一个setup程序进行升级;

将功能延伸至Internet---通过通用协议,用户将看不见在Internet和Intranet之间的切换。

Internet客户/服务器

可以借用客户机/服务器的关系来考查Internet的开发环境,客户端和服务器端都可以有"静态的"和"活动的"两种状态。活动的客户机或服务器可以根据其内部状态的改变而动态地运行一个脚本或是改变其行为;而静态的客户机或服务器仅仅只是对外界激励作出反应。

Internet开发包括以下四种情形:

静态的客户机和静态的服务器

静态的客户机和活动的服务器

活动的客户机和静态的服务器

活动的客户机和活动的服务器

静态的客户机和静态的服务器

静态的客户向静态的服务器发送请求,服务器响应该请求并返回一个文件。一旦HTML页面被下载到客户端,客户机和服务器的连接就终止,直到服务器接受到下一个请求。在使用FTP下载文件或是Usernet阅读新闻时也会发生同样的情形。

结合静态客户机的功能即为用VisualBasic中和Internet技术相关的ActiveX控件创建一个FTP工具,一个Web浏览器或是一个新闻读者等等。这些性能也可以被集成到一个大的应用程序中。

静态的客户机和活动的服务器

假如你正在使用一个静态的客户端,例如和一个当前应用程序相连接的Web浏览器窗体,以下载一个HTML页面,上面有文本框以输入查询内容,还有按钮以把用户输入的条目作为一个字符串发送给服务器。当你发送完文本之后,服务器返回一个已定制过的HTML页面-往往是通过调用一个DLL中的函数,上面有你查询的结果。这就是一个"活动的"服务器的例子,它自动处理数据并根据条件返回一个定制的结果。

创建活动服务器的途径之一就是通过使用VisualBasic开发的DLL并用Oleisapi2.dll实现访问。Oleisapi2.dll包含在WindowsNTServer4.0之中,是InternetInformationServer(IIS)的一种功能,它包括了ISAPI的函数功能集。通过IIS和Oleisapi2.dll,你可以在Web服务器上部署DLL,并从客户端使用HTML页面上的信息或调用其方法。

活动的客户机和静态的服务器

当客户机拥有处理能力时称之为活动的客户机。活动的客户机拥有本地处理任务的能力,而不是请求服务器帮助处理。在客户机/服务器应用中,本地处理的能力不仅提高了任务完成的速度,而且减轻了服务器的负担。

活动客户机的情形有很多种。例如,用VisualBasic构建的ActiveX文档几乎可以包括所有传统应用的功能。当你把它放到一个容器中时,例如InternetExplorer,你的客户端就完全拥有了传统VisualBasic中所有的动态功能。客户端也可以通过在一个HTML页面中使用VBScript调用ActiveX控件或DLL实现。

活动的客户机和活动的服务器

如果采用活动客户机和活动服务器的模式可以充分发挥优势:分布式的功能便于扩展,灵活的解决方案可以充分利用系统和网络资源。

在三层结构的客户机/服务器环境中开发部署的应用中,其组件分布于整个网络上,总起来完成提供用户界面,实现业务准则和数据访问的功能,而且由于可以充分利用客户端和服务器端的处理能力,可以实现更复杂的数据访问功能。

一个活动的服务器可以负责跟踪客户提交的查询表格,提交查询并返回结果。一个活动的客户机则负责将返回的结果展现给用户,然后将改变的内容返回给服务器。另外通过Internet组件的下载,当用户访问Web站点时,可以自动更新客户端提交查询和处理结果的准则。

[在Web上使用ActiveX组件]

ActiveX组件为Internet技术带来了新的功能。通过Internet组件的下载,超连接,菜单协商等各种功能,将ActiveX组件和Internet集成起来,内容和应用程序之间的界线也越来越模糊。另外由于在站点上(在客户机和服务器之间)分布功能函数,我们可以创建更具扩展性和灵活性的站点。

在Internet应用程序中使用ActiveX文档

使用ActiveX文档,我们可以开发和Internet/Intranet站点的其他元素紧密集成的VisualBasic的应用程序。利用这些组件开发出来的应用程序,用户可以透明地在HTML页面和ActiveX文档之间迁移。

可以把ActiveX文档作为VisualBasic为Internet提供的应用。几乎所有现在用标准应用程序完成的工作都可以用ActiveX文档实现。

作为HTML页面中的一个元素,如果在用户的客户机上没有安装ActiveX文档,当用到它们时,可以自动地从网上下载;如果客户机上的版本比较旧,也可以可以自动升级。ActiveX文档的许多特性提供了很好的安装,导航性能,并可以保证很好的持续一致性:

Internet组件的下载---你可以创建一个到你的ActiveX文档的连接,使浏览器可以自动找到并下载所有需要的组件。

超连接对象---在一个超连接感知的包容器中,你可以使用VisualBasic的超连接对象的属性和方法以跳转到一个给定的URL或是通过历史的记录清单进行导航。

菜单和协商---由于可以从Word或Excel中获得文档,VisualBasic的ActiveX文档提供了将其菜单嵌入浏览器中的菜单的功能。例如当文档被装载入InternetExplorer中后,浏览器的菜单将和你为该ActiveX文档创建的菜单混合。

PropertyBag---当你在InternetExplorer中部署一个ActiveX文档时,你可以通过PropertyBag对象保持数据的一致性。

下面我们来看一看如何在InternetExplorer中部署一个ActiveX文档。假设我们要通过一个HTML页面中的超连接连接到这个ActiveX文档上:

1.用HTML创建引用这个ActiveX文档的连接。

由于ActiveX文档将在InternetExplorer中取代HTML页面,所以有必要将组件的OBJECT标签放在另一个HTML页面中。当跳转到该页面后,一旦ActiveX文档被装载,它就会立刻消失。

2.用HTML为浏览器提供下载、注册以及导航到这个ActiveX文档的途径。

在OBJECT标签中应该说明ActiveX文档的类ID和CODEBASE属性。

3.在同一页面上,使用VBScript指示InternetExplorer立刻通过相应的.vbd文件导航到该ActiveX文档上。

在Internet应用程序中使用ActiveX控件

ActiveX控件为你的HTML页面带来了活力。通过HTML和VBScript,你可以在一个HTML页面上使用ActiveX控件,设置它们的属性,调用它们的方法并处理它们的事件。一个包含控件的的HTML页面仿佛一个VisualBasic的设计窗口。ActiveX控件可以提供更多的交互式的,生动的用户界面特性,使HTML页面变得更加有活力。

一般需要通过HTML和VBScript的综合手段引用并控制ActiveX控件的行为。使用HTML为浏览器提供下载,注册并引用ActiveX控件引用的途径。在HTML代码的OBJECT标签中需要包括:控件的类别ID,以使程序能在Windows的注册表中找到它们;

ID的属性,以便在VBScript中引用该控件(类似于VisualBasic中的Name属性);

CODEBASE属性,告诉浏览器如果组件不在客户机上该去哪儿找;

PARAMNAME标签,设置控件的属性参数。

然后用VBScript编写处理单击事件的代码,使每一个控件被单击后,程序可以作相应的动作。

VisualBasic专业版中还包括了三个已预先设计好的用于包裹Internet相关技术的控件,使你能够扩展已有的应用程序,它们是:

InternetTransferControl---包裹了三种通用的Internet协议:HTTP,FTP和Gopher;

WebBrowserControl---包含了许多通过InternetExplorer可以获得的功能;

WinSockControl---使你可以连接到一台远程的机器,然后通过UDP或TCP交换数据。

通过使用这些控件,你可以添加从FTP站点自动下载文件的功能,还可以为VisualBasicIDE提供Web浏览器的Add-in。

在Internet应用程序中使用ActiveX代码组件

无论是在客户端或是在服务器端,都可以使用ActiveX代码组件(.dll或.exe文件),从而为HTML页面添加功能。

在客户端部署代码组件,由于用户的命令无须通过网络传输回服务器,可以大大提高运行速度。服务器端的组件同样也可以有显示用户界面可视化元素的功能。通过下载一个DLL,我们可以在HTML页面上添加用户界面的元素,如一个登录对话框;还可以提供幕后的客户端处理能力,例如一个伴随VBScript的函数库。

客户端的部署工作类似于对ActiveX控件的使用,你同样需要使用HTML和VBScript代码引用并编写代码组件。下面给出了一个用HTML和VBScript代码编写调用DLL以显示登录对话框的实例:

1.使用HTML创建一个窗体,其中包含一个按钮以调用登录对话框:

Clickheretologinin:

2.用HTML为浏览器提供下载,注册及引用ActiveX组件的途径:

Classid="clsid:2F390484-1C7D-11D0-8908-00A0C90395F4"

id="Login"

codebase="Login.cab#version=1,0,0,0">

3.用VBScript调用组件中的方法以显示登录对话框:

组件自身中将包含用于形成登录字符串的代码,并将它发送给服务器用于验证。

另一种将DLL和Internet技术结合的方法是将它部署在服务器端。如果你有InternetInformationServer(IIS)-包含在WindowsNTServer4.0中,你可以通过VisualBasic关盘中的Tools目录下的Oleisapi2.dll调用VisualBasic中内置的DLL函数。

VB范文篇10

从一方面来看,Internet技术只是简单地为开发人员提供了另一个施展身手的空间。如果你在和Web连接时使用了ActiveX组件,尽管你具体实现的方法有可能不同,如采用了HTML和VBScript代码以实现安全性或是其他,但是你仍然在调用方法,设置属性,处理事件等等。这样,作为一个VB开发人员所有的知识和技能都被用于了Internet的环境下。

从另外一个方面来看,应用Internet的技术可以使你向一些吸引人的方向延伸你的开发工作。例如将ActiveX组件和Internet技术综合有以下的益处:

更简单的维护---作为Web一部分的组件可以根据需要下载,无须用户运行一个setup程序进行升级;

将功能延伸至Internet---通过通用协议,用户将看不见在Internet和Intranet之间的切换。

Internet客户/服务器

可以借用客户机/服务器的关系来考查Internet的开发环境,客户端和服务器端都可以有"静态的"和"活动的"两种状态。活动的客户机或服务器可以根据其内部状态的改变而动态地运行一个脚本或是改变其行为;而静态的客户机或服务器仅仅只是对外界激励作出反应。

Internet开发包括以下四种情形:

静态的客户机和静态的服务器

静态的客户机和活动的服务器

活动的客户机和静态的服务器

活动的客户机和活动的服务器

静态的客户机和静态的服务器

静态的客户向静态的服务器发送请求,服务器响应该请求并返回一个文件。一旦HTML页面被下载到客户端,客户机和服务器的连接就终止,直到服务器接受到下一个请求。在使用FTP下载文件或是Usernet阅读新闻时也会发生同样的情形。

结合静态客户机的功能即为用VisualBasic中和Internet技术相关的ActiveX控件创建一个FTP工具,一个Web浏览器或是一个新闻读者等等。这些性能也可以被集成到一个大的应用程序中。

静态的客户机和活动的服务器

假如你正在使用一个静态的客户端,例如和一个当前应用程序相连接的Web浏览器窗体,以下载一个HTML页面,上面有文本框以输入查询内容,还有按钮以把用户输入的条目作为一个字符串发送给服务器。当你发送完文本之后,服务器返回一个已定制过的HTML页面-往往是通过调用一个DLL中的函数,上面有你查询的结果。这就是一个"活动的"服务器的例子,它自动处理数据并根据条件返回一个定制的结果。

创建活动服务器的途径之一就是通过使用VisualBasic开发的DLL并用Oleisapi2.dll实现访问。Oleisapi2.dll包含在WindowsNTServer4.0之中,是InternetInformationServer(IIS)的一种功能,它包括了ISAPI的函数功能集。通过IIS和Oleisapi2.dll,你可以在Web服务器上部署DLL,并从客户端使用HTML页面上的信息或调用其方法。

活动的客户机和静态的服务器

当客户机拥有处理能力时称之为活动的客户机。活动的客户机拥有本地处理任务的能力,而不是请求服务器帮助处理。在客户机/服务器应用中,本地处理的能力不仅提高了任务完成的速度,而且减轻了服务器的负担。

活动客户机的情形有很多种。例如,用VisualBasic构建的ActiveX文档几乎可以包括所有传统应用的功能。当你把它放到一个容器中时,例如InternetExplorer,你的客户端就完全拥有了传统VisualBasic中所有的动态功能。客户端也可以通过在一个HTML页面中使用VBScript调用ActiveX控件或DLL实现。

活动的客户机和活动的服务器

如果采用活动客户机和活动服务器的模式可以充分发挥优势:分布式的功能便于扩展,灵活的解决方案可以充分利用系统和网络资源。

在三层结构的客户机/服务器环境中开发部署的应用中,其组件分布于整个网络上,总起来完成提供用户界面,实现业务准则和数据访问的功能,而且由于可以充分利用客户端和服务器端的处理能力,可以实现更复杂的数据访问功能。

一个活动的服务器可以负责跟踪客户提交的查询表格,提交查询并返回结果。一个活动的客户机则负责将返回的结果展现给用户,然后将改变的内容返回给服务器。另外通过Internet组件的下载,当用户访问Web站点时,可以自动更新客户端提交查询和处理结果的准则。

[在Web上使用ActiveX组件]

ActiveX组件为Internet技术带来了新的功能。通过Internet组件的下载,超连接,菜单协商等各种功能,将ActiveX组件和Internet集成起来,内容和应用程序之间的界线也越来越模糊。另外由于在站点上(在客户机和服务器之间)分布功能函数,我们可以创建更具扩展性和灵活性的站点。

在Internet应用程序中使用ActiveX文档

使用ActiveX文档,我们可以开发和Internet/Intranet站点的其他元素紧密集成的VisualBasic的应用程序。利用这些组件开发出来的应用程序,用户可以透明地在HTML页面和ActiveX文档之间迁移。

可以把ActiveX文档作为VisualBasic为Internet提供的应用。几乎所有现在用标准应用程序完成的工作都可以用ActiveX文档实现。

作为HTML页面中的一个元素,如果在用户的客户机上没有安装ActiveX文档,当用到它们时,可以自动地从网上下载;如果客户机上的版本比较旧,也可以可以自动升级。ActiveX文档的许多特性提供了很好的安装,导航性能,并可以保证很好的持续一致性:

Internet组件的下载---你可以创建一个到你的ActiveX文档的连接,使浏览器可以自动找到并下载所有需要的组件。

超连接对象---在一个超连接感知的包容器中,你可以使用VisualBasic的超连接对象的属性和方法以跳转到一个给定的URL或是通过历史的记录清单进行导航。

菜单和协商---由于可以从Word或Excel中获得文档,VisualBasic的ActiveX文档提供了将其菜单嵌入浏览器中的菜单的功能。例如当文档被装载入InternetExplorer中后,浏览器的菜单将和你为该ActiveX文档创建的菜单混合。

PropertyBag---当你在InternetExplorer中部署一个ActiveX文档时,你可以通过PropertyBag对象保持数据的一致性。

下面我们来看一看如何在InternetExplorer中部署一个ActiveX文档。假设我们要通过一个HTML页面中的超连接连接到这个ActiveX文档上:

1.用HTML创建引用这个ActiveX文档的连接。

由于ActiveX文档将在InternetExplorer中取代HTML页面,所以有必要将组件的OBJECT标签放在另一个HTML页面中。当跳转到该页面后,一旦ActiveX文档被装载,它就会立刻消失。

2.用HTML为浏览器提供下载、注册以及导航到这个ActiveX文档的途径。

在OBJECT标签中应该说明ActiveX文档的类ID和CODEBASE属性。

3.在同一页面上,使用VBScript指示InternetExplorer立刻通过相应的.vbd文件导航到该ActiveX文档上。

在Internet应用程序中使用ActiveX控件

ActiveX控件为你的HTML页面带来了活力。通过HTML和VBScript,你可以在一个HTML页面上使用ActiveX控件,设置它们的属性,调用它们的方法并处理它们的事件。一个包含控件的的HTML页面仿佛一个VisualBasic的设计窗口。ActiveX控件可以提供更多的交互式的,生动的用户界面特性,使HTML页面变得更加有活力。公务员之家:

一般需要通过HTML和VBScript的综合手段引用并控制ActiveX控件的行为。使用HTML为浏览器提供下载,注册并引用ActiveX控件引用的途径。在HTML代码的OBJECT标签中需要包括:

控件的类别ID,以使程序能在Windows的注册表中找到它们;

ID的属性,以便在VBScript中引用该控件(类似于VisualBasic中的Name属性);

CODEBASE属性,告诉浏览器如果组件不在客户机上该去哪儿找;

PARAMNAME标签,设置控件的属性参数。

然后用VBScript编写处理单击事件的代码,使每一个控件被单击后,程序可以作相应的动作。

VisualBasic专业版中还包括了三个已预先设计好的用于包裹Internet相关技术的控件,使你能够扩展已有的应用程序,它们是:

InternetTransferControl---包裹了三种通用的Internet协议:HTTP,FTP和Gopher;

WebBrowserControl---包含了许多通过InternetExplorer可以获得的功能;