打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB基础教程 - 2

夢清雲淡社區 - http://sxhouse.org/ » 编程专区 » VB基础教程

页: 1 [2] 3

史翔 2005-02-25 10:23:23
re:[b]2.[/b][b]注意事项[/b]...

2.注意事项
(1)   函数名的命名规则与变量命名规则相同;函数过程必须由函数名返回一个值。
(2) 如果函数体内没有给函数名赋值,则返回对应类型的缺省值,数值型返回0,字符型返回空字符串。
(3) 函数过程内部不得再定义Sub过程或Function过程。
例:编写一个计算N!的函数过程

 

3.Function过程的调用
调用Function过程与调用VB内部函数的方法一样,即在表达式中写出它的名称和相应的实在参数。
语法:    过程名[实参列表]

注意:(1)必须给参数加上括号,即使没有参数也不可省略括号;
(2)VB中也允许象调用Sub过程一样来调用Function,但这样就没有返回值。
4.调用其他模块中的过程
 (1)调用窗体中的过程
从窗体模块的外部调用窗体中的公有过程,必须用窗体的名字作为调用前缀。如:

Call  Form1.Examsub([实参表])
 (2)调用标准模块中的过程

如果在应用程序中,过程名是唯一的,则调用时不必加模块名。如果有同名的,则在同一模块内调用时可以不加模块名,而在其他模块中调用时必须加模块名。
 (3)类模块中的过程
调用类模块的公有过程时,要求用指向该类某一实例的变量修饰过程,即首先要声明类的实例为对象变量,并以此变量作为过程名前缀修饰词,不可直接用类名作为前缀修饰词。
如:在类模块Class1中含有过程clssub,变量Democlass是类Class1的一个实例,则调用clssub的方法是:
Dim  Democlass AS New Class1
Call  Democlass.clasub

例:函数过程与子过程的异同,计算级数的部分和
  1 + x + x2/2! +……+ xn/n! +……, |xn/n!|


6.3 参数的传递
1.形参与实参的概念
  形参:指出现在Sub 和Function过程形参表中的变量名、数组名,过程被调用前,没有分配内存,其作用是说明自变量的类型和形态以及在过程中的角色。形参可以是:
1)除定长字符串变量之外的合法变量名;
2)后面跟()括号的数组名。
  实参:是在调用Sub 和Function过程时,传送给相应过程的变量名、数组名、常数或表达式。在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但位置必须对应起来。
    形参与实参的关系:形参如同公式中的符号,实参就是符号具体的值;调用过程:即实现形参与实参的结合,也就是把值代入公式进行计算。
2. 按值传递参数(定义时加ByVal
按值传递参数(Passed By Value)时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变。
3.按地址传递参数(定义时没有修饰词或带关键字ByRef
按地址传递参数时,把实参变量的地址传送给被调用过程,形参和实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。如果实参是一个常数或表达式,VB会按“传值”方式来处理。
4.数组参数
   VB允许把数组作为形参出现在形参表中,语法: [b]形参数组名() [As [/b]数据类型]
    形参数组只能按地址传递参数,对应的实参也必须是数组,且数据类型相同。调用过程时,把要传递的数组名放在实参表中,数组名后面不跟圆括号。在过程中不可 以用Dim语句对形参数组进行声明,否则会产生“重复声明”的错误。但在使用动态数组时,可以用ReDim语句改变形参数组的维界,重新定义数组的大小。
5. 对象参数
VB中可以向过程传递对象,在形参表中,把形参变量的类型声明为“Control”,可以向过程传递控件;若声明为“Form”,则可向过程传递窗体。对象的传递只能按地址传递。

 

 

 

 
6.4  变量、过程的作用域
1. VB应用程序的组成:
2. 过程的作用域
作用范围
模块级
全局级
窗体
标准模块
窗体
标准模块
定义方式
过程名前加Private
例:Private Sub my1(形参表)
过程名前加Pubilc 或默认
例:[ Pubilc ] Sub my2(形参表)
能否被本模块其他过程调用




能否被本应用程序其他模块调用
不能
不能
能,但必须在过程名前加窗体名。例:
Call 窗体名. My1(实参表)
能,但过程名必须唯一,否则需要加标准模块名。例:
Call 标准模块名.My2(实参表)
3. 变量的作用域
作用范围
局部变量
窗体/模块级变量
全局变量
 
 
 
窗体
标准模块
声明方式
Dim、Static
Dim、Private
Public
声明位置
在过程中
窗体/模块的“通用声明”段
窗体/模块的“通用声明”段
能否被本模块其他过程存取
不能


能否被其他模块存取
不能
不能
能,但在变量名前加窗体名

4.静态变量
用Static声明的静态变量,在每次调用过程时保持原来的值,不重新初始化。而用Dim声明的变量,每次调用过程时,重新初始化
例:显示1到5个数。
5.同名变量
对不同范围内出现的同名变量,可以用模块名加以区别。一般情况下,当变量名相同而作用域不同时,优先访问局限性大的变量。
6.5   递归过程
1.递归的概念
通俗的讲,用自身的结构来描述自身就称为“递归”。如对阶乘运算的定义就是递归的:
n!=n(n-1)!     (n-1)!=(n-1)(n-2)!
2.递归子过程和递归函数
    VB 允许一个自定义子过程或函数过程在过程体的内部调用自己,这样的子过程或函数就叫递归子过程和递归函数。递归过程包含了递推和回归两个过程。构成递归的条件是:
(1)递归结束条件和结束时的值
(2)能用递归形式表示,并且递归向结束条件发展。
例:编制程序求fac(n)=n!的函数
3.注意事项
(1)递归算法设计简单,但消耗的上机时间和占据的内存空间比非递归大
(2) 设计一个正确的递归过程或函数过程必须具备两点:1)具备递归条件;2)具备递归结束条件
(3) 一般而言,递归函数过程对于计算阶乘、级数、指数运算有特殊效果。

史翔 2005-02-25 10:23:54
re:[b]第七章[/b][b] VB[/b]...

第七章 VB中的文件操作
7.1    文件系统控件
1. 文件系统控件种类
 (1) 驱动器列表框(DriveListBox):用来显示当前机器上的所有盘符
 
(2
) 目录列表框(DirListBox):用来显示当前盘上的所有文件夹

(3) 文件列表框(FileListBox):用来显示当前文件夹下的所有文件名
2. 重要属性
属性
适用的控件
作用
示例
Drive
驱动器列表框
包含当前选定的驱动器名
Driver1. Drive="C"
Path
目录和文件列表框
包含当前路径
Dir1.Path="C:\WINDOWS"
FileName
文件列表框
包含选定的文件名
MsgBox File1.FileName
Pattern
文件列表框
决定显示的文件类型
File1.Pattern="*.BMP"
3. 重要事件
事件
适用的控件
事件发生的时机
Change
目录和驱动器列表框
驱动器列表框的Change事件是在选择一个新的驱动器或通过代码改变Drive属性的设置时发生
目录列表框的Change事件是在双击一个新的目录或通过代码改变Path属性的设置时发生
PathChange
文件列表框
当文件列表框的Path属性改变时发生
PattenChange
文件列表框
当文件列表框的Pattern属性改变时发生
Click
目录和文件列表框
用鼠标单击时发生
DblClick
文件列表框
用鼠标双击时发生
7.2     文件的读写
1.  文件的有关概念
 记录:计算机处理数据的基本单位,由若干个相互关联的数据项组成。相当于表格中的一行。

文件:记录的集合,相当于一张表。

文件类型:顺序文件、随机文件、二进制文件。

访问模式:计算机访问文件的方式,VB中有顺序、随机、二进制三种访问模式。
2. 顺序访问模式
    顺序访问模式的规则最简单,指读出或写入时,从第一条记录“顺序”地读到最后一条记录,不可以跳跃式访问。该模式专门用于处理文本文件,每一行文本相当于一条记录,每条记录可长可短,记录与记录之间用“换行符”来分隔。
顺序文件的写入步骤打开、写入、关闭;  读出步骤打开、读出、关闭
(1)打开文件
打开文件的命令是Open,格式为:

       Open “文件名” For 模式 As [#] 文件号 [Len=记录长度]

说明
1)文件名可以是字符串常量也可以是字符串变量
2)模式可以是下面之一:

     OutPut:打开一个文件,将对该文件进行写操作

    Input:打开一个文件,将对该文件进行读操作

    Append:打开一个文件,将在该文件末尾追加记录
3) 文件号是一个介于1-511之间的整数,打开一个文件时需要指定一个文件号,这个文件号就代表该文件,直到文件关闭后这个号才可以被其他文件所使用。可以利用FreeFile()函数获得下一个可以利用的文件号。
       例: Open  "D:\sj\aaa"  For  Output  As  #1    
意思是:打开D:\SJ下aaa文件供写入数据,文件号为#1

史翔 2005-02-25 10:24:08
re:[b](2)[/b][b]写操作[/b]...

(2)写操作
将数据写入磁盘文件所用的命令是:Write# 或Print#。语法格式:
[b]  1) Print #文件号,[输出列表][/b]

例: Open “D:\SJ\TEST.DAT” For  Output  As  #1
 Print  #1,Text1.Text        '把文本框的内容一次性写入文件
Close  #1
  2[b]Write #文件号,[输出列表][/b]
        其中的输出列表一般指用逗号,分隔的数值或字符串表达式。Write #与Print #的功能基本相同,区别是Write #是以紧凑格式存放,在数据间插入逗号,并给字符串加上双引号。
(3)  关闭文件
结束各种读写操作后,必须将文件关闭,否则会造成数据丢失。关闭文件的命令是Close。

Close [#]文件号[,[#]文件号]……
例: Close  #1,#2,#3
(4) 读操作
  1) Input #文件号,变量列表
    作用:将从文件中读出的数据分别赋给指定的变量。
注意:与Write #配套才可以准确地读出。
  2)Line  Input #文件号,字符串变量
用于从文件中读出一行数据,并将读出的数据赋给指定的字符串变量,读出的数据中不包含回车符和换行符,可与Print #配套用。
  3)Input$(读取的字符数,#文件号)
该函数可以读取指定数目的字符。
与读文件有关的两个函数:
LOF():返回某文件的字节数
EOF():检查指针是否到达文件尾。
例:将一个文本文件读入文本框的三种方法。
3.随机访问模式
     该模式要求文件中的每条记录的长度都是相同的,记录与记录之间不需要特殊的分隔符号。只要给出记录号,可以直接访问某一特定记录,其优点是存取速度快,更新容易。
 (1)  打开与关闭
打开Open “文件名” For Random As [#] 文件号 [Len=记录长度]

关闭Close  #文件号
       注意:文件以随机方式打开后,可以同时进行写入和读出操作,但需要指明记录的长度,系统默认长度为128个字节。
 (2)读与写

读操作Get  [#]文件号,[记录号],变量名
说明:Get命令是从磁盘文件中将一条由记录号指定的记录内容读入记录变量中;记录号是大于1的整数,表示对第几条记录进行操作,如果忽略不写,则表示当前记录的下一条记录。
       写操作Put  [#]文件号,[记录号],变量名
     说明:Put命令是将一个记录变量的内容,写入所打开的磁盘文件指定的记录位置;记录号是大于1的整数,表示写入的是第几条记录,如果忽略不写,则表示在当前记录后插入一条记录。
4.  二进制访问模式
  打开Open “文件名” For Binary As [#] 文件号 [Len=记录长度]
    关闭Close  #文件号
     该模式是最原始的文件类型,直接把二进制码存放在文件中,没有什么格式,以字节数来定位数据,允许程序按所需的任何方式组织和访问数据,也允许对文件中各字节数据进行存取和访问。
    该模式与随机模式类似,其读写语句也是Get 和Put,区别是二进制模式的访问单位是字节,随机模式的访问单位是记录。在此模式中,可以把文件指针移到文件的任何地方,刚开始打开时,文件指针指向第 一个字节,以后随文件处理命令的执行而一旦。文件一旦打开,就可以同时进行读写。
7.3     常用的文件操作语句和函数
1.   FileCopy语句
  格式:FileCopy   源文件名  目标文件名

功能:复制一个文件

说明:不能复制一个已打开的文件
2.   Kill语句
  格式:Kill  文件名

功能:删除文件

说明:文件名中可以使用通配符 *,?
3.  Name语句
  格式:Name  旧文件名  新文件名

 功能:重新命名一个文件或目录

 说明:不能使用通配符;具有移动文件功能;不能对已打开的文件进行重命名操作
4. ChDrive语句
  格式:ChDrive  驱动器

 功能: 改变当前驱动器
说明:如果驱动器为空,则不变;如果驱动器中有多个字符,则只会使用首字母
5.MkDir语句
  格式:MkDir  文件夹名

 功能:创建一个新的目录
6.ChDir语句
  格式:ChDir  文件夹名

 功能:改变当前目录

 说明:改变默认目录,但不改变默认驱动器。
7. RmDir语句
  格式:RmDir  文件夹名

功能:删除一个存在的目录

说明:不能删除一个含有文件的目录
8. CurDir()函数
  格式: CurDir[(驱动器)]

功能:可以确定任何一个驱动器的当前目录。

说明:括号中的驱动器表示需要确定当前目录的驱动器,如果为空,返回当前驱动器的当前目录路径。



史翔 2005-02-25 10:24:36
re:第八章 VB中Acti...

第八章          VB中ActiveX控件的使用

8.1  概述

     这里的ActiveX控件是指VB标准工具箱里没有的控件,用时需从“工程”菜单里选择“部件…”(或右键单击工具箱,从快捷菜单中选择“部件…”),从部件窗口里勾上需要的控件。

常用ActiveX控件

ActiveX控件
 ActiveX部件
 文件名
 
TabStrip      页框
 Windows通用控件

Microsoft  Windows Common Controls 6.0
  路径:

Windows\system\

Mscomctl.ocx
 
Toolbar       工具栏
 
StatusBar     状态栏
 
ProgressBar   进程条
 
TreeView    分层显示
 
ListView     排列显示
 
ImageList    图象列表
 
Slider        滑块
 
ImageCombo  图象组合框
 
CommonDialog 通用对话框
 Microsoft  Common  Dialog Control 6.0  
 Comdlg32.ocx
 

MMControl1  多媒体
 Microsoft  Multimedia Control 6.0
 Mci32.ocx
 
MediaPlayer  媒体播放器
 Microsoft  Media Player
 Msdxm.ocx
 

8.1    多选项卡对话框——页框(TabStrip)

1.  设置页框的外观样式

(1) 先在窗体上画出一个TabStrip对象;

(2) 右击该对象,从快捷菜单中选择“属性”;

(3) 在TabStrip属性窗口里选择通用(General)标签,在样式(Style)列表框里选择样式;

(4) 在TabStrip属性窗口里选择选项卡(Tabs)标签,在标题(Caption)框里输入标题和关键字;

(5) 如果需要的话,在工具提示文本(ToolTipText)框里输入提示信息;

(6) 在TabStrip属性窗口里选择字体(Font)标签,设置标题的字体(可以直接采用默认值)。

2.增减标签总数

    在TabStrip属性窗口里选择选项卡标签,单击插入选项卡按钮增加标签,单击删除选项卡按钮删除标签。

3.在TabStrip上显示图形

1) 在窗体里拖入一个图象列表(ImageList)控件;

2) 在此对象上右击,选择属性,打开属性页窗口;

3) 选择图象标签, 单击插入图片按钮,在选定图片对话框里选择想使用的位图或图标,然后单击打开按钮;为每个想添加图形的选项卡重复此步;

4) 单击确定按钮, ImageList里就存储了需要的图片。

5) 选择TabStrip, 进入TabStrip属性窗口并选择通用标签,在图象列表框里选择ImageList1;

6) 选择选项卡标签,单击紧挨索引框的向左或向右箭头以选择一个Tab序号。在图象框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形,单击确定按钮完成。

4.在TabStrip上放置其它控件

    在窗体上象添加普通控件一样,把每一页需要的控件添上,控件不止一个时,应该用Frame来分组,注意:除了默认的第一页上的Frame控件外,其他所有Frame的Visible属性都应该设为假。

5.设计代码

    在用户选择了标签后,TabStrip要求编写代码来显示或隐藏控件。可用类似下面的代码来识别用户在哪一个项目上单击。

Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.key
Case 1
<选第一项时需要执行的代码>
Case 2
<选第一项时需要执行的代码>
……
End Select
End Sub

例: Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Key
Case "statubar"
Frame2.Visible = False
Frame1.Visible = True
Case "toolbar"
Frame1.Visible = False
Frame2.Visible = True
End Select
End Sub

8.2    状态栏(StatusBar)和工具栏(ToolBar)

1. 状态栏的作用与组成

StatusBar 控件由 Panel(窗格) 对象组成,最多能被分成 16 个 Panel 对象,每一个 Panel 对象能包含文本和/或图片。控制个别窗格的外观属性包括 Width、Alignment(文本和图片的)和 Bevel(斜面)。此外,能使用 Style 属性七个值中的一个自动地显示公共数据,诸如日期、时间和键盘状态等。

2. 创建状态栏

先在窗体上画出一个StatusBar对象,再右击该对象,从快捷菜单中选择“属性”,进入属性页设置窗口,进行下面的设置:

(1) 选择窗格形状

    在属性窗口里选择通用标签,在样式列表框里选择多窗格(缺省形式)或单窗格简单文本形式。

(2) 添加或删除状态栏窗格

     在属性窗口里选择窗格标签,单击插入窗格按钮添加一个窗格,或单击删除窗格按钮删除一个窗格。

(3) 在单窗格里显示文本

      在属性窗口里选择通用标签,在简单文本框里输入想显示在状态栏窗格里的文本。用代码显示的方式是:

    StatusBar1.SimpleText = "要显示的内容"

(4) 在多窗格里显示文本或图形

1). 在属性窗口里选择窗格标签,用索引旁的按钮选择窗格序号。

2). 在文本框里输入想显示在状态栏窗格里的文本。用代码显示的方式是:StatusBar1.Panels(x).Text = "要显示的内容"

3). 如果想加入图形,单击浏览按钮打开一个图形选择对话框,选择想加入的图形,然后单击打开按钮。

(5)  编写代码

如果是一个单窗格状态栏,当用户单击状态栏时,只需用下面的事件过程来响应:

Private Sub StatusBar1_Click()
<要执行的代码>
End Sub

     如果是一个多窗格状态栏,就需要鉴别用户单击的是哪一个窗格,可用下面的事件过程来识别用户所单击的窗格:

Private Sub StatusBar1_PanelClick(ByVal Panel As Panel)
Select Case Panel.Index
Case 1
<要执行的代码>
Case 2
<要执行的代码>
……
End Select
End Sub

3.创建工具栏

(1).建立工具栏

1) 在工具箱里单击工具栏图标,拖到窗体的任何位置,Visual Basic自动将ToolBar移到顶部。再右击该对象,从快捷菜单中选择“属性”,进入属性页设置窗口;

2) 选择按钮标签,单击插入按钮,Visual Basic就会在工具栏上显示一个空按钮,重复此步插入多个按钮;

3) 单击确定按钮。如果想把按钮分组,首先插入一个分隔的按钮,再在对话框里将这个按钮的样式属性改为3-Separator。

(2) 为工具栏增加图画

1). 在Visual Basic工具箱里单击ImageList图标,并将它拖到窗体的任何位置(位置不重要,因为它总是不可见的),再右击该对象,从快捷菜单中选择“属性”,进入属性页设置窗口;

2). 选择图象标签,单击插入图片,在选定图形对话框里选择想使用的位图或图标,然后单击打开按钮。为每个想添加图形的工具栏按钮重复此步。

3). 单击确定按钮。

4). 进入ToolBar属性对话框,选择通用标签,在图象列表框里选择刚才添加的ImageList控件。

5). 选择按钮标签,单击紧挨Index框的向左或向右箭头以选择一个按钮序号。出现在工具栏最左边的按钮序号为1。

6). 在Image框里输入一个数,输入为1,则显示刚才ImageList控件里的第一个图形,输入为2,则显示刚才ImageList控件里的第二个图形。

7). 为每个按钮重复第6步, 单击确定按钮,现在Visual Basic就会在工具栏上显示精美的图形了。

(3)为工具栏添加文本信息

      在ToolBar属性对话框中选择按钮标签,在标题框里输入想显示在按钮上的文本。

(4)添加ToolTips

       ToolTips是一种当点到工具按钮时弹出的小标签。ToolTips很方便,可以告诉那些新手每个按钮是干什么用的。在ToolBar属性对话框中选择按钮标签,在工具提示文本框里输入想作为ToolTip的文本。

(5)编写代码

        双击工具栏,以下面的格式输入代码就可以了:

           Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
Select Case Button.Index
Case 1
<要执行的代码>
Case 2
<要执行的代码>
……
End Select
End Sub

8.3    进程条(ProgressBar)和滑块(Slider)

1. 进程条

   作用:进程条控件用于监视操作完成的进度。

   创建:在窗体上画出进程条控件,右击,选择属性,然后进行所需的外观设置。

   主要属性:ProgressBar 控件有一个行程和一个当前位置。行程代表该操作的整个持续时间。当前位置则代表应用程序在完成该操作过程时的进度。Max 和 Min 属性设置了行程的界限。Value 属性则指明了在行程范围内的当前位置。  

(1)  Min属性代表进程条全空时的值,缺省时为0。

(2)  Max属性代表进程条全空时的值,缺省时为100。

(3)  Value属性代表进程条当前的值(但不出现在属性窗口中),它大于Min属性,小于Max属性。改变Value属性的值将改变进程条的进度显示。

    示例:

Private Sub Command1_Click()
If  ProgressBar1.Value < ProgressBar1.Max Then
ProgressBar1.Value = ProgressBar1.Value + 5
Else
ProgressBar1.Visible = False    ‘当进程条满了的时候让进程条消失
End If
End Sub

2.滑块

      Slider 控件是包含滑块和可选择性刻度标记的窗口,在窗体上画出滑块控件,右击,选择属性,然后进行下列设置:

(1)选择滑块的外观

1)方向属性决定滑块的方位,可以是垂直的或水平的滑块。

2)滑块样式属性决定滑块标记的样子。

3)滑块频率属性规定了沿着滑块的标记的间隔大小,缺省的状态是1,表明每个可能值都出现标记,如果把值设置为3,则每三个可能值出现一个标记。

(2)滑块的主要属性及事件

    1)Min,Max属性

      Min属性决定滑块最左端或最顶端所代表的值。Max属性决定滑块最右端或最下端所代表的值。

2)LargeChange,SmallChange属性

     SmallChange决定在滑块两端的箭头钮上单击时改变的值。LargeChange决定在滑块上方或下方区域单击时改变的值。

3)Value属性

     Value属性代表当前滑块所处位置的值,这个值由滑块的相对位置决定。

4)Change事件

      当滑块位置发生变化时就引发了Change事件。

8.4        排列显示(ListView)控件和分层显示(TreeView) 控件

1.ListView 控件

象“资源管理器”的右侧一样,可使用四种不同视图显示项目。通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。

    可使用 ListView 控件将称作 ListItem 对象的列表条目组织成下列四种不同的视图之一:

    大(标准)图标   小图标   列表   报表

     View 属性决定在列表中控件使用何种视图显示项目。还可用 LabelWrap 属性控制列表中与项目关联的标签是否可换行显示。另外,还可管理列表中项目的排序方法和选定项目的外观。

ListView 控件包括 ListItem 和 ColumnHeader 对象。ListItem 对象定义 ListView 控件中项目的各种特性,如: 项目的简要描述、由 ImageList 控件提供的与项目一起出现的图标、附加的文本片段,称作子项目,它们与显示在报表视图中的 ListItem 对象关联。

     可以使用 HideColumnHeaders 属性决定是否在 ListView 控件中显示列标头。列标头可以在设计时添加,也可以在运行时添加。设计时,使用 ListView“控件属性”对话框的“列首”选项卡添加列标头。运行时,使用 Add 方法添加 ColumnHeader 对象到 ColumnHeaders 集合中。

2.TreeView 控件

     该控件象“资源管理器”的左侧一样,用于显示结点( Node) 对象的分层列表,每个 Node 对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。

     创建了 TreeView 控件之后,可以通过设置属性与调用方法对各 Node 对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折回 Node 对象来显示或隐藏所有子节点。

     TreeView 控件使用由 ImageList 属性指定的 ImageList 控件,来存储显示于 Node 对象的位图和图标。任何时刻,TreeView 控件只能使用一个 ImageList。这意味着,当 TreeView 控件的 Style 属性被设置成显示图像的样式时,TreeView 控件中每一项的旁边都有一个同样大小的图像。

8.5        多媒体控件

1.  多媒体控件

     Multimedia MCI 控件管理媒体控制接口 (MCI) 设备上的多媒体文件的记录与回放。从概念上说,这种控件就是一组按钮,它被用来向诸如声卡、MIDI 序列发生器、CD-ROM 驱动器、视频 CD 播放器和视频磁带记录器及播放器等设备发出 MCI 命令。MCI 控件还支持 Windows (*.avi) 视频文件的回放。

       在允许用户从 Multimedia MCI 控件选取按钮之前,应用程序必须先将 MCI 设备打开,并在 Multimedia MCI 控件上启用适当的按钮。在 Visual Basic 中,应将 MCI Open 命令放到 Form_Load 事件中。

2.媒体播放器控件

可以播放各种多媒体文件,主要属性有:

(1) filename(待播放的文件名),可以在属性窗口中设置,也可以用代码实现。

(2) AutoStart(是否自动播放),默认是True。

(3) AutoRewind(是否自动循环),默认是False。

(4) PlayCount(文件播放遍数),默认是1。

 
 
 
 

 



8.6        图象列表(ImageList)和 图象组合框(ImageCombo)

1.图象列表

    ImageList 控件是包含 ListImage 对象的集合,该集合中的每个对象都可以通过其索引或关键字被引用。ImageList 控件不能独立使用,只是作为一个便于向其它控件提供图象的资料中心。

ImageList 控件的作用象图像的储藏室,同时,它需要第二个控件显示所储存的图像。第二个控件可以是任何能显示图像 Picture 对象的控件,也可以是特别设计的、用于绑定 ImageList 控件的 Windows 通用控件之一。这些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控件。为了与这些控件一同使用 ImageList,必须通过一个适当的属性将特定的 ImageList控件绑定到第二个控件。对于 ListView 控件,必须设置其 Icons 和 SmallIcons 属性为 ImageList 控件。对于 TreeView、TabStrip、ImageCombo、和 Toolbar 控件,必须设置 ImageList 属性为 ImageList 控件。

一旦 ImageList 与某个 Windows 通用控件相关联,就可以在过程中用 Index 属性或 Key 属性的值来引用 ListImage 对象。

当与 Windows 通用控件一起使用 ImageList 控件时,在将它绑定到第二个控件之前,按照希望的顺序将全部需要的图像插入到 ImageList。一旦 ImageList 被绑定到第二个控件 ,就不能再删除图像了,并且也不能将图像插入到 ListImages 集合中间。但是可以在集合的末尾添加图像。

2.图象组合框

      ImageCombo 控件是标准 Windows 组合框的允许绘图版本。控件列表部分中的每一项都可以有一幅指定的图片。它可以显示一个包含图片的项目列表,每一项可以有自己的图片,也可以对多个列表项使用相同的图片。

     除了支持图片之外, ImageCombo 还提供了一个对象和基于集合的列表控件。控件列表部分的每一项是一个不同的 ComboItem 对象,而且列表中的所有项组合起来构成 ComboItems 集合。这就使它容易一项一项地指定诸如标记文本、ToolTip文本、关键字值以及缩进等级等属性。

8.7        通用对话框控件

     Windows应用程序里的Open对话框,Save As对话框在各个应用程序里看起来都是一样的,通用对话框控件就可以提供这些对话框的标准功能。

1.Open对话框及Save As对话框

打开Open对话框使用ShowOpen方法,打开Save As对话框使用ShowSave方法。

Private Sub mnuOpen_Click ()
On Error GoTo ErrorHandler
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Text Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat|All Files (*.*)|*.*"
CommonDialog1.ShowOpen              ' 显示打开对话框
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub

      其中第三行决定了在文件格式类型栏里出现的文件类型。第五行需要一个自己的打开文件的过程,这个过程需要的参数就是通用对话框返回的文件名。通用对话框的 CancelError属性设为True的话,用户单击Cancel按钮将产生一个错误信息程序,凭借这个信息程序可以检测到用户的放弃操作。

2.Color对话框

    下面的过程可用用户选择的颜色作为窗体的底色。

Private Sub mnuColor_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub

3.Fonts对话框

   下面的过程可用字体对话框改变文本框的字体:

Private Sub mnuFonts_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.Flags = cdlCFBoth ' Flags property must be set to cdlCFBoth
CommonDialog1.ShowFont ' Display Font common dialog box.
Text1.FontName = CommonDialog1.FontName
Text1.FontSize = CommonDialog1.FontSize
Text1.FontBold = CommonDialog1.FontBold
Text1.FontItalic = CommonDialog1.FontItalic
Text1.FontUnderline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub

    代码的第三行出现了通用对话框的Flags属性决定了通用对话框的一些可选项,不过即使不赋值给Flags,代码也一样会按缺省的情况去执行的。

史翔 2005-02-25 10:25:31
re:[b]第九章[/b][b] VB[/b]...

第九章 VB的数据库操作
9.1    数据库的基础知识
1.计算机数据管理技术的发展
第一阶段:人工管理阶段,特点是数据不长期保存,没有软件系统对数据进行管理,没有文件的概念,一组数据对应一个程序。
第二阶段:采用文件管理方式,特点是数据不再是程序的组成部分,而是有组织、有结构地构成文件形式,形成数据文件;文件管理系统是应用程序与数据文件的接口。
第三阶段:数据库管理方式,特点是对所有数据实行统一、集中、独立的管理,数据独立于程序存在,并可以提供给各类不同用户使用。
2.数据库的基本概念
(1)   数据库(DataBase  DB)
       定义:是以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。
         特点:        
  b
具有最小的冗余度
 
                具有数据独立性
                实现数据共享
                安全可靠,保密性能好
(2)  数据库管理系统(DataBase Management System  DBMS)
定义:是操纵和管理数据库的系统软件。
功能:维护数据库、接收和完成用户程序或命令提出的访问数据库的各种请求。
数据语言:
z
v
数据定义语言(DDL): 用来建立所需的数据库(即设计库结构)
数据操作语言(DML): 用来对数据库进行查询和维护操作。
t
数据控制语言(DCL): 用来控制数据的访问权限及事务管理。
关系型数据库使用的标准语言是结构化查询语言(Structured Query Language, SQL)。
(3)  数据库系统(DataBase System  DBS)
定义; 以数据库应用为基础的计算机系统。
组成:一个完整的数据库系统由数据库、数据库管理系统、数据库管理员和应用程序组成。
数据库也可以这样划分其组成:
硬件:计算机硬件设备
软件:数据库管理系统 、操作系统、开发工具、应用程序
用户:应用程序设计员、终端用户、数据库管理员
 
分类
层次型数据库
网状型数据库
网状型数据库
 
分代
第一代  非关系型数据库系统,60年代末问世,包括层次型和网状型
第二代  关系型数据库系统(RDBS),70年代中期问世
第三代  对象-关系数据库系统(ORDBS 、OOBDS),80年代中期至今
  上述三个概念之间的联系:在数据库系统中通过数据库管理系统来建立和使用数据库。
3数据模型                    
     数据模型:即描述实体模型的数据。
        
数据模型的分类:
层次模型(采用树型结构)
网络模型(采用无向图型结构)
关系模型(采用二维表结构)
 
关系模型的性质:  
二维表的记录数随数据的增加而改变,但其字段数是相对固定的
二维表中的每一列均有唯一的字段名
二维表中不允许出现完全相同的两行
二维表中行的顺序、列的顺序均可以任意交换
4. 关系型数据库的基本结构
关系型数据库的基本结构是一张二维表,包括以下概念:
(1) 记录(Record:数据表中的每一行数据
(2) 字段(Field:数据表中的每一列,表头(第一行)的内容为字段名
(3) 数据表(Table:相关数据组成的二维表格
(4) 数据库(Database:相关数据表的集合
(5) 关系(Relation:相关表之间通过相关联的字段建立的联系。
 (6) 索引(Index):指按表文件中某个关键字段或表达式建立记录的逻辑顺序。它是由一系列记录号组成的一个列表,目的是提供对数据的快速访问。索引不改变表中记录的物理顺序
  索引关键字(索引表达式):用来建立索引的一个字段或字段表达式。
ngf
数据库和数据表可以通过数据库管理系统软件来建立,如:Access,Visual FoxPro,SQL Server 、Sybase、 Oracle。在VB环境下可以直接建立Access数据库。
  关系型数据表的特点

:(1)每一个字段不可再分解,也不能有名字相同的字段

                          
hgfhgfyh
(2)每一列中的数据都有相同的数据类型;
                     
hfyftytfyyy
(3)表中没有内容完全相同的行(记录)。
5.查询的概念
  查询(query):从相关数据表中选取符合特定要求的数据。
  创建方法:可以通过查询生成器创建一个查询,也可以在SQL窗口直接用SELECT—SQL命令写出查询。
9.2    数据库管理器
1.  数据库管理器介绍
在VB中可以通过“外接程序”菜单中的“可视化数据管理器”调出“VisData”数据库管理器窗口。
菜单选项
功能描述
文件
打开数据库
打开指定的数据库
新建
根据所选类型建立新数据库
导入/导出
从其他数据库导入数据表,或导出数据表及SQL查询结果
工作空间
显示注册对话框注册新工作空间,用新输入的用户名和密码从新的工作空间重新打开当前数据库。
压缩MDB
压缩指定的Access数据库,创建一个加密或解密文件。
修复MDB
修复指定的Access数据库
实用程序
查询生成器
建立、查看、执行和存储SQL查询
数据窗口设计器
创建数据窗体并将其添加到VB工程中
全局替换
创建SQL表达式并更新所选数据表中满足条件的记录
附加
显示当前Access数据库中所有附加数据表及连接条件
用户组/用户
查看和修改用户组、用户、权限等设置
System.mda
创建System.mda文件,以便为每个文件设置安全机制
性能选项
设置超时值
2. 建立数据库
数据库的基本操作:
创建数据表:
设计表名和表结构
输入记录
建立索引
数据维护:
增加记录
修改记录
删除记录
    创建数据表的主要步骤: 设计表结构 → 输入记录 → 建立索引 → 数据维护
  (1)设计表结构
启动可视化数据管理器 → 在database窗口中右击,从菜单中选择“新表” → 在表结构窗口中输入表名→ 添加字段 → 确定字段名称和属性、有效性规则 → 建立索引 →生成表结构。
   “添加字段”对话框各选项说明
选项名
描述
名称
即每个字段的名字(对所用字符没有什么限制)
类型
指该字段的数据特征,包括:Boolean、Byte、Integer、Long、Currency、Single、Double、Date/Time、Text、Binary(二进制型,存放图片)、Memo(备注型,存放长文本)
大小
字段宽度,指该字段所能容纳数据的的最大字节数
固定字段
字段宽度固定不变
可变字段
字段宽度可变
允许零长度
表示空字符串可作为有效的字段值
必要的
表示该字段值不可缺少
顺序位置
字段在表中的顺序位置
验证文本
当向表中输入无效值时系统显示的提示信息
验证规则
验证输入字段值的简单规则,目的是使所输数据符合设定的条件
默认值
在输入时设置的字段初始值,以减少输入重复性数据时的工作量
  (2)输入记录
        在database窗口中选中表名并右击,从菜单中选择“打开” →在数据表窗口输入记录(注意窗口样式)→ 单击“新增”→ 在窗口中输入记录并“更新” →重复……
  (3)  维护记录
在database窗口中选中表名并右击,从菜单中选择“打开” →单击“编辑”/“删除”/“新增”,即可完成对记录的修改、删除、添加操作。
3.  建立查询
建立查询就是在数据表中找到符合特定条件的记录并组成一张新表。
在database窗口中选中表名并右击,从菜单中选择“新查询” →在查询生成器中构造查询条件→单击“运行” →单击“保存”,给出查询结果文件名→“关闭”。
 查询生成器说明
各选项
描述
查询表达式
设置查询应该满足的基本条件,可以用and /or来设置应满足的多个条件
表/字段名
设置查询结果中将显示的字段名,单击一个加亮便选中了
前百分之几条
只显示查询结果中的前若干条记录
前N条记录
只显示查询结果中的前N条记录
“运行”按钮
执行查询命令,并显示出查询结果
“显示”按钮
用消息框显示SQL命令
“复制”按钮
将SQL命令复制到SQL窗口
“保存”按钮
将查询结果取个名并保存到数据库中
“清除”按钮
清除条件列表框中的查询条件
分组条件
将查询结果分组,一般每组只有一个记录
排序条件
将查询结果按顺序显示出来,ASC(升序)、DESC(降序)
连接条件
设置相关表之间的连接字段
9.3    数据控件
1. 数据控件的建立
从VB工具箱中单击Data控件,在窗体上画出数据控件即可。
2. 数据控件的属性
属性名称
作用
Connect
指定数据控件所要连接的数据库类型,VB默认的是Access的MDB数据库,也可以连接DBF、XLS、ODBC等数据库
DatabaseName
指定具体使用的数据库文件名,包括路径名
RecordSource
指定具体可访问的数据,这些数据构成记录集对象Recordset对象,可以是数据库中的单个表名、一个存储查询,也可以是SQL查询命令
RecordsetType
确定记录集类型,有三种: 0——Table(表); 1——Dynaset(动态,默认的) ;2——Snapshot(快照)
BofAction
当记录指针指向记录集的开始时,确定数据控件该采取的操作:
0——控件重定位到第一个记录
1——移过记录集开始位,定位到一个无效记录,触发数据控件对第一个记录的无效事件Validate
EofAction
当记录指针指向记录集的结束时,确定数据控件该采取的操作:
0——控件重定位到最后一个记录
1——移过记录集结束位,定位到一个无效记录,触发数据控件对最后一个记录的无效事件Validate
2——向记录集加入新的空记录,可以对新记录进行编辑,移动记录指针新记录写入数据库
绑定控件、数据控件、数据库之间的关系:
  绑定控件的属性
DataSource——通过一个有效的数据控件连接到一个数据库上。
DataField——将数据库中的有效字段连接到绑定控件上。
除了常规控件外,可以与Data数据控件绑定的控件有:
控件名称
部件名称
常用属性
MSFlexGrid
Microsoft  FlexGrid Control 6.0(OLE DB)
DataSourse
DBCombo
Microsoft Data Bound List Controls 6.0
DataField、DataSource、ListField、RowSource、BoundColumn
DBList
DBGrid
Microsoft Data Bound Grid Control 5.0(SP3)
DataSourse

史翔 2005-02-25 10:25:46
re:[b]3. [/b][b]数据控件的...

3.   数据控件的事件  
事件名称
触发时间
Reposition
发生在一条记录成为当前记录后。只要将记录指针从一条记录移动到另一条记录就会触发。
Validate
在一条不同的记录成为当前记录之前,Update 方法之前(用 UpdateRecord 方法保存数据时除外);以及 Delete、Unload 或 Close 操作之前会发生该事件。它检查被数据控件绑定的控件内的数据是否发生变化。
语法:Private Sub Data_Validate(Action As Integer, Save As Integer) …… End Sub
   Validate事迹的 Action参数
Action
描述
Action
描述
0
取消对数据控件的操作
6
Update 操作
1
MoveFirst 方法
7
Delete 方法
2
MovePrevious 方法
8
Find 方法
3
MoveNext 方法
9
设置Bookmark 属性
4
MoveLast 方法。
10
Close 的方法
5
AddNew 方法
11
卸载窗体
4.  数据控件的常用方法
方法名称
作用
示例
Refresh
激活数据控件,使各用户对数据库的操作有效。
Data1.Refresh
UpdateControls
将数据从数据库中重新读到数据控件绑定的控件内,通过它可以终止用户对绑定控件内数据的修改。
放弃修改按钮代码:
Data1. UpdateControls
UpdateRecord
强制数据控件将绑定控件内的数据写入到数据库中,不再触发Validate事件
确认修改按钮代码:
Data1. UpdateRecord
5. 记录集的属性与方法
名称
作用
属性
AbsolutePostion
返回当前指针值,如果是第一条记录,其值为0;是只读属性
Bof / Eof
Bof判断记录指针是否在首记录之前,若是则为True;Eof判断记录指针是否在末记录之后,若是则为True
Bookmark
用于设置或返回当前指针的标签,可以用在在程序中重定位记录集的指针,其值采用字符串类型。
NoMatch
在记录集中进行查找时,如果找到相匹配的记录,则为Falue,找不到则为True。
RecordCount
对Recordset对象中的记录记数,为了准确起见,在记数前用MoveLast方法将记录指针移到最后一条记录上;是只读属性。
方法
Move
用于移动记录指针,共有5种方法:
MoveFirst——将指针移到第1条记录
MoveLast——将指针移到最后一条记录
MoveNext——将指针移到下一条记录
MovePrevious——将指针移到上一条记录
Move  n——将指针向前或向后移动n条记录
Find
在指定的Dynaset或 Snapshop类型的Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录,共有4种方法:
FindFirst——从记录集的开始查找满足条件的第1条记录
FindLast——从记录集的尾部向前查找满足条件的第1条记录
FindNext——从当前记录开始查找满足条件的下一条记录
FindPrevious——从当前记录开始查找满足条件的上一条记录
语法格式举例:
Data1.Recordset.FindFirst "课程名='计算机基础' "
Find方法支持通配符,默认情况下忽略大小写,可以添加说明改变默认设置: Option Compare Text (与大小写无关)
       Option Compare Binary (与大小写有关)
如果找不到相匹配的记录,当前记录保持在查找的始发处;如果找到了,则指针定位到该记录。
Seek
使用该方法必需打开表的索引,它在Table表中查找与指定索引规则相符的第一条记录,并使其成为当前记录。
语法格式举例:
Data1.Recordset.Index= "课程名"
Data1.Recordset.Seek "=", "计算机基础"
6. 利用数据控件对数据库进行增、删、改操作
操作项目
操作方法
注意事项
增加记录
1) 调用AddNew方法:Data1.Recordset. AddNew
2) 给各字段赋值:Recordset.Fields("字段名")=值或在绑定控件中直接输入内容
3) 调用Update方法,将缓冲区内的数据写入数据库:
       Data1.Recordset. Update
4) 调用MoveLast方法显示新记录:
     Data1.Recordset. MoveLast
如果缺少第3)步而将指针移动到其他记录或关闭了记录,则所做的输入全部丢失;若没有第4)步。虽然加入了新记录,但记录指针自动返回到添加新记录前的位置上,并不显示新记录。
删除记录
1)    定位被删除记录使之成为当前记录(用Move或Find方法)
2)    调用Delete方法:Data1.Recordset. Delete
3)    调用MoveNext方法移动记录指针
使用Delete方法时,当前记录立即删除,但被数据库约束的绑定控件仍旧显示该记录的内容,故必须用第3)步刷新绑定控件。
修改记录
1) 调用Edit方法:Data1.Recordset. Edit
2) 给各字段赋值:在绑定控件中直接修改
3) 调用Update方法,确定所做的修改:
      Data1.Recordset. Update
如果要放弃对数据的所有修改,可在第3)步之前用Refresh方法,重读数据库,刷新记录。
9.4     ADO数据控件
1. 什么是ADO
ADO(ActiveX Data Object)数据访问接口是微软处理数据库信息的最新技术,它是一种ActiveX对象,采用了OLE DB(动态连接与嵌入数据库)的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放式数据库互连ODBC三种方式的扩展。
要使用ADO对象必需先为当前工程引用ADO对象库,方法是: 执行“工程”菜单中的“引用”命令,在对话框中选中“Microsoft ActiveX Data Object 2.0 Library”。
  ADO对象描述
对象名
描述
Connection
连接数据来源
Command
从数据源获取所需数据的命令信息
Recordset
所获取的一组记录组成的记录集
Error
在访问数据库时,由数据源所返回的错误信息
Parameter
与命令对象相关的参数
Field
包含了记录集中某个字段的信息
2.使用ADO数据控件
 (1)  添加ADO数据控件
从“工程”菜单中选择“部件”命令,在对话框中选中“Microsoft ADO Data ControlS 6.0(OLE DB)”,将其添加到工具箱,并在窗体上拖划出ADO数据控件。
 (2)  ADO数据控件的基本属性
属性名
作用
ConnectionString
用来与数据库建立连接,它包括4个参数:
Provide——指定数据源的名称
FileName——指定数据源所对应的文件名
RemoteProvide——在远程数据服务器打开一个客户端时所用的数据源名称
RemoteServer——在远程数据服务器打开一个主机端时所用的数据源名称
RecordSource
确定具体可访问的数据,可以是数据库中的单个表名、一个存储查询或一个SQL查询字符串
ConnectionTimeout
设置数据连接的超时时间,若在指定时间内连接不成功则显示超时信息
MaxRecords
确定从一个查询中最多能返回的记录数
 (3)  ADO数据控件的属性设置
1)先在窗体上放置一个ADO数据控件
2)在ADO属性窗口中单击ConnectionString属性右边的…按钮,从对话框中选择连接数据源的方式:
       使用连接字符串——单击“生成”按钮,通过选项设置系统自动产生连接字符串
        使用Data Link文件——通过一个连接文件来完成
        使用ODBC数据资源名称——在下拉列表中选择某个创建好的数据源名称作为数据来源对远程数据库进行控制。
3)在ADO属性窗口中单击RecordSource属性右边的…按钮,在“命令类型”中选择2——adCmdTable,在“表或存储过程名称”中选择所需要的表。
以上2)、3)可以合并成一步:在ADO控件上单击右键,从快捷菜单中选择ADODC属性,直接在属性页对话框中进行所有设置。
 (4) ADO数据控件的方法和事件
      与Data数据控件完全相同。
 (5) 在ADO上新增绑定控件
可以从“工程”的“部件”中添加如下绑定控件:
控件名称
部件名称
常用属性
DataGrid
Microsoft DataGrid Control 6.0(OLE DB)
DataSource
DataCombo
Microsoft DataList Controls 6.0(OLE DB)
DataField、DataSource、ListField、RowSource、BoundColumn
DataList
MSChart
Microsoft Chart Control 6.0(OLE DB)
DataSource
3.  使用数据窗体向导
    从“外接程序”菜单中选择“外接程序管理器”,在对话框中选中VB6数据窗体向导,“加载”并“确定”,再从“外接程序”菜单中选择“数据窗体向导”,然后根据系统提示逐步操作即可创建所需要的数据窗体,系统自动把所创建的窗体加到工程中。
9.5     结构化查询语言
1.SQL的基本组成
SQL语言由命令、子句、运算、函数等组成:
 (1) SQL命令
命令
功能
CREATE
用于建立新的数据表结构
DROP
用于删除数据库中的数据表及其索引
ALTER
用于修改数据表结构
SELECT
用于查找符合特定条件的某些记录
INSERT
用于向数据表中加入数据
UPDATE
用于更新特定记录或字段的数据
DELETE
用于删除记录
 (2) SQL子句
子句
功能
FROM
用于指定数据所在的数据表
WHERE
用于指定数据需要满足的条件
GROUP BY
将选定的记录分组
HAVING
用于说明每个群组需要满足的条件
ORDER BY
用于确定排序依据
INTO
查询结果去向
 (3)  SQL运算符
逻辑运算符
And (与)、 Or(或)、 Not(非)
比较运算符
   >=    =    
 (4)   SQL函数
AVG
COUNT
SUM
MAX
MIN
求平均值
计数
求和
求最大值
求最小值
2. SQL语句的应用
语句功能
语法格式
建立数据表
CREATE  TABLE 数据表名 (字段名1  数据类型(长度),  字段名2  数据类型(长度),……)
举例:create  table  student(xh  text(9),  xm  text(8) , cj  single(4), nl integer(2))  
 建立含有xh、xm、cj、nl  4个字段的student表
添加字段
ALTER  TABLE  数据表名 ADD  COLUMN  字段名  数据类型(长度)
举例:alter  table  student  add column  xb  text(2)  '在学生表中添加性别字段
删除字段
ALTER  TABLE  数据表名 DROP  COLUMN  字段名
举例: alter  table  student  drop  column  nl  '将学生表中的年龄字段删除
数据查询
SELECT 字段名表 FROM 子句  WHERE 子句 GROUP BY  子句HAVING  子句 ORDER BY 子句 INTO 子句
举例:select  xh, xm  from  student  where  xb="男"  order  by  xh
从学生表中查询性别为男的学生,显示其学号和姓名并使结果按学号升序排列。
添加记录
INSERT INTO 数据表名字段名1,字段名2…… VALUES数据1,数据2……
举例:insert  into  student (xh, xm, xb)  values("015200101", "王小二", "男")
删除记录
DELETE  FROM 数据表名 WHERE 条件表达式
举例:delete  from  student  where  xb="男"
更新记录
UPDATE  数据表名  SET  新数据值  WHERE  条件表达式
举例:update  student  set  cj=cj+5  where  xb="女"
9.6    报表制作
1.  报表的概念
利用报表可以把数据表中的数据按一定的格式输出到屏幕上或打印到纸上。
2.  制作报表的方法
在VB6.0中可以利用报表设计器来制作报表,从“工程”中选择“添加data report”,将报表设计器加入到当前工程中,报表由5部分组成:
  报表标头——每份报表只有一个,可以用标签建立报表名。
  页标头——每页有一个,即每页的表头,如字段名。
  细节——需要输出的具体数据,一行一条记录。
  页脚注——每页有一个,如页码。
  报表脚注——每份报表只有一个,可以用标签建立对本报表的注释、说明。
      使用报表设计器处理的数据需要利用数据环境设计器创建与数据库的连接, 从“工程”菜单中选择 “添加Data Enviroment”,在连接中选择指定的数据库文件,完成与数据库的连接,然后产生Command对象连接数据库内的表。
  制作报表的步骤:
(1) 新建工程,在窗体上放置两个命令按钮;
(2) 从“工程”菜单中“添加Data Enviroment”,右击Connection1,在属性中选择“Microsoft Jet 4 OLE DB Provider”,在“连接”中指定数据库;
(3) 再次右击Connection1,选则“添加命令”,创建Command1对象,右击Command1,在属性中设置该对象连接的数据源为需要打印的数据表;
(4) 在从“工程”菜单中“添加Data Report”,在属性窗口中设置DataSource为数据环境DataEnviroment1对象,DataMember为Command1对象,即指定数据报表设计器DataReport1的数据来源;
(5) 将数据环境设计器中Command1对象内的字段拖到数据报表设计器的细节区;
(6) 利用标签控件在报表标头区插入报表名,在页标头区设置报表每一页顶部的标题;
(7) 利用线条控件在报表内加入直线,利用图形控件和形状控件加入图案或图形;
(8) 利用DataReport1对象的Show方法显示报表,在窗体Click事件加代码:DataReport1.Show
(9) 利用预览窗口按打印按钮可以打印报表;
(10)       利用预览窗口工具栏上的导出按钮可以将报表内容输出成文本文件或Html文件;也可以利用DataReport1对象的ExportReport方法将报表内容输出成文本文件或Html文件。
制作报表的简单方法是从“外接程序”中选择报表向导来设计报表。
9.7    MIS系统设计示例
学生成绩管理系统的设计
1.    建立工程文件
2.    设计系统主界面,验证用户身份
3.    建立Access数据库,输入若干记录
4.    设计带菜单的主窗体,把其他窗体组织起来
5.    根据需要完成系统功能,设计带数据控件的各种窗体
6.    调试、修改
7.    生成EXE文件

史翔 2005-02-25 10:26:20
re:[b]常见错误和难点分析[/b][b...

常见错误和难点分析
1.在选择结构中缺少配对的结束语句
对多行式的If块语句中,应有配对的End If语句结束。否则,在运行时系统会显示"块 If没有End If"的编译错误。同样对Select Case语句也应有与其相对应的End Select语句。
2.多边选择ElseIf关键字的书写和条件表达式的表示
多边选择ElseIf子句的关键字ElseIf之间不能写有空格,即不能写成Else If。
在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。例如,已知输入某课程的百分制成绩mark,要求显示对应五级制的讦定,评定条件如下:
 有以下几种表示方式,语法上都没有错,但执行后结果有所不同,请分析哪些正确? 哪些错误?
下面给出的答案中,方法一、二、五正确,其余错误,请分析各自的原因。
方法一:
方法二:
方法三:
方法四:
         方法五:
If mark>=90Then
         Print"优"
ElseIf mark>=80Then
         Print"良"  
ElseIf mark>=70Then
         Print"中"  
ElseIfmark>-60Then
         Print"及格"
Else
         Print"及格"
End If
If mark
Print"不及格"
ElseIf mark
         Print"及格"
ElseIf mark
         Print"中"  
ElseIf mark
         Print"良"  
Else
         Print"优"
End If
If mark>=60Then
         Print"及格"
ElseIf mark>=70Then
         Print"中"
Elselfmark>=80Then
         Print"良"
Elselfmark>=90Then
         Print"优"
Else
         Print"不及格"
End If
If mark>=90Then
         Print"优"  
ElseIf  80
         Print"良"
ElseIf  70
         Print"中"
ElseIf  60
         Print"及格"
Else
         Print"不及格"    
End If        
If mark>=90Then
         Print"优"
ElseIf 80
         Print"良"
ElseIf 70
         Print"中"
ElseIf 60
         Print"及格"
Else
         Print"不及格"
End If
3.Select Case语句的使用
(1)    "表达式列表i" 中不能使用"变量或表达式"中出现的变量。
例如,上述多边选择的例子改为Select Case语句实现,方法一Case子句中出现变量mark,运行时不管mark的值多少,始终执行Case Else子句,运行结果不正确;方法二、方法三正确。
方法一:
方法二:
方法三:
Select Case mark    
       Case mark>=90     
              Print"优"
       Case mark>=80
              Print"良"
       Casemark>=70       
              Print"中"
       Case mark>=60
              Print"及格"    
       Case Else
              Print"不及格"
End Select
Select Case mark    
Case Is>=90  
       Print"优"
Casels>=80    
       Print"良"       
Case Is>=70  
       Print"中"
Case Is>=60  
       Prim"及格"    
Case Else
       Print"不及格"
End Select
Select Case mark
Case Is>=90
       Print"优"
Case 80 To 89
Print"良"
Case 70 To 79
       Print"中"
Case 60 TO 69
       Print"及格"
Case Else
       Print"不及格"
End Select
(2)    在"变量或表达式"中不能出现多个变量。
实验三第5题对三门课程奖学金的判断,只能用If语句的多边选择,而不能用SelectCase语句实现。例如,有人用如下语句表示:
       Select Case markl,mark2,mark3
              Case (markl+mark2+mark3)/3>=95
                     Print"一等奖"
       End Select
这样就会在 "Select Case markl,mark2,mark3" 语句行出现编辑错误, 同时
Case (markl+mark2 +mark3)/3>=95书写也错误。
第四章  常见错误和难点分析
1. 不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。
例如,以下循环语句不执行循环体:
For i=10 To 20 Step-1  ' 步长为负,初值必须大于等于终值,才能循环
For i=20 To10  ' 步长为正,初值必须小于等于终值,才能循环
Do While False  ' 循环条件永远不满足,不循环
例如,以下循环语句死循环:
For i=10 To 20 Step 0       ' 步长为零,死循环
Do While 1  ' 循环条件永远满足,死循环
2.循环结构中缺少配对的结束语句
For…Next语句没有配对的Next语句;Do语句没有一个终结的Loop语句等。

史翔 2005-02-25 10:26:30
re:[b]3[/b][b].循环嵌套时,内外...

3.循环嵌套时,内外循环交叉
       For I=1 to 4
              For j=1 to 5
              …
              Next i
       Next j
上述循环的交叉运行时显示"无效的Next控制变量引用"。
4.累加、连乘时,存放累加、连乘结果的变量赋初值问题
(1) 一重循环
在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。
例如,求1~100的3的倍数和,结果放入Sum变量中,如下程序段,输出结果如何?应作如何改进?
       Private SubForm_Click()
              For i=3 To 100 Step 3
                     Sum=0
                     Sum=Sum+i
              Next i
              Print Sum
       End Sub
(2) 多重循环
在多重循环中,存放累加、连乘结果的变量初值设置放在外循环语句前,还是内循环语句前,这要视具体问题分别对待。
例如,期末30位学生参加三门课程的考试,求每个学生的三门课程的平均成绩如下程序能否实现?
       aver=0
       For i=1 To 30
              For j=1 To 3
                     m=InputBox("输入第"&j&"门课的成绩")
                     aver=aver+m
              Next j
              aver=aver/3
              Print aver
       Next I
第五章  常见错误和难点分析
1.Dim数组声明
有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:
     n=InputBox("输入数组的上界")
     Dim a(1 To n) As Integer
程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:
    Dim a() As Integer
     n=InputBox ("输入数组的上界")
     ReDim a(1 To n)As Integer
2.数组下标越界
引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。例如,要形成有如下30项的斐波那契数列:
1,1,2,3,5,8,13,21,34,…,317811,514229,832040
正确的程序段如下:
Dim a(1 To 30) As Long, i%
若将For i=3 To 30改为For i=1 To 30,程序运行时会显示"下标越界"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下界1。
同样若将上例:a(i)+a(i-2)+a(i-1) 语句改为:a(i+2)=a(i)+a(i+1)
程序运行时也会显示"下标越界"的出错信息,这时是数组下标大于上界30。
3.数组维数错
数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3×5的矩阵:
      Dim a(3,5) As Long
              For i=1 To 3
                     For j=1 To 5
                            a(i)=i*j
                            Print a(i);"";
                     Next j
              Print
       Next i
程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。
4.Aarry函数使用问题
Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。
例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。
Aarry函数表示方法
错误的Aarry函数赋值,
改正的Aarry函数赋值
Dim a(1 To 8)  a=Array(1,2,3,4,5,6,7,8)
Dim a( ) a=Array(1,2,3,4,5,6,7)
Dim a As Integer  a=Array(1,2,3,4,5,6,7)
Dim  aa=Array(1,2,3,4,5,6,7)
Dim aa()=Array(1,2,3,4,5,6,7)     
Dim  aa=Array(1,2,3,4,5,6,7)
5.如何获得数组的上界、下界
 Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问。
在上例中,若要打印a数组的各个值,可通过下面程序段实现:
For i=Lbound(A) To Ubound(A)
          Print a(i)
Next l
6.给数组赋值
VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1
这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:
Dim数组名2() 或Dim数组名2 (下标)
程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。
第五章      
5.1  知识要点
1.数组的概念
数组:存放具有相同性质的一组数据,也就是数组中的数据必须是同一个类型和性质。
数组元素:数组中的某一个数据项。数组元素的使用同简单变量的使用。
2.静态数组的声明
静态数组:在声明时已确定了数组元素个数。
声明形式:Dim数组名([下界To]上界[,[下界To]上界[,…]])As  类型
此语句声明了数组名、数组维数、数组大小、数组类型。
[注意] 下界、上界必须为常数,不能为表达式或变量:省略下界,默认为0,也可用Option Base语句重新设置下界的值。
3.动态数组的声明
声明形式: Dim数组名 ()
            ReDim  [Preserve]数组名([下界To]上界[,[下界To]上界[,…]])
[注意]
此时的上界、下界可以是赋了值的变量或表达式。若有Preserve关键字,表示当改变原有数组最末尾的大小时,使用此关键字可以保持数组中原来的数据。
4.控件数组
即相同类型的控件组成的数组。
控件数组的建立:在设计时的窗体上,通过对某控件的复制和粘贴操作:在程序运行时通过Load方法实现。
控件数组元素:由控件的Index属性值表示数组的F标。
5.数组的操作
应掌握的基本操作有:数组初始化、数组输入、数组输出、求数组中的最大(最小)元素及下标、求和、平均值、排序和查找等。
5.2  常见错误和难点分析
1.Dim数组声明
有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:
     n=InputBox("输入数组的上界")
     Dim a(1 To n) As Integer
程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:
    Dim a() As Integer
     n=InputBox ("输入数组的上界")
     ReDim a(1 To n)As Integer
2.数组下标越界
引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。例如,要形成有如下30项的斐波那契数列:
1,1,2,3,5,8,13,21,34,…,317811,514229,832040
正确的程序段如下:
Dim a(1 To 30) As Long, i%
若将For i=3 To 30改为For i=1 To 30,程序运行时会显示"下标越界"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下界1。
同样若将上例:a(i)+a(i-2)+a(i-1) 语句改为:a(i+2)=a(i)+a(i+1)
程序运行时也会显示"下标越界"的出错信息,这时是数组下标大于上界30。
3.数组维数错
数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3×5的矩阵:
      Dim a(3,5) As Long
              For i=1 To 3
                     For j=1 To 5
                            a(i)=i*j
                            Print a(i);"";
                     Next j
              Print
       Next i
程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。
4.Aarry函数使用问题
Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。
例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。
Aarry函数表示方法
错误的Aarry函数赋值,
改正的Aarry函数赋值
Dim a(1 To 8)  a=Array(1,2,3,4,5,6,7,8)
Dim a( ) a=Array(1,2,3,4,5,6,7)
Dim a As Integer  a=Array(1,2,3,4,5,6,7)
Dim  aa=Array(1,2,3,4,5,6,7)
Dim aa()=Array(1,2,3,4,5,6,7)     
Dim  aa=Array(1,2,3,4,5,6,7)
5.如何获得数组的上界、下界
 Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问。
在上例中,若要打印a数组的各个值,可通过下面程序段实现:
For i=Lbound(A) To Ubound(A)
          Print a(i)
Next l
6.给数组赋值
VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1
这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:
Dim数组名2() 或Dim数组名2 (下标)
程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。

查看完整版本: » VB基础教程


Powered by 夢清雲淡社區  © 2005-2008 http://sxhouse.org/

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
全国计算机二级VB复习要点
VB基础教程
VF知识点总结
Asp.net中的ViewState用法
vb6.0总结
【小崔课堂】计算机二级ACCESS 笔记重点
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服