Microsoft Access 2003是微软官方推出的基于Windows的桌面关系数据库管理系统,该系统提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象,提供了多种向导、生成器、模板,并且将数据存储、数据查询、界面设计、报表生成等操作规范化,为建立功能完善的数据库管理系统提供了方便。它结合了 Microsoft Jet Database Engine 和图形用户界面两项特点,access 2003免激活版是 Microsoft Office 的系统程式之一。
Access能够存取 Access/Jet、Microsoft SQL Server、Oracle,或者任何 ODBC 兼容数据库内的资料。熟练的软件设计师和资料分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的“进阶用户”则能使用它来开发简单的应用软件。虽然它支援部份面向对象(OO)技术,但是未能成为一种完整的面向对象开发工具。
一、存储方式单一
Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件种,便于用户的操作和管理。
二、面向对象
Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。
三、界面友好、易操作
Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。
四、集成环境、处理多种数据信息
Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。
五、Access支持ODBC(开发数据库互连,Open Data Base Connectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。
Access 2003 Basic提供了一个丰富的开发环境。这个开发环境给你足够的灵活性和对Microsoft Windows应用程序接口的控制,同时保护你使你免遭用高级或低级语言开发环境开发时所碰到的各种麻烦。不过,许多优化、有效数据和模块化方面只能是应 用程序设计者才能使用。开发者应致力于谨慎地使用算法。除了一般的程序设计概念,还有一些特别的存储空间的管理技术,正确使用这些技术能够提高应用程序的 执行速度,减少应用程序所消耗的存储资源。
提高速度和减少代码量
你能够用几种技巧来提高你的编码速度,但是却找不到有效的算法的替代者。接下来的这几点建议能够提高你的编码速度同时又减少你的应用程序消耗的存储空间。
用整形数进行数学运算
即 使Access 2003 会使用一个联合处理器来处理浮点型算术,整型数算术也总是要快一些。当你的计算不含有小数,尽量使用整型或长整型而不是变量或双整型。整型除法同样也要比 浮点除法要快。在使用其他一些有效的数据类型时会警告:没有任何东西能够替换有效的运算法则。
避免使用过程调用
避免在循环体中使用子程序或函数调用。每一次调用都因额外的工作和时间而给编码增大了负担。每一次调用都要求把函数的局部变量和参数压栈,而栈的大小是固定的,不能随便加大,并且同时还要于Access 2003共享。
谨慎使用不定长数据类型
不定长数据类型提供了更大的灵活性,比如说许可正确处理空值和自动处理溢出。另外这种数据类型比传统的数据类型要大并消耗更多的存储空间。前面还曾经提到过,不定长数据类型的变量在数学计算中比较慢。
用变量存放属性
对 变量进行查找和设置都比对属性进行这些操作要快。假如你要得到或查阅一个属性值许多次,那么把这个属性分配给一个变量,并用这个变量来代替属性,那么你的 代码将要运行快得多。例如,在一个循环中,你查阅某表格中得一个控制的属性,那么在循环外把属性分配给一个变量,然后在循环中用查询一个变量来代替查阅一 个属性的方法要比较快。
预载表格
当 你的应用程序启动并且把它们的可见属性设置位‘false’时,假如你安装了你所有的表格,那么你的应用程序的性能会让你感觉挺快。当你需要显示一个表格 时,你只需要把该表格的可见属性设置为‘true’,这要比安装一个表格要快得多。需要记住的是,为你安装的每个表格,你都要从应用程序的全局堆中消耗存 储空间。
通过使用Access Basic能够增加应用程序的执行速度,减少编码量,同时也减少在为Microsoft Windows应用程序接口编程时、在开发应用程序中遇到的问题的技术。谨慎地使用变量和它所占用的存储空间能有效地减少一个应用程序所消耗的资源,同时 也全面提高了它的性能。 不正确地调用Windows应用程序接口也许会产生一些意想不到的副作用,以及潜在地对一个应用程序的代码及数据段的破坏。因此 正确地使用一个空的32位指针在Access 2003 中是十分必要的。
当对表格和报表进行操作时,Access 2003有一个无正式文本的特性。这个特性许可你从设计视窗性质sheet window中进行过程调用,调用的方法时同时按下shift和F2键。
使用唯一的别名
在Access Basic中,假如你知道入口点(动态链接库中函数的名字),你能够调用动态链接库中的外部函数。不过,使用这一方法的限制性在于你只能声明外部函数一 次。假如你安装了调用了你的模块调用的相同的Windows应用程序接口,你不会得到一个不为人所知的错误:试图用相同的函数定义安装模块。
你 尝试安装的模块要么是包含有相同的函数名,要么是包含在已存在的模块中有的过程名。删除这些过程,在EDIT菜单中使用FIND命令找到重复的过程名,要 解决这一问题,你需要使用一种叫做“别名使用“的技术。这种技术许可你给你的过程一个独一无二的名字。但是,你选择的别名也有也许不是独一无二的,所以要 使你取的名字唯一,你能够用初始值和下划线优先声明你所有从动态链接库中调用的过程,比如,声明getActiveWindow为:
Declare bcb_GetActiveWindow Lib "Kernel" Alias "GetActiveWindow" () As Integer.
传递空指针给动态库
一 个空的32位指针是有效的或是为一些动态链接库要求具有参数。要指定一个空值,使用0&。当你的函数调用一个过程并传递一个表达式 0&,“&”指定一个32位的空指针,在函数声明中,一个AS ANY参数指示Access Basic对那个参数不进行类型检查,同时把值传递到被调用的函数。
下面的编码示范了一个正确的方法,告诉你如何声明一个给动态链接库中的过程传递一个空指针参数的Access Basic函数。这段声明了WriteProfileString应用程序接口函数。这个函数来自于外部Windows动态链接库“kernel”。
Declare Function WriteProfileString Lib "Kernel"
(ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpString As Any)
接下来的函数调用了一个外部过程,为每个参数指定一个空值。这将使WriteProfileString充满它的内部高速缓冲区,并且WIN.INI的任何变化写到磁盘上。
重要的对这个函数不正确的使用会引起一般性的保护故障或修改你的WIN.INI文件。
Function nFlushIniCache()
nFlushIniCache = WriteProfileString (0&, 0&, 0&)
End Function
动态库调用无符号整数
常常有这样一种情况,要从外部动态链接库调用的过程中返回一个两个字节长的无符号整型数。然而Access Basic不支持这种数据类型。正确地计算这种数据类型需要把它从一个无符号整型数转换程Access Basic长数据类型。
Access Basic整型数的范围使从-32768到32767。一个无符号整型数的范围是从0到65535。Access Basic用最明显的一位来放置数值的符号位,所以当数值超过32767,第16位将被置成负数符号。要计算一个无符号整型数,你必须人工调整第16 位。
从无符号整型数转换到Access Basic长整型数或从Access Basic的长整型转换成无符号整型数有两种方法。第一种方法用到了最基本的数学运算(65535被无符号整型值加或减)。第二种方法使用Bitwise 操作。实际上,算术方法和Bitwise方法工作起来效果一样,只不过,算术方法也许可读性更强一些,而Bitwise方法在执行时也许更快一些。
算术方法
下 面的lArithUintToInt (nUint)和lArithIntToUnint(lBytes)过程示范了如何使用转换无符号整型数的算术方法。第一个函数读进一个无符号整型数同时 返回一个已经转变位长整型的值。第二个函数读入一个长整型值,然后返回一个转变成无符号整型的值。
Function lArithUintToInt (nUint As Integer)
If nUint < 0 Then
lArithUintToInt = nUint + 65536
Else
lArithUintToInt = nUint
End If
End Function
Function nArithIntToUnint (lBytes As Long)
If lBytes > 32767 Then
nArithIntToUnint = lBytes - 65536
Else
nArithIntToUnint = lBytes
End If
End Function
按位操作方法
下 面的nBWUintToInt(lBytes) 和 lBWIntToUint(nUint)过程示范了如何使用Bitwise方法转换无符号整型数。第一个函数读进一个无符号整型数,然后返回一个已经转换 成长整型的值。第二个函数读入一个长整型值,然后返回一个已经转换的无符号整型值。第二个函数中使用了提示框的语句是为了防范当传递到函数的值大于 64KB时会出现溢出信息。
1 0 1 0 0 0 1 1 11 10 00 00 (41952)
The functions follow:
Function lBWIntToUint(nUint As Integer)
lBWIntToUint = nUint And &HFFFF&
End Function
Function nBWUintToInt(lBytes As Long)
Dim nTemp As Integer
If lBytes > 65535 Then
MsgBox "You passed a value larger than 65535"
Exit Function
End If
nTemp = lBytes And &H7FFF
nBWUintToInt = nTemp Or -(lBytes And &H8000)
End Function
注意:&HFFFF&要求“&”在16进制数的末尾。这样能保证32位的16进制数通过16位的值表示出来。
Access Basic中的技巧
在Access 2003 中有一些以前无正式文本的特性,它们许可你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。
BUILDER FORM函数
假 如在一个模块中一个函数的定义是以“Builderr Form”开始同时包含一个类似于Onclose属性或事件标识符,按下SHIFT和F2键就能够调用这个过程。例如,当你在一个form的设计窗口中, 而当前的光标落在属性窗口中的Onclose事件的编辑控制上,按下SHIFT和F2键将能调用BuilderFormOnclose函数。这使用于 form和reports的大部分属性和所有事件。下面的代码将说明函数的格式:
Function BuilderFormOnClose (szFormName As String,
szControlName As String, szCurrentValue As String, szReserved As String)
If szCurrentValue = "" Then
DoCmd SelectObject A_MACRO, "", True
SendKeys "%n%fs" & "New Macro" & "{Enter}"
Forms(szFormName).OnClose = "New Macro"
Else
DoCmd SelectObject A_MACRO, szCurrentValue, True
SendKeys "%d"
End If End Function
参 数szFormName, szControlName, szCurrentValue, 和 szReserved必须声明,即使你从不使用它们。当你的函数被调用时,这些参数总是要被传递的。假如它们没有被声明,那么Access 2003将不会调用你的函数。假如有一个参数被分配到Onclose事件上,那么前面的过程将打开一个宏,假如编辑控制是空,那么代码产生一个名为 “New Macro”的新宏,同时把编辑控制值设置为“New Macro”。诚然,前面的例子并不是非常完美,但它的确说明了要产生一个完美而有效的程序所必须的条件。
同类推荐
2022-09-10
立即下载2022-09-10
立即下载2022-08-20
立即下载2022-08-16
立即下载2022-08-06
立即下载2022-08-02
立即下载相关文章
Win11提示Inaccessible_Boot_Device 错误怎么办
2021-11-05access怎么调整数据表列宽?
2021-06-15access怎么设置报表标题?
2021-06-15Access数据库中如何交换两个字段位置?
2021-06-15Access如何引用子窗体来显示数据?
2021-06-15Access通过查询建立订单表图文教程
2021-06-15Adobe XD CC2020做轮播的教程
2020-12-04万彩动画大师如何重置镜头?万彩动画大师重置镜头的技巧
2022-02-17CCleaner如何清理电脑隐私文件?
2021-11-17驱动人生NVIDIA安装失败的解决方法
2021-11-25