AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VB编程

理解与掌握ACCESS

51自学网 http://www.wanshiok.com

 

---- 2. 理解记录来源(Record Source)

---- 在Foxpro 中,创建屏幕文件之前应先打开相关的表,建立表与表之间的关系,屏幕文件建立之后在保存时系统会询问是否保存环境(Environment),若保存环境则系统保存了打开的表,生成程序代码中包含有打开和关闭表的命令。ACCESS 中窗体的“数据环境”被称为记录来源(Record Source),记录源可以是表、查询或SQL 的SELECT 语句。ACCESS 的记录来源比Foxpro 的“数据环境”提供了更大的灵活性,当ACCESS 窗体的记录来源是相互?关联”的若干表时,ACCESS 中通过建立查询或是使用SQL SELECT 语句作为记录来源,而查询与SELECT语句指定了相关的表及表间关系。

---- 建立Foxpro 的屏幕文件需先打开相关表并保存“数据环境”才能在生成程序时包含有打开表的代码行,ACCESS 窗体的记录来源只是在窗体的记录来源属性中给出表、查询名字或SQL SELECT 语句,记录来源并不生成程序代码。窗体在打开时自动处理表、查询及SELECT 语句的数据,并没有什么命令或语句来处理表、查询的打开问题。

---- 3. 理解控件、属性及事件过程

---- Foxpro 屏幕生成器界面中添加的文本框(TextBox)、列表框(ListBox)等项目在生成程序后对应内存变量或字段变量,屏幕生成器中对文本框等项目的许多设置形成了生成代码的@ ..GET语句的许多子句如:ENABLE 、DISABLE 、FONT、STYLE、DEFAULT、MESSAGE、RANGE 、COLOR 等,屏幕生成器中输入的代码片段(Code Snippet)形成了程序中的自定义函数或过程和@単et 语句的VALID、WHEN 等子句。
ACCESS 中,相当Foxpro 于屏幕生成器中文本框等项目的称之为控件(CONTROL)。Foxpro 中@単et 语句的子句在ACCESS 中是通过控件的属性来实现的,例如:
Foxpro 中的@ .... Get text disable 语句,在ACCESS 中是
将text 控件的enabled 属性值设置为False( 否);Foxpro中SHOW GET TEXT ENABLE 在ACCESS 中用赋值语句Me!text.enabled=true 改变text 控件的属性。Foxpro 中的代码片段在ACCESS 中是通过事件过程实现的,例如:Foxpro 中@匞et text valid check() 语句中包含有Valid 子句和check() 自定义函数,实现同样的功能在ACCESS 中在text 控件的Before Update( 或After Update)属性值选择‘[ 事件过程]'并输入相应的程序代码。常见的Foxpro @匞ET 语句的子句与ACCESS 的控件属性对应关系如下:

Foxpro 子句
ACCESS 控件属性
FUNCTION
Format 、Input Mask 属性
PICTURE
Format 、Input Mask 属性
FONT
Font color name size weight italic underline 等属性
STYLE
Font italic underline 等属性
DEFAULT
Default Value
ENABLED|DISABLE
Enabled
RANGE
Validation Rule、Validation Text
SIZE
Left 、top、height、width
VILID
Before Update、After Update
WHEN
On enter 、On Got focus

---- 1. 在窗体中“移动记录指针”

---- 通过foxpro 屏幕生成器创建的用户界面中常常包含用于移动记录的按钮,通过单击按钮改变屏幕或窗口中当前记录,foxpro 中实现该功能的方法一般是在按钮变量的valid 子句的函数中增加指针移动语句如:skip、goto 、locate 等。XBase用户初次使用ACCESS 窗体时欲实现同等功能但往往不知如何下手,ACCESS 中实现窗体中记录导航可以通过以下三种方法:

   在窗体的左下角增加记录导航控制按钮(navigation button)使用Goto Record 宏或Find Record 宏使用数据访问对象(DAO)改变当前窗体的记录

---- 若只是在窗体中前后移动记录,不需要编写程序,在窗体的设计视图将窗体的navigation button值设置为true,则在窗体时就会出现导航按钮,用户通过单击导航按钮前移、后移记录。若想将记录移到特定的记录则必须通过用宏或VB 编程实现,例如:单击窗体中的CMD 按钮下移三个记录则在CMD 按钮的on click 事件过程中输入如下VB 语句:

---- DoCmd.GoToRecord ,,,3

---- 下面的示例在当前窗体中使用记录集及FindFirst 方法将记录定位到“姓名”字段值为?张三”的记录:

Dim rst As Recordset
    Dim strSearchName As String
    Set rst = Me.RecordsetClone
    strSearchName = " 张三"
    rst.FindFirst " 姓名= " & strSearchName
        If rst.NoMatch Then
            MsgBox " 没找到"
        Else
            Me.Bookmark = rst.Bookmark
        End If
    rst.Close


---- 程序中Me.RecordsetClone 是由窗体的RecordSource属性指定的基础查询或基表的一个副本,Bookmark是记录集的书签,用来唯一标识窗体基表、基础查询或SQL 语句中的特定记录。例子中FindFirst方法先在窗体记录来源的记录集副本中定位记录,然后再将窗体的记录的位置移动到相同的位置。

---- 壹、xBase 中的常用命令在ACCESS 中如何实现

---- 许多xBase 用户初次使用ACCESS 时常常在ACCESS 中查找与xBase 命令相当的语句、功能或实现方法,下表给出了常用的xBase 命令所对应的ACCESS 宏命令及VB 语句或实现方法:

XBase 命令
ACCESS 宏命令
ACCESS VBA 语句
ACCESS 操作
USE < 表>

OpenRecordset 方法
通常不需要,处理表记录时用
BROWSE/EDIT
OpenTable
Docmd.opentable
在数据库窗口直接打开表
INDEX ON

指定表字段的索引属性
SORT ON

通过工具栏的按钮或菜单上命令
REPLACE

使用SQL 语句
SUM AVER 等

Dsum() 等函数
使用SQL 语句
GOTO
GotoRecord
Move 方法
使用记录导航按钮
SKIP
GotoRecord
Move 方法
使用记录导航按钮
LOCATE

FindFirst 方法
通过工具条或菜单命令查找与过滤操作
TOTAL

使用SQL 语句
壹、ACCESS 中的数据类型

---- xBase 用户在初次使用ACCESS 时对ACCESS 表的字段类型特别是数值型字段类型不适应。正是由于对ACCESS 的数据类型缺乏足够的了解,使得很多用户在开发过程中出现了一些问题。ACCESS与xBase 表的字段类型及其对应关系见下表:

ACCESS 中表的字段类型
xBase 中库的字段类型
字符型(Text)
字符型(Character)
数值型( 短整型、长整型、单精度、双精度)
数值型(Numeric)
货币型(Currency)
数值型(Numeric)
备注型(Memo)
备注型(Memo)
日期时间型(date/Time)
日期型(Date)
逻辑型(Yes/No)
逻辑型(Logical)
OLE 对象型(OLE Object)
通用型(General)


---- XBase 用户初次使用ACCESS 时常遇到的问题之一是ACCESS 表中的数值型字段类型问题,在xBase的DBF 文件中定义数值型字段需给出字段类型、宽度和小数位数,在记录的数值型字段存放数据时,xBase 只保存规定的小数位数并自动处理四舍五入问题,ACCESS 中表的数值型字段同xBase 的数值型字段不同,在表中的字段存放数值型数据需将字段设置为短整型、长整型、单精度、双精度或货币型中的一种,在数值字段保存数据时不能保存固定长度的小数位数,也不能自动处理小数的四舍五入问题。尽管字段属性中有DecimalPlaces 和Format,但这两个属性只是确定数据的显示方式而不是保留特定的小数位数,用户必须在保存数值数据时自行处理保留的小数位数及四舍五入问题。

---- XBase 用户使用ACCESS 表时常遇到另一个问题是字段的NULL 值问题,xBase 中,若字段没输入值,则字符型字段为空格串、数值型字段为零值;ACCESS 中,若字段没输入值则字段的值为NULL(空值),NULL 是ACCESS 中的特殊常量表示没值,NULL 不能赋予非Variant 变量。通过DAO 访问记录的字段时,使用NZ()函数将NULL 转换为字符型空串或数值型零值。

 
 

上一篇:显示数据库记录  下一篇:基于VB的通用折行打印程序