当前位置:七道奇文章资讯数据防范Access防范
日期:2011-05-01 23:30:00  来源:本站整理

MicrosoftAccess奥秘本领和陷阱[Access防范]

赞助商链接



  本文“MicrosoftAccess奥秘本领和陷阱[Access防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

    不精确地调用Windows利用程序接口大概会产生一些意想不到的副作用,以及潜在地对一个利用程序的代码及数据段的破坏.精确地利用一个空的32位指针在MicrosoftAccess中是非常必要的.

  当对表格和报表举行操作时,MicrosoftAccess有一个无正式文本的特点.这个特点答应你从计划视窗性质sheetwindow中举行历程调用,调用的办法是同时按下shift和F2键.
  Microsoft AccessBasic供应了一个丰富的开辟环境.这个开辟环境给你充足的机动性和对MicrosoftWindows利用程序接口的掌握,同时保护你使你免遭用高级或初级语言开辟环境开辟时所碰到的各种麻烦.不过,很多优化、有效数据和模块化方面只能是利用程序计划者才能利用.开辟者应努力于谨严地利用算法.除了普通的程序计划概念,还有一些分外的存储空间的管理技术,精确利用这些技术可以提高利用程序的履行速度,削减利用程序所要好的存储资源,提高速度和削减代码量.

  你可以用几种本领来提高你的编码速度,但是却找不到有效的算法的替换者.接下来的几点倡议可以提高你的编码速度同时又削减你的利用程序损耗的存储空间.www.iTbulo.comDa99x

利用整形数据范例举行数学运算

  即便MicrosoftAccess会利用一个结合处理器来处理浮点型算术,整型数算术也老是要快一些.当你的计算不含有小数,尽大概利用整型或长整型而不是变量或双整型.整型除法一样也要比浮点除法要快.在利用其他一些有效的数据范例时会告诫:没有任何东西可以替换有效的运算法例.www.iTbulo.comDa99x

避免利用历程调用

  避免在循环体中利用子程序或函数调用.每一次调用都因额外的工作和时间而给编码增大了负担.每一次调用都要求把函数的部分变量和参数压栈,而栈的大小是固定的,不能随便加大,并且同时还要于MicrosoftAccess同享.www.iTbulo.comDa99x

谨严利用不定长数据范例

  不定长数据范例供应了更大的机动性,比方说答应精确处理空值和自动处理溢出.别的这种数据范例比传统的数据范例要大并损耗更多的存储空间.前面还曾经提到过,不定长数据范例的变量在数学计算中对比慢.www.iTbulo.comDa99x

用变量存放常常利用的属性

  对变量举行查找和设置都比对属性举行这些操作要快.假如你要得到或查阅一个属性值很多次,那么把这个属性分配给一个变量,并用这个变量来替换属性,那么你的代码将要运行快得多.比方,在一个循环中,你查阅某表格中得一个掌握的属性,那么在循环外把属性分配给一个变量,然后在循环顶用查询一个变量来替换查阅一个属性的办法要对比快.www.iTbulo.comDa99x

预载表格

  当你的利用程序启动并且把它们的可见属性设置位‘false’时,假如你安装了你全部的表格,那么你的利用程序的性能会让你感受挺快.当你需求显示一个表格时,你只需求把该表格的可见属性设置为‘true’,这要比安装一个表格要快得多.需求记着的是,为你安装的每个表格,你都要从利用程序的全局堆中损耗存储空间.www.iTbulo.comDa99x

AccessBasic中的陷阱

  在AccessBasic中常常碰到的陷阱是对动态衔接库(DLLS)中的外部历程的调用.当你供应程序给你的用户,调用外部动态链接库时将呈现利用告诫;不然,你将得到一条错误信息:试图用相同的函数定义安装模块.www.iTbulo.comDa99x

利用唯一的别名

  在AccessBasic中,假如你知道进口点(动态链接库中函数的名字),你可以调用动态链接库中的外部函数.不过,利用这一办法的限制性在于你只能声明外部函数一次.假如你安装了调用了你的模块调用的相同的Windows利用程序接口,你不会得到一个不为人所知的错误:试图用相同的函数定义安装模块.

  你尝试安装的模块要末是包含有相同的函数名,要末是包含在已存在的模块中有的历程名.删除这些历程,在EDIT菜单中利用FIND号令找到反复的历程名,要办理这一问题,你需求利用一种叫做"别名利用"的技术.这种技术答应你给你的历程一个举世无双的名字.但是,你挑选的别名也有大概不是举世无双的,所以要使你取的名字唯一,你可以用初始值和下划线优先声明你全部从动态链接库中调用的历程,比方,声明getActiveWindow为:Declarebcb_GetActiveWindowLib Kernel Alias GetActiveWindow ()AsInteger.若何传送一个空指针给动态链接库一个空的32位指针是有效的或是为一些动态链接库要求具有参数.要指定一个空值,利用0&.当你的函数调用一个历程并传送一个表达式0&,"&"指定一个32位的空指针,在函数声明中,一个ASANY参数指导AccessBasic对那个参数不举行范例查抄,同时把值传送到被调用的函数.下面的编码示范了一个精确的办法,奉告你若何声明一个给动态链接库中的历程传送一个空指针参数的AccessBasic函数.这段声明了WriteProfileString利用程序接口函数.这个函数来自于外部Windows动态链接库"kernel.DeclareFunctionWriteProfileString Lib Kernel (ByVallpApplicationNameAs Any, ByVal lpKeyName As Any, ByVal lpStringAsAny)接下来的函数调用了一个外部历程,位每个参数指定一个空值.这将使WriteProfileString充满它的内部高速缓冲区,并且WIN.INI的任何改变写到磁盘上.重要的对这个函数不精确的利用会惹起普通性的保护弊端或改正你的WIN.INI文件.www.iTbulo.comDa99x

Functionn
FlushIniCache()nFlushIniCache= WriteProfileString (0&,0&, 0&)
EndFunctionwww.iTbulo.comDa99x

若何从动态链接库中传送和接纳无标记整型数

  常常有这样一种情形,要从外部动态链接库调用的历程中返回一个两个字节长的无标记整型数.但是AccessBasic不支持这种数据范例.精确地计算这种数据范例需求把它从一个无标记整型数转换程AccessBasic长数据范例.

  AccessBasic整型数的范围使从-32768到32767.一个无标记整型数的范围是从0到65535.AccessBasic用最明显的一位来安排数值的标记位,所以当数值超越32767,第16位将被置成负数标记.要计算一个无标记整型数,你必须人工调整第16位.

  从无标记整型数转换到AccessBasic长整型数或从AccessBasic的长整型转换成无标记整型数有两种办法.第一种办法用到了最基本的数学运算(65535被无标记整型值加或减).第二种办法利用Bitwise操作.实际上,算术办法和Bitwise办法工作起来效果一样,只不过,算术办法大概可读性更强一些,而Bitwise办法在履行时大概更快一些.www.iTbulo.comDa99x

算术办法

  下面的lArithUintToInt(nUint)和lArithIntToUnint(lBytes)历程示范了若何利用转换无标记整型数的算术办法.第一个函数读进一个无标记整型数同时返回一个已经改变位长整型的值.第二个函数读入一个长整型值,然后返回一个改变成无标记整型的值.www.iTbulo.comDa99x

Function
lArithUintToInt(nUint As Integer)
If nUint < 0 Then

  lArithUintToInt = nUint + 65536Else

  lArithUintToInt = nUintEnd IfEnd FunctionFunctionnArithIntToUnint(lBytes As Long)www.iTbulo.comDa99x

If lBytes > 32767 Then

  nArithIntToUnint = lBytes - 65536Else

  nArithIntToUnint = lBytes
End If
End Functionwww.iTbulo.comDa99x

按位操作办法

  下面的nBWUintToInt(lBytes)和lBWIntToUint(nUint)历程示范了若何利用Bitwise办法转换无标记整型数.第一个函数读进一个无标记整型数,然后返回一个已经转换生长整型的值.第二个函数读入一个长整型值,然后返回一个已经转换的无标记整型值.第二个函数中利用了提醒框的语句是为了避免当传送到函数的值大于64KB时会呈现溢出信息.

  1010001111100000 (-23584)

  AND 1111111111111111 (FFFF&)

  1010001111100000 (41952)
The functionsfollow:
Function
lBWIntToUint(nUint As Integer)lBWInt
ToUint = nUintAnd&HFFFF&
End Functionwww.iTbulo.comDa99x

Function nBWUintToInt(lBytes AsLong)DimnTemp As Integer
If lBytes > 65535 Then

  MsgBox You passed a value larger than 65535

  Exit Function
End If
nTemp = lBytes And &H7FFFnBWUintToInt=nTemp Or -(lBytes And&H8000)
EndFunction
注意:&HFFFF&要求"&"在16进制数的末尾.这样能保证32位的16进制数通过16位的值表示出来.www.iTbulo.comDa99x

AccessBasic中的本领

  在MicrosoftAccess中有一些从前无正式文本的特点,它们答应你指定历程,这个历程是从一个from或report的属性工作表窗中调用的.要进入最小窗口,只需求同时按下SHIFT和F2键.www.iTbulo.comDa99x

BUILDERFORM函数

  假如在一个模块中一个函数的定义是以"BuilderrForm开始同时包含一个近似于Onclose属性或事件标识符,按下SHIFT和F2键便可以调用这个历程.比方,当你在一个form的计划窗口中,而当前的光标落在属性窗口中的Onclose事件的编辑掌握上,按下SHIFT和F2键将能调用BuilderFormOnclose函数.这利用于form和reports的大部份属性和全部事件.下面的代码将阐明函数的格局:FunctionBuilderFormOnClose(szFormName As String, szControlName AsString,

  szCurrentValue As String, szReserved As String)If szCurrentValue= Then

  DoCmd SelectObject A_MacRO, , True

  SendKeys %n%fs & New Macro & Enter

  Forms(szFormName).OnClose = New MacroElse

  DoCmd SelectObject A_MACRO, szCurrentValue, True

  SendKeys %dEnd IfEnd Function参数szFormName,szControlName,szCurrentValue,和szReserved必须声明,即便你从不利用它们.当你的函数被调用时,这些参数老是要被传送的.假如它们没有被声明,那么MicrosoftAccess将不会调用你的函数.假若有一个参数被分配到Onclose事件上,那么前面的历程将翻开一个宏,假如编辑掌握是空,那么代码产生一个名为"NewMacro"的新宏,同时把编辑掌握值设置为"NewMacro".当然,前面的例子并非非常完善,但它的确阐明了要产生一个完善而有效的程序所必须的条件.
www.iTbulo.comDa99x

  以上是“MicrosoftAccess奥秘本领和陷阱[Access防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQL 无法装载DLL Microsoft缘由(无法改正sa密码)
  • Ubuntu获得免费的Microsoft Word
  • Windows家庭医生Microsoft Fix it Center
  • 办理安装软件时呈现未在本地计算机注册"Microsoft.Jet.OLEDB.4.0"办法...
  • Microsoft SQL Server 7.0数据库设置与数据构造
  • <b>Microsoft SQL Server 7.0安全问题</b>
  • Microsoft SQL Server 7.0安装问题(一)
  • Microsoft SQL Server 7.0安装问题(二)
  • Microsoft SQLServer安装示例
  • Microsoft SQL Server 7.0 备份及恢复相关问题
  • Microsoft SQL Server 7.0数据库的成立与管理
  • Microsoft SQL Server 7.0数据库进级转换问题
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .