首页 Access教程

Access教程

举报
开通vip

Access教程Access教程 Access教程 网址: http://www.accessoft.com/bbs/index.asp http://www.msaccessonline.com/post/100.html# http://www.accessbbs.cn/bbs/ http://edu.itbulo.com/db/access/ http://edu.itbulo.com/db/access/jc/List_3.htm http://edu.iecool.com/kind/31_1.html http://ww...

Access教程
Access教程 Access教程 网址: http://www.accessoft.com/bbs/index.asp http://www.msaccessonline.com/post/100.html# http://www.accessbbs.cn/bbs/ http://edu.itbulo.com/db/access/ http://edu.itbulo.com/db/access/jc/List_3.htm http://edu.iecool.com/kind/31_1.html http://www.soft6.com/know/detail.asp?id=AJJADB 1.用Access打印带相片的证件 最近笔者接到一个任务,要将学生的证书信息及相片打印到3+1技能证书模板上,并且还要传到网上供用人单位查询。原始数据分两部分,一部分是包含学生姓名、身份证号、认证项目、证书编号等信息的Excel表;另一部分是按认证项目分类、以学生姓名为名的相片,图片大小均为90×120像素,图片格式均为JPG。   考虑到时间上的紧迫性,还有用户操作的易用性,以后上网查询所需数据库的兼容性,因此决定选用Access来开发。Access具有强大的窗体创建、报表打印、VBA编程功能,足以胜任大部分小型数据库应用系统的开发。   创建数据库和表   1. 打开Microsoft Office Access,创建一个空数据库,与相片的分类目录放在同一个文件夹下。   2. 使用“文件→获取外部数据→导入”功能将Excel表直接导入Access中,保存为“证书信息”表。   创建证书信息报表   1. 创建“证书信息”报表,先插入一个“图像”控件,设置其图片属性为证书模板图片,设置其大小为证书模板的大小,设置其可见性为否,这样有利于证书信息的排版,且不会打印出来;再依次插入要打印的字段列表,设置好字体和字号;最后再插入一个“图像”控件,放置于打印相片的地方,设置其大小为相片的大小,设置其名称为“stuimg”。   2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码: Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)   Dim imgpath As String   ' 依据应用程序路径、认证项目名称、姓名得到相片路径   imgpath = Application.CurrentProject.Path +"\" +认证项目.text +"\"+ 姓名.Text+".jpg"   ' 判断照片是否存在,如果不存在则显示一张空白的图片。   If Dir(imgpath) = "" Then imgpath = Application.CurrentProject.Path + "\noimg.bmp"   Stuimg.Picture = imgpath End Sub   创建打印预览面板窗体   1. 创建“打印预览面板”,依次放置一个用于查询的文本框,并命名为“inputname”;两个命令按钮“预览”、“关闭”。  2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码: Public stuname As String '定义全局变量stuname Sub PrintReports(PrintMode As Integer) ' 创建打印预览子程序   Dim strWhereCategory As String   If stuname <> Empty Then    strWhereCategory = "姓名= '" + stuname + "'"   End If  oCmd.OpenReport "证书信息", PrintMode, , strWhereCategory   DoCmd.Close acForm, "打印预览面板" End Sub Private Sub inputname_Change() ' 将文本框输入的字符赋给全局变量sname,用于给打印预览限定条件   stuname = inputname.Text End Sub Private Sub 预览_Click() ' 预览报表,本过程使用自定义的 PrintReports 子程序   PrintReports acPreview End Sub Private Sub 关闭_Click() ' 关闭窗体   DoCmd.Close End Sub   创建主切换面板窗体   1. 创建“主切换面板”,放置三个命令按钮“打印学生证书”、“返回数据窗口”、“退出管理系统”。   2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码: Private Sub 打印学生证书_Click()   Dim strFormName As String   strFormName="打印预览面板"   ' 打开打印预览面板   DoCmd.OpenForm strFormName, , , , , acDialog End Sub Private Sub 关闭当前窗口_Click()   Dim strDocName As String   strDocName = "证书信息"   ' 关闭“主切换面板”窗体。   DoCmd.Close   ' 设置焦点到数据库窗口;选择“证书信息”表。   DoCmd.SelectObject acTable, strDocName, True End Sub Private Sub 退出管理系统_Click()   ' 退出 Microsoft Access.   DoCmd.Quit End Sub   设置启动时显示主切换面板   依次点击菜单栏“工具→启动”命令,打开“启动”设置窗口,在“显示窗体→页”选项下选择主切换面板,并取消“显示数据库窗口”,这样在下一次打开此Access数据库时,就会自动显示主切换面板窗体。读者也可根据自己的需要决定是否取消菜单栏和快捷菜单栏,如果取消以后又要显示它们,可以在打开Access数据库时按住Shift键。   至此,技能证书打印系统开发完毕。本系统在Windows 2000 Server SP4、Microsoft Office Access 2003下调试通过。 2. 如何解决用Access数据库建站维护不便的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 选用Access作为建站数据库,除了低成本的原因之外,主要是Access数据库的易发布性,一个MDB文件就包括了全部的表和数据,开发完后连同 网页和ASP脚本一起上传到网站上就可以了,开发工具也不少,除了 Office 之外,还有许多第三方工具可以使用。   但是使用Access数据库也有不便的地方,一但把MDB文件上传到网站之后,就不太好操作了,上述的工具犹如“隔山打牛”,完全派不上用场, 通常的做法是通过FTP把MDB文件下载到本地,操作完后再上传回网站,数据库对网站用户是只读的话还没问题,如果网站用户会写信息到数据 库的话就麻烦了。   使用网际数据库浏览器可以解决上述问题,这个软件通过在网站上安装一个ASP或ASP.NET脚本,然后在本地安装网际数据库浏览器就可以实现 在线对网站上的Access数据库在线进行操作,软件界面类型MS-SQL查询分析器,但还可以更改表的内容,同时还是一个在线的数据库文档管理 器,简单的操作步骤如下:   1、通过网际数据库浏览器的脚本部署向导或手工将软件附带的脚本webdb.asp或webdb.aspx上传到网站上面;   2、在本地安装网际数据库浏览器;   3、选择“新建数据库连接”,在脚本URL域中填写上传到网站的脚本的URL,如:http://www.mysite.com/asp/webdb.aspx,然后选择驱动程序 ,脚本URL为webdb.asp的选择“[ASP]Microsoft Access Driver (*.mdb)”,dbq填写MDB文件的相对于webdb.asp的URL或绝对URL或MDB文件的 绝对路径,如../mdb/mydb.mdb、/mdb/mydb.mdb、C:\Inetpub\wwwroot\mdb\mydb.mdb;脚本URL为webdb.aspx的选择“[ASP.NET]Microsoft Jet 4.0 OLE DB Provider”,Data Source的填写 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 与dbq一样;   4、点击新建的连接,然后输入密码(如果有的话)就可以了。   软件下载网址: 官方网站 http://www.greatengine.com/DownLoad 华军软件园 http://yncnc.onlinedown.net/soft/29697.htm 天空软件站 http://www3.skycn.com/soft/17099.html 网易 http://dl.163.com/html/53/53403.html ZD Net China http://www.zdnet.com.cn/download/windows/swinfo/0,2008005031,39176140s,00.htm 3. Access如何制作复杂报表 如何制作复杂报表——利用Excel输出复杂报表   在读这篇文章以前首先要提醒大家,Access 本身的报表也具有很强的实用性和强大的功能,只有当你发掘了其本身全部的功能却仍不能满足你对报表的特殊要求时才请使用 Excel 输出报表。很明显,使用 Excel 输出报表第一个弱点就是必须同时打开 Access 和 Excel (当然,你得在一台机器上同时安装 Access 和 Excel),当然如果你和我一样拥有工作在 966MHz 上的 CPU 和 256M 内存以及大容量硬盘时,那就不必考虑了,继续吧。   首先找到 VBA 编程界面并找到"工具"菜单并单击"引用..."菜单项,在弹出的"引用"窗体中找到"现有引用"列表,在名为"Microsoft Excel x.0 Object Library"的项目前的方框内打钩。   其次,你要做好一张空白的 Excel 电子表格,设定好显示字体、边框、打印纸张等等并将其存盘。(以下示例中该表格名为 "temp.xls" )当然啦,直接使用空白的 Excel 文件也是可以的,不过你要编程自动生成表格边框、背景颜色、单元格格式等一些内容,这些涉及到 Excel 编程,我以后会在 Excel 专栏里详细叙述,这里就不多说了。   然后你就可以在 Access 里面制作你自己的打印预览窗体了,在窗体中安排 2 个命令按钮,在名为预览的按钮的 click 事件里输入以下代码:   Private Sub ExcelPreview_Click()   Dim xlApp As Excel.Application   Dim xlBook As Workbook, xlSheet As Worksheet   Set xlApp = CreateObject("Excel.Application")   Set xlApp = New Excel.Application   xlApp.Visible = True   Set xlBook = xlApp.Workbooks.Open("c:\reprot\temp.xls")   Set xlSheet = xlBook.Worksheets(1)   xlSheet.Cells(3, 1) = "制表日期:" + "12" + " 月"   '以上只更改了一个单元格内的数据,可根据需要无限次加入   xlBook.Save   xlSheet.PrintPreview '如果是要打印,只要把 PrintPreview 改为 PrintOut   xlBook.close   xlApp.Quit   End Sub   OK,然后就可以单击该按钮看看生成的表格如何了。 4. ACCESS数据库中的中文报表制作 数据库应用中很关键的数据输出形式是“报表”,ACCESS提供的报表向导,只针对国外的报表形式,就是线条较少的报表。而我们的中文报表,传统形式是线条较多的网格形式,所以,不能简单地通过向导来完成。现就本人使用ACCESS的经验,结合实例,谈一下如何在ACCESS数据库中制作我们的中文报表。 ---- “产品销售利润明细表”的制作: ---- 1. 新建报表:选“自动报表:表格”,数据来源选表如XSLR表,确定后,产生一个简单的报表,在此基础上进行修改。 ---- 2. 页面设置:边距方面,调整靠左、靠右来达到最大打印范围。页面方面,打印方向设置为纵向,纸张大小选自定义大小,宽度为1660(最大),长度为1100(一页纸长度),单位为0.01英寸。 ---- 3. 版面设置:删除报表页眉、报表页脚。将页面页眉的内容删除。在页面页眉中插入对象,选MICROSOFT WORD文档,在WORD文档中画出表头,填上内容,注意,汉字之间要空一格,否则,到ACCESS报表输出时,汉字会出现乱码。对此OLE控件设置属性:背景样式为“透明”,边框样式为“透明”。在主体部件插入对象,选MICROSOFT WORD文档,在WORD文档中画出表格线方格,行宽可比表头行宽大一些,对此OLE控件设置属性:背景样式为“透明”,边框为实线,边框宽度为细线,设置各字段文字类型及大小,将各字段调整到方格内。 ---- 4. 在DETAIL的FORMAT事件中写入代码,以完成对零值的屏蔽。代码如下:(A3至A13为数值型字段) Private Sub Detail_Format (Cancel As Integer, FormatCount As Integer) If A3 = 0 Then A3.Visible = False Else A3.Visible = True End If If A4 = 0 Then A4.Visible = False Else A4.Visible = True End If If A7 = 0 Then A7.Visible = False Else A7.Visible = True End If If A8 = 0 Then A8.Visible = False Else A8.Visible = True End If If A9 = 0 Then A9.Visible = False Else A9.Visible = True End If If A11 = 0 Then A11.Visible = False Else A11.Visible = True End If If A12 = 0 Then A12.Visible = False Else A12.Visible = True End If If A13 = 0 Then A13.Visible = False Else A13.Visible = True End If End Sub 5. ACCESS集锦 1、使窗体或报表的文本框随文字的多少自动加大或缩小:             文本框属性“可以扩大”     2、控制某字段只能填写某些内容:也许你想让使用程序的人只能在某个字段里a,那么你就得控制他不难让他填b。具体表达式为             =Instr("abc",[A])>0     3、并置几个字段:也许你填表时有两个字段分别是“湖北大学”、“数学专业”,但当你在打印报表时却想让这两个了段变为一个字段放在一起,即“湖北大学数学专业”,那么最好的办法就是并置。表达式为:             =([A]&[B])或者=([A]&""&[B])     4、查询中的计算字段:也许在您的表中有两个数字字段,然后您想在报表中出现一个关于这两个字段关系的字段,那么简单的方法就是计算,这计算可以加,可以减,可以乘,可以除,视情况而定。表达式为:             名称:[A]*[B](这里假设相乘,“名称”可自定)     5、计算年龄表达式:有人喜欢在表中设计录入一个人的年龄,这不是聪明的做法。因为每个人的年龄是在不断增加的,到下一年再重新进行大批量重新录入,那就没有电脑的智能作用。最好的做法是在表中设计一个身份证号码字段。有了这个字段后,某人的“年龄”和“性别”都是可以确定的,而且一劳永逸,除非你不会把你计算机的系统时间调准确。这里是假设表中已经有“出生年月”字段以后通过它确定“年龄”的表达式:             =Datediff("yyyy",[A],now())     6、在窗体或报表进行值转换:有时候想将表中的在窗体或其他地方显示为你想要的内容,办法就是进行值转换。比如表中有“出生年月”的记录,你想在窗体不显示具体的出生年月,而显示“今天是这人的生日”或“这人距生日还有x天”这样的信息,或者有一个“分数”字段而你却想在窗体上显示出某学生是“优生”、“差生”、“及格”等信息,你要用上以下表达式:             =iif([A]=x,"y",iif([A]=z,"p","m"))     7、在窗体中对某字段进行数据锁定:在用窗体编辑数据时,有时你可能不想让人对其中某一个或几个字段进行修改,那么,你得对不想让人修改的字段进行锁定。其方法:             字段-属性-数据-是否锁定-是     8、求和表达式:对两个以上字段值进行求和,表达式为:             =Sum([A]+[B]+……)     9、标签并置并且格式化数字字段:如果你想将表中电话号码“13972088783”在窗体或报表显示时变为“1397-2088783”,你就得用以下表达式:             =Trim([A]& ","&[B]&""Format([C],"@@@@-@@@@@@"))     10、并置运算:             安符与非字符:="今天日期是:"&date()             字段与字段:  =[A]+[B]             字段与字符:  =[A] &"abc"(A、B、C为任意字符)     11、显示带有文本的系统日期:             ="今天是:"+cstr(date())     12、把字段内容直接嵌入文本表达式:如果你想让打印的报表的表头随调入的动态数据的改变而跟着改变,你必须用此方法:             =[单位名称]&"教职工花名册"             =format(now(),"yyyy")&[单位名称]&"教职总数"             ="这位同学名叫"&[姓名]&",""其中考总成绩为"&[总成绩]&"。"     13、在查询中更改字段名称:             新名称:(放在原字段前)     14、返回确定日期段的数字值:             Datepart(interval,date,firstweekday,firstweek)     15、查询窗体打开时不显示空白的代码:按某种条件进行查询,目的是要打开一个显示窗体。可是有时候或因为输错条件,或因为根本没这个记录,那么你可能得到一个非常让你失望的呆板的“白板窗体”。避免这种情况发生的做法就是,在该窗体的“打开”属性中输入以下代码:           On Error GoTo err     DoCmd.GoToRecord , , acLast i = Me.CurrentRecord     DoCmd.GoToRecord , , acFirst exit_form_open:   Exit Sub err:   MsgBox "您要查找的数据不存在,请核实后重新输入。"   DoCmd.Close     16、设置默认值的技巧:在表中输入也好,在窗体中输入也好,将某些字段设一个默认值并不困难,但是,要保证不同的用户能够随时重设默认值,就显得麻烦一些。具体的思路是:先预设一个窗体供用户在其中更改默认值,然后,让你的录入窗体的各个字段直接在用户已经预设好默认值里读取预设信息。     17、显示动态记录个数的方法:查找记录时,有时你查找到的可能并不只有一个记录,特别是进行模糊查询是更是如此。那么,到底有多少个记录呢?你需要在窗体设计时,在合适的位置上加一个文本框,然后在里面输入以下表达式:             ="您已经找到了"&count([a])&"个符合条件的记录。"(“a”是表中的字段名称)     18、在学生信息的查询结果窗口内,你可以看到一个关于记录数量的提示,有时显示“符合条件的记录只有一个”,而有时显示“符合条件的记录共有x个……”。如何实现的呢?这里有一个复杂的表达式如下:             ="符合条件的对象" & IIf(Sum([同名合计])=1,"只","共") & "有" & Sum([同名合计]) & "人 " & IIf((Sum([同名合计]))>1,"请按PAGEDOWN键查看下一个","")     19、查询结果窗上,还有一个关于“学习进步”的祝词,如果碰巧你查询到的孩子那天生日,下面会提示“嘿嘿,今天是这孩子生日啊,让我们祝他生日快乐!”。这里也有一个条件表达式:             =IIf(Month([出生年月])=Month(Now()) And Day([出生年月])=Day(Now()),"嘿嘿,今天是这孩子生日啊!让我们祝" & [姓名] & "生日快乐!!","好人一生平安!祝" & [姓名] & "同学学习进步,茁壮成长!") 6. Access2003开发者扩展工具集概述 许可和分发权限   Access 2003 Developer Extensions随附的许可协议简化了解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 或代码段的分发过程。这些协议包括免版税的Access运行时,您可以分发Access解决方案和Access数据项目,以及免费使用和分发工具源代码部分以作为您的解决方案的一部分。   轻松部署解决方案   Access 2003 Developer Extensions可帮助开发人员轻松部署和管理使用Access构建的解决方案。用于软件包和部署的新工具加快了管理和部署过程,而许可和分发协议使开发人员可以作为第三方或内部开发人员更容易地将解决方案推向市场,不论是向小公司还是向大型企业。   软件包向导   Access 2003 Developer Extensions包括软件包向导,可帮助开发人员创建用于Access解决方案的专业安装例程。向导还自动包括Access运行时文件,如果选择的话,还将包括组成解决方案的Access解决方案文件。   所创建的安装程序将Microsoft Windows? 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的Windows Installer (MSI)用于安装例程,并且将为解决方案自动创建快捷方式,如果出现安装了两个不同版本的Access的情况,快捷方式将使用合适的Access EXE。   可轻松地自定义用软件包向导创建的安装程序。该向导将创建一个Windows Installer脚本,任何熟悉脚本语言的用户都可对它进行修改。此外,还可以使用支持Windows Installer文件的任何第三方工具自定义所生成的MSI。   简化开发和测试过程   Access 2003 Developer Extensions为Access解决方案开发人员提供了一套工具,可减轻构建Access解决方案的繁重的工作量,并简化生产环境。所叙述的功能可清除测试障碍,并开发出高质量的解决方案。   属性扫描程序加载项   在开发解决方案时一项常见的繁重任务是:更改某个功能或用户界面对象的名称,而该功能或对象在整个解决方案中处于折叠状态。这需要查看每个模块、窗体并创建报告,以查找不合要求的字符串并重新命名它。如果使用通常包含各种窗体和报告的Access解决方案,这个过程可能会很艰苦和耗时。   有了Access 2003 Developer Extensions后,通过使用属性扫描程序加载项,这个任务得以大大简化。该工具使开发人员可以在Access解决方案中全局搜索自定义字符串。该工具将搜索表、查询、窗体、报告和模块中的所有属性或代码-几乎Access中的所有对象都将被搜索。搜索完成后,属性扫描程序加载项将提供一个搜索结果列表,用户可直接跳到在其中找到自定义字符串的对象。   在部署Access解决方案时,开发人员通常创建一个MDE文件,该文件是一个Access解决方案(MDB文件),已被全部分解为源代码。MDE文件提供安全的解决方案,可分发到一个客户或多个客户。   在分发过程中,开发人员有时需要创建多个MDE版本的解决方案,每个版本的方案都有不同的启动属性。在Access中这个过程可能有些单调,但是如果使用Access 2003 Developer Extensions中的自定义启动向导,这个过程就会变得很轻松。开发人员只需指定原始的解决方案、目标数据库以及要设置的其他选项和启动设置就可以达到目的了。   在使用单个Access解决方案生成需要经过反复测试和重建的多个MDE文件时,自定义启动向导可极大地减少开发周期的结束工作所需的时间。   完整的源代码   学习新编码技术的最好方法通常是查看现成的解决方案的源代码。Access 2003 Developer Extensions提供产品中包括的工具(如属性扫描程序加载项、自定义启动向导和软件包向导)的完整源代码。每个工具都是用Microsoft Visual Basic?for Applications (VBA)编写的,这是用于开发Access解决方案的主要语言。有了源代码后,开发人员可以了解各种编码技术,比如,如何编写可轻松地本地化为多种语言的解决方案。   开发人员还可以根据自己或企业的需要,创建这些工具的自定义版本。例如,可对自定义启动向导进行自定义,使它总是创建具有企业需要的启动属性的MDE文件。 7. Access是Office组件的重要成员,其主要功能是数据库的管理和应用。由于其普及率和易用性都不及其他成员,所以大家常常会觉得Access的操作不太方便。比如,在Access的表中,要想在中间插入一条记录就比较困难,而在Word表格和Excel的工作表中要做同样的操作则易如反掌;再比如,当我们在Access的表中重复输入相同或有一定规律的字段内容时,就自然会联想到Excel的复制和自动填充功能,但Access却无能为力。显然,如果我们能够实现Access与Office组件其他成员之间进行数据交流,就能够让这些成员为Access服务,从而达到取长补短、提高工作效率的目的。   在Word中打开Access表查询项   如果想把Access中的表或者查询,转换成为Word中能够读取的文件格式,以便利用Word进行处理,可以采用以下三种方式:   1. 利用剪贴板   在Access中,打开要转换的表或者查询项,将鼠标指针拖过所选记录的行选择器(在窗口的最左端,当鼠标置于其上时,鼠标指针会变成向右方向的箭头),可以选择一组记录;将鼠标指针拖过所选字段的字段选择器(在窗口的最上端,当鼠标置于其上时,鼠标指针会变成向下方向的箭头),可以选择一组字段;当用鼠标单击左上角的字段选择器和行选择器的交叉处时,可选中所有记录或者说是选中所有字段。进行上述三种情况之一的选择以后,再单击工具栏上的“复制”按钮,将所选内容复制到剪贴板中,如图1所示。随后再打开Word,单击工具栏上的“粘贴”按钮,即可将Access中表或者查询项复制成Word中的表格。如果你觉得被复制进来的深色底纹表头影响视觉效果,可以选中该行后,执行“格式”菜单下的“边框和底纹”命令,按下“底纹”标签按钮,选择“无填充色”。   2. 导出为RTF文件   在Access中,打开要转换的表或者查询,执行“文件”菜单下的“导出”命令,将“保存类型”指定为“Rich Text Format”。在Word中,执行“文件”菜单下的“打开”命令或者直接按下工具栏上的“打开”按钮,在随后弹出的“打开”对话框中,单击“文件类型”旁边的下拉列表,将其指定为“RTF格式”,找到前面保存的RTF文件双击即可打开。   3. 直接插入数据库   在Word中,单击“视图”菜单下的“工具栏”,然后将“数据库”一项选中(或者将鼠标置于Word窗口的菜单栏或工具栏上右击,在弹出的快捷菜单中选中“数据库”一项)。这时,要在Word中打开Access的表或者查询项,就可以单击新增加出来的“数据库”工具栏上的“插入数据库”按钮,在随后打开的“数据库”对话框中,按下“获取数据”标签按钮,将文件类型指定为“MS Access数据库”,选中一个数据库文件中的表或者查询,再单击“插入数据”标签按钮。 图1 复制表格 8. MicrosoftAccess秘密技巧和陷阱 不正确地调用Windows应用程序接口可能会产生一些意想不到的副作用,以及潜在地对一个应用程序的代码及数据段的破坏。正确地使用一个空的32位指针在MicrosoftAccess中是十分必要的。   当对表格和报表进行操作时,MicrosoftAccess有一个无正式文本的特性。这个特性允许你从设计视窗性质sheetwindow中进行过程调用,调用的方法是同时按下shift和F2键。   Microsoft AccessBasic提供了一个丰富的开发环境。这个开发环境给你足够的灵活性和对MicrosoftWindows应用程序接口的控制,同时保护你使你免遭用高级或低级语言开发环境开发时所碰到的各种麻烦。不过,许多优化、有效数据和模块化方面只能是应用程序设计者才能使用。开发者应致力于谨慎地使用算法。除了一般的程序设计概念,还有一些特别的存储空间的管理技术,正确使用这些技术可以提高应用程序的执行速度,减少应用程序所要好的存储资源,提高速度和减少代码量。   你可以用几种技巧来提高你的编码速度,但是却找不到有效的算法的替代者。接下来的几点建议可以提高你的编码速度同时又减少你的应用程序消耗的存储空间。 使用整形数据类型进行数学运算   即使MicrosoftAccess会使用一个联合处理器来处理浮点型算术,整型数算术也总是要快一些。当你的计算不含有小数,尽量使用整型或长整型而不是变量或双整型。整型除法同样也要比浮点除法要快。在使用其他一些有效的数据类型时会警告:没有任何东西可以替换有效的运算法则。 避免使用过程调用   避免在循环体中使用子程序或 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 调用。每一次调用都因额外的工作和时间而给编码增大了负担。每一次调用都要求把函数的局部变量和参数压栈,而栈的大小是固定的,不能随便加大,并且同时还要于MicrosoftAccess共享。 谨慎使用不定长数据类型   不定长数据类型提供了更大的灵活性,比如说允许正确处理空值和自动处理溢出。另外这种数据类型比传统的数据类型要大并消耗更多的存储空间。前面还曾经提到过,不定长数据类型的变量在数学计算中比较慢。 用变量存放经常使用的属性   对变量进行查找和设置都比对属性进行这些操作要快。如果你要得到或查阅一个属性值许多次,那么把这个属性分配给一个变量,并用这个变量来代替属性,那么你的代码将要运行快得多。例如,在一个循环中,你查阅某表格中得一个控制的属性,那么在循环外把属性分配给一个变量,然后在循环中用查询一个变量来代替查阅一个属性的方法要比较快。 预载表格   当你的应用程序启动并且把它们的可见属性设置位‘false’时,如果你安装了你所有的表格,那么你的应用程序的性能会让你感觉挺快。当你需要显示一个表格时,你只需要把该表格的可见属性设置为‘true’,这要比安装一个表格要快得多。需要记住的是,为你安装的每个表格,你都要从应用程序的全局堆中消耗存储空间。 AccessBasic中的陷阱   在AccessBasic中经常碰到的陷阱是对动态连接库(DLLS)中的外部过程的调用。当你提供程序给你的用户,调用外部动态链接库时将出现使用警告;否则,你将得到一条错误信息:试图用相同的函数定义安装模块。 使用唯一的别名   在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文件。 Functionn FlushIniCache()nFlushIniCache= WriteProfileString (0&,0&, 0&) EndFunction 如何从动态链接库中传递和接收无符号整型数   常常有这样一种情况,要从外部动态链接库调用的过程中返回一个两个字节长的无符号整型数。然而AccessBasic不支持这种数据类型。正确地计算这种数据类型需要把它从一个无符号整型数转换程AccessBasic长数据类型。   AccessBasic整型数的范围使从-32768到32767。一个无符号整型数的范围是从0到65535。AccessBasic用最明显的一位来放置数值的符号位,所以当数值超过32767,第16位将被置成负数符号。要计算一个无符号整型数,你必须人工调整第16位。   从无符号整型数转换到AccessBasic长整型数或从AccessBasic的长整型转换成无符号整型数有两种方法。第一种方法用到了最基本的数学运算(65535被无符号整型值加或减)。第二种方法使用Bitwise操作。实际上,算术方法和Bitwise方法工作起来效果一样,只不过,算术方法可能可读性更强一些,而Bitwise方法在执行时可能更快一些。 算术方法   下面的lArithUintToInt(nUint)和lArithIntToUnint(lBytes)过程示范了如何使用转换无符号整型数的算术方法。第一个函数读进一个无符号整型数同时返回一个已经转变位长整型的值。第二个函数读入一个长整型值,然后返回一个转变成无符号整型的值。 Function lArithUintToInt(nUint As Integer) If nUint < 0 Then   lArithUintToInt = nUint + 65536Else   lArithUintToInt = nUintEnd IfEnd FunctionFunctionnArithIntToUnint(lBytes As Long) If lBytes > 32767 Then   nArithIntToUnint = lBytes - 65536Else   nArithIntToUnint = lBytes End If End Function 按位操作方法   下面的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 Function 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位的值表示出来。 AccessBasic中的技巧   在MicrosoftAccess中有一些以前无正式文本的特性,它们允许你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。 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”。诚然,前面的例子并不是非常完美,但它的确说明了要产生一个完美而有效的程序所必须的条件。 9. 防止ACCESS数据库被下载的9种方法 篇首语:原来改mdb为asp就能防下载是鬼话。     引子:昨天和animator试验了一下,把 data.mdb文件改名为data.asp文件后放在wwwroot目录里。然后 在IE中输入data.asp路径后,发现IE显示一片空白,右键- >察看源文件,跳出记事本,将内容另存为。mdb文件 ,用ACCESS打开,发现需要密码,也就是说至少文件头被破坏。     然后用 Flashget试验下载data.asp文件,并另存为data.mdb文件,发现用ACCESS打开完好无损!!!看 来,好一些编程人员在开发的时候都认为,改了mdb后缀为asp就能防下载的概念,是错的!后台数据库被下载对于一个asp+a ccess的网站来说无疑是一场惨绝人寰的灾难。今天找了各方的文章,归纳一下有以下9种办法防止数据库被下载(欢迎补充):& nbsp;     1.发挥你的想象力 修改数据库文件名不用说,这是最最偷懒的方法,但是若攻击者通过第三方途径获得了数据库的路径),就玩完了。比如说攻击者本来只能拿到list权 ,结果意外看到了数据库路径,就可以冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,起再隐蔽的文件名都瞒 不了人。故保密性为最低。     2.数据库名后缀改为ASA、ASP等     此法须配合一些要进行一些设置,否则就会出现本文开头的那种情况     (1)二进制字段添加(此招我还没有炼成-_-+)。     (2) 在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。可是 如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以 < %的形式存在,无效!正确的方法是将 <%存入OLE对象字段里,这样我们的目的就能达到了。&nbs p;作方法:首先,用notepad新建一个内容为 <% 的 文本文件,随便起个名字存档。     接着,用Access打开您的数据库文件,新建一个表,随便起个名字,在表中添加一个OLE对象的字段,然后添加一个记录, 插入之前建立的文本文件,如果操作正确的话,应该可以看到一个新的名为"数据包"的记录。即可     3.数据库名前加"#"只需要把数据库文件前名加上#、然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别& nbsp;#号前名的部分,对于后面的自动去掉,比如你要下载:http://www.pcdigest.com/date/# 123.mdb(假设存在的话)。无论是 IE还是FLASHGET等下到的都是http://www.test.com/dat e/index.htm(index.asp、 default.jsp等你在IIS设置的首页文档)     另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为"%",如http ://www.test.com/date/123 ;456.mdb,下载的时http: //www. test.com/date/123 %456.mdb.而我们的目录就根本没有123%456.mdb这个文件,所 以下载也是无效的这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载!     4.加密数据库首先在选取"工具-> 安全->加密/解密数据库,选取数据库(如:employer.mdb),然后接确定,接 着会出现"数据库加密后另存为"的窗口,存为: employer1.mdb.接着employer.mdb就会被编码,然后存为 employer1.mdb……要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他 人使用别的工具来查看数据库文件的内容。     接下来我们为数据库加密,首先以打开经过编码了的 e mployer1.mdb,在打开时,选择"独占"方式。然后选取功能表的"工具->安全->设置数据库密码",&  nbsp;接着输入密码即可。这样即使他人得到了employer1.mdb文件,没有密码他是无法看到 emplo yer1.mdb的。     加密后要修改数据库连接页, 如:conn.open "driver={microsoft access driver&nb sp;(*.mdb)};uid=admin;pwd=数据库密码;dbq=数据库路径"这样修改后,数据库即使被人下载了,别人也无法打开(前提是你的数据库连接页中的密码没有被泄露)     但值得注意的是,由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的 密码与某一固定密钥进行" 异或"来形成一个加密串,并将其存储在*.mdb文件从地址"&H42"开始的区域内。所以一 个好的程序员可以轻松制作一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息安 全依然是个未知数.  5.数据库放在WEB目录外或将数据库连接文件放到其他虚拟目录下如你的WEB目录是e:\webroot,可以把数据库放到e:\data这个文件夹里,在e:\webroot里的数据库 连接页中修改数据库连接地址为:"……/data/数据库名" 的形式,这样数据库可以正常调用,但是无法下载的,因 为它不在WEB目录里!这个方法一般也不适合购买虚拟空间的用户。      6.使用ODBC数据源。      在ASP等程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码 的失密而一同失密,例如: DBPath = Server.MapPath("……/123/ abc/asfadf.mdb ")      conn.open "driver={Microsoft Access Driver&nb sp;(*.mdb)};dbq="& DBPath可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,也很容易被下载下来。如果使用ODBC数据源,就不 会存在这样的问题了:  conn.open "ODBC-DSN名" ,不过这样是比较烦的,目 录移动的话又要重新设置数据源了,更方便的方法请看第7,8法!      7.添加数据库名的如MDB的扩展映射这个方法就是通过修改IIS设置来实现,适合有IIS控制权的朋友,不适合购买虚拟主机用户(除非管理员已经设置了)。这个 方法我认为是目前最好的。只要修改一处,整个站点的数据库都可以防止被下载。无须修改代码即使暴露目标地址也可以防止下载。&n bsp;我们在IIS属性 ——主目录——配置——映射——应用程序扩展那里添加。mdb文件的应用解析。注意这里的选择的D LL(或EXE等)似乎也不是任意的,选择不当,这个MDB文件还是可以被下载的, 注意最好不要选择选 择asp.dll等。你可以自己多测试下这样修改后下载数据库如:http://www.test.com/data/dvbbs6.mdb.就出现(404或50 0等错误)      8:使用。net的优越性动网的木鸟就写
本文档为【Access教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_495010
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:67
分类:互联网
上传时间:2011-01-12
浏览量:20