订阅本站

提高前台数据库运行速度

漏网小鱼 发表于 2010-12-24 分类 ACCESS | 4条评论

‘设计思路是,在后台数据库中建立一个非常简单的只有两个字段并只有一条数据记当的表。名为计数表。然后在前台数据库运行启动方法中,CALL一下下面的这个函数。即让系统启动后自动打开一个表并一直不关闭,使后台数据库一直挂起.以提高系统的运行速度.
Function Opentablejhb()
Set rstOpen = New ADODB.Recordset
rstOpen.Open “计数表”, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
End Function

Format用法详解

漏网小鱼 发表于 2010-12-23 分类 ACCESS | 1条评论

———————————
Format[$] ( expr [ , fmt ] )
format 返回变体型
format$ 强制返回为文本

——————————–
数字类型的格式化
——————————–
固定格式参数:
General Number 普通数字,如可以用来去掉千位分隔号
format$(“100,123.12″,”General Number”) 返回值 100123.12
Currency 货币类型,可添加千位分隔号和货币符号
format$(“100123.12″,”Currency”) 返回值 ¥100,123.12
Fixed 格式为带两位小数的数字
format$(“100123″,”Fixed”) 返回值 100123.00
Standard 标准,即带千位分隔号和两位小数
format$(“100123″,”Standard”) 返回值 100,123.00
Percent 百分数
format$(“100123″,”Percent”) 返回值 10012300.00%
Scientific 科学记数法
format$(“100123″,”Scientific”) 返回值 1.00E+05
Yes/No 当值为0时返回 NO,否则返回 YES
format$(“100123″,”Yes/No”) 返回值 Yes
True/False 当值为0时返回 False,否则返回 True
format$(“100123″,”True/False”) 返回值 True
On/Off 当值为0时返回 Off,否则返回 On
format$(“100123″,”Yes/No”) 返回值 On
自定义格式参数
“” 不进行格式化 返回值 原值
0 占位格式化,不足补0
format$(“100123″,”0000000″) 返回值 0100123
# 占位格式化,不足时不补0
format$(“100123″,”#######”) 返回值 100123
. 强制显示小数点
format$(“100123.12″,”.000″) 返回值 100123.120
% 转化为百分数,一个%代表乘以100
format$(“10.23″,”0.00%”) 返回值 1023.00%
format$(“10.23″,”0.00%%”) 返回值 102300.00%%
, 以千为单位格化
format$(“10.23″,”,”) 返回值 0
format$(“10010.23″,”,”) 返回值 10
format$(“10010.23″,”,0.00″) 返回值 10.01
E- E+ e- e+ 显示为科学记数(要注意格式语句,否则会和E的其它含义相混)
Format$(12.5,”0.00E+00″) 返回值 1.25E+01
$ 强制显示货币符号
format$(“10.23″,”{threadcontent}.00″) 返回值 ¥10.23
- + ( ) space 按位置显示本样
Format$(“1234.56″,”-(0.00)”) 返回值 -(1234.56)
\ 转义符,显示出特殊符号
Format$(“1234.56″,”\#.00″) 返回值 #1234.56
“ABC” 显示双引号 (” “) 之内的字符串。如在代码中想在 format 中包含一个字符串,必须用 Chr(34) 将文本括起来(34 为双引号 (“))
Format$(123.45,”TTT”) 返回值 TTT
注:当双引号中的文本包含特殊的参数符号如e,要使用转义符”\”,否则会按e的作用显示
; 类似多目运算符的作用。
查看全文

数据库对象的事件发生顺序

漏网小鱼 发表于 2010-12-23 分类 ACCESS | 36条评论

单个操作,例如从一个控件移到另一个控件 (控件:允许用户控制程序的图形用户界面对象,如文本框、复选框、滚动条或命令按钮等。可使用控件显示数据或选项、执行操作或使用户界面更易阅读。),可以触发几种不同的事件 (事件:由对象识别的操作,如鼠标单击或按键,可为这些操作定义响应。事件可能由用户操作或 Visual Basic 语句引发,或者由系统触发。),这些事件以特定的顺序依次发生。了解这些事件发生的时间和发生的先后顺序是非常重要的,因为这会影响到宏 (宏:用来自动执行任务的一个操作或一组操作。)或事件过程 (事件过程:自动执行的过程,以响应用户或程序代码启动的事件或系统触发的事件。)运行的时间和方式。例如,如果有两个事件过程,它们是按照某个先后顺序运行的,则必须确保与其关联的事件发生顺序与这两个过程的运行顺序一致。
查看全文

常用的VBA短句(带解释)

漏网小鱼 发表于 2010-12-23 分类 ACCESS | 2条评论

对于VBA的初学者来说,很想了解一些VBA短句的含义。
1、[A65536].End(xlUp).Row ‘A列末行向上第一个有值的行数
2、[A1].End(xlDown).Row ‘A列首行向下第一个有值之行数
3、[IV1].End(xlToLeft).Column ‘第一行末列向左第一列有数值之列数。
4、[A1].End(xlToRight).Column ‘第一行首列向右有连续值的末列之列数
5、Application.CommandBars(“Standard”).Controls(2).BeginGroup=True ‘在常用工具栏的第二个按钮前插入分隔符
6、Cells.WrapText = False ‘取消自动换行
If Len(Target) > 5 Then ‘如果当前单元格中的字符数超过5个,执行下一行
Target.WrapText = True ‘自动换行
End If
7、[A1:B10].SpecialCells(xlCellTypeBlanks).Rows.Hidden = True ‘有空格即隐藏行
8、[A2].parent.name ‘返回活动单元格的工作表名
查看全文

IIf函数语法

漏网小鱼 发表于 2010-12-22 分类 ACCESS | 2条评论

IIf(expr, truepart, falsepart)
IIf 函数的语法含有下面这些命名参数:

部分 描述
expr 必要参数。用来判断真伪的表达式。
truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。
falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。

说明
由于IIf 会计算truepart 和falsepart,虽然它只返回其中的一个。因此要注意到这个副作用。例如,如果falsepart 产生一个被零除错误,那么程序就会发生错误,即使expr为True。

Access数据库开发技巧

漏网小鱼 发表于 2010-12-22 分类 ACCESS | 发表评论

1、选项组、开关按钮、组合框等控件的运用
在窗体上将这些控件巧妙地加以运用可以有机地将有关系统通过一个窗体来控制,这些控件选择值可以传递到查询、报表及宏中的条件中去,从而使得对查询、报表及宏的控制显得灵活方便。
2、选项卡控件的运用
在Access 97 版中新增加了“选项卡”控件,这更使Access可以在有限的窗体中集成更多的子系统。比如在“打印表格”窗体中就可集成“成绩表”、“十分段统计表”、单科每分段统计表“等子系统”,每个子系统对应一个标签页。
3、开关面板窗体的运用
运用开关面板窗体可以将所有的子窗体集成到一起。开关面板窗体可以运用新建一个窗体并在其上放置各命令按钮来集成各子系统窗体的方法来建立。开关面板窗体可以说就是一个系统主窗体,它可以指引用户选择所需进行的操作。我们也可以运用Access中的“开关面板管理器”来建立开关面板窗体。具体方法如下:
①单击“工具”、“加载项”,然后单击“开关面板管理器”命令。
②如果 Microsoft Access 询问是否要新建开关面板时,请单击“是”按钮。
③在“开关面板管理器”对话框中,单击“编辑”按钮。
④在“编辑开关面板页面”对话框中的“开关面板名”框中输入开关面板的名称,然后单击“新建”按钮。
⑤在“编辑开关面板项目”对话框的“文本”框中,为第一个开关面板按钮输入相应的文本,然后在“命令”框中单击所需的命令。如在“文本”框中输入“打印表格”,然后单击“命令”框中的“以编辑方式打开窗体”命令。
⑥Microsoft Access 是否会在“命令”框下显示另一方框取决于单击的命令。如果有必要,请单击该方框中的项目。例如,如果在步骤 5 的“命令”框中单击了“以编辑方式打开窗体”命令,可以在“窗体”框中单击要打开的窗体名称,例如“打印表格”,然后单击“确定”按钮。
⑦重复步骤 4 至 6,直到已经在开关面板中添加了所有要添加的项目。如果要编辑或删除项目,可以在“开关面板上的项目”框中单击该项目,然后单击“编辑”或“删除”按钮。如果要重新安排项目,可以在框中单击项目,然后单击“往上移”或“往下移”按钮。
⑧单击“关闭”按钮。
其它技巧
1、经常压缩数据库
当对数据库进行了不断的增加、删除对象等修改工作后,数据库可能会变成碎片保存,并且不能有效地使用磁盘空间。定期压缩数据库可以重组文件并释放磁盘空间,提高效率。方法:单击“工具”、“数据库实用工具”、“压缩数据库”命令。据有关资料介绍,新版Access 2000能在每次关闭数据库文件时自动完成这项工作,这将给我们带来很大的方便。
2、多用户下的设置
如果想让数据库在网络上共享,比如在网络上同时由几个人输入、或者修改数据,则必须设置好多用户选项。
设置多用户选项的方法是:
①在“工具”菜单上单击“选项”命令。
②单击“高级”选项卡即可进行设置。
3、加密及生成“.mde”文件
为使数据库系统不被它人破坏,可以加密数据库或将数据库生成为“.mde”文件。将数据库保存为 “.mde” 文件将编译所有模块、删除所有可编辑的源代码并且压缩目标数据库。Visual Basic 程序代码将继续执行,但是不能进行查看或编辑,并且数据库的大小将因程序代码的删除而减少。除此之外,内存将优化使用,这将有助于提高性能。将数据库保存为 “.mde” 文件可防止下列操作:在“设计”视图中查看、修改或创建窗体、报表或模块,不能进行查看或编辑Visual Basic 程序代码。生成 “.mde” 文件的方法是:
①关闭数据库。如果正在多用户环境中工作,请确保所有其他用户已经关闭数据库。
②在“工具”菜单上,指向“数据库实用工具”,然后单击“生成 MDE 文件”命令。
③在“保存数据库为 MDE”对话框上,指定要另存为 MDE 文件的数据库,并且单击“生成 MDE”按钮。
④在“保存 MDE 为”对话框上,指定数据库的名称、驱动器以及文件夹。
结束语
Access是一个功能强大的数据库管理系统,由于篇幅所限本文就谈到这里,愿这点经验体会能对有兴趣的朋友提供一点帮助。

Me.Requery和Me.Refresh异同

漏网小鱼 发表于 2010-12-22 分类 ACCESS | 发表评论

Me.Requery和Me.Refresh异同
正 文:
从英文字面翻译来看,requery是请求,是refresh更新,
Refresh 方法用于立即刷新指定窗体或数据表中基础数据来源中的记录,以反映您或多用户环境下的其他用户对数据的更改。
语法:form.Refresh,
值得说明的是:使用 Refresh 方法和单击“记录”菜单中的“刷新”命令等效。
—————————————————–
注意:Refresh 方法只显示对当前集中的记录所作的更改。因为 Refresh 方法实际上没有重新查询数据库,当前集中不包括自从数据库上一次重新查询以来已被添加的记录,也不排除已被删除的记录。它还不能排除不再满足查询或筛选准则的记录。要重新查询数据库,就要用到 Requery 方法。也可以说refresh比requery要弱一些.
————————————
Requery 方法是通过重新查询窗体或控件的数据源更新基于指定窗体的数据,或激活窗体上的控件。
语法:[object.]Requery,这个object.不仅可以是form窗体,还能是control控件等
其与refresh还有不同在于它可以使窗体数据更新,还能使窗体中的控件中的数据或可选数据更新.,比如组合框和列表框中可选的值.

Dlookup函数综合释疑

漏网小鱼 发表于 2010-12-22 分类 ACCESS | 1条评论

Dlookup函数综合释疑
提示: 以下用法示例适合于大部分的合计函数(域函数如max, Dmin,Dfirst,Dlast等)

语法:
Dlookup(expr, domain, [criteria])

参数解释:
expr:要获取值的字段名称
domain :要获取值的表或查询名称
criteria:用于限制 Dlookup 函数执行的数据范围。如果不给 criteria 提供值,Dlookup 函数将返回域中的一个随机值。

一、正常用法
1、用于数值型条件值:
Dlookup(“字段名称” , “表或查询名称” , “条件字段名 = n”)

2、用于字符串型条件值注意字符串的单引号不能丢失)
Dlookup(“字段名称” , “表或查询名称” , “条件字段名 = ‘字符串值’”)

3、用于日期型条件值注意日期的#号不能丢失)
Dlookup(“字段名称” , “表或查询名称” , “条件字段名 = #日期值#”)

二、从窗体控件中引用条件值用法
1、用于数值型条件值:
Dlookup(“字段名称” , “表或查询名称” , “条件字段名 =” &
forms!窗体名!控件名)

2、用于字符串型条件值注意字符串的单引号不能丢失)
Dlookup(“字段名称” , “表或查询名称” , “条件字段名 = ‘” &
forms!窗体名!控件名 & “‘”)

3、用于日期型条件值注意日期的#号不能丢失)
Dlookup(“字段名称” , “表或查询名称” , “条件字段名 = #” &
forms!窗体名!控件名 & “#”)

三、混合使用方法(支持多条件)
在这种方法中也可以在条件中写入固定的值。
Dlookup(“字段名称” , “表或查询名称” , “条件字段名1 = ” & Forms!窗体名!控件名1 _
& ” AND 条件字段名2 = ‘” & Forms!窗体名!控件名2 & “‘” _
& ” AND 条件字段名3 =#” & Forms!窗体名!控件名3 & “#”)

注:
Dlookup之类的合计函数(域函数)是ACCESS为用户提供的内置函数,通过这些函数可以方便的从一个表或查询中取得符合一定条件的值赋予变量或控件值,就不需要再用DAO或者ADO打开一个记录集,然后再去从中获取一个值,这样所写的代码要少的多。
但是如果需要更灵活的设计,比如所查询的域没有在一个固定的表或查询里,而是一个动态的SQL语法,或是临时生成的复杂的SQL语句,亦或是需要代入循环的条件值等,此时还是需要从DAO或者ADO中定义记录集来获取值。因为Dlookup之类的合计函数必竟是一个预定义好格式的函数,所支持的语法有限,但对于大多数的要求是都能够满足的。

DAO记录集使用的一些技巧

漏网小鱼 发表于 2010-11-16 分类 ACCESS | 3条评论

ADO虽然是发展的趋势,微软之前也准备将DAO淘汰了,DAO 3.6之后就不再更新,但从Access2007开始又将DAO重新拾起来了,只不过改头换面了一下,变成DAO2了而已,因此DAO短时间内还是淘汰不了,尤其是在Access中,DAO在某些方面的优势依然是ADO比不上的。最近发现一些朋友在使用DAO记录集时,不管是向表中写入数据,还是只是读取数据,都是Set rst=CurrentDb.OpenRecordset(“表1″),但实际上这样用效率是很差的,尤其是在数据量比较大的时候,效率问题就显示很重要了,下面整理了一些DAO记录集的使用技巧,只需要稍微改动一下参数就可以实现的.

————————————————————————————————————————–
打开一个只用于添加记录的记录集(不能读取已有记录)
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset(“表1″, , dbAppendOnly)
————————————————————————————————————————–
打开一个只读记录集
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset(“表1″, , dbReadOnly)
————————————————————————————————————————–
打开一个只能向前滚动记录的只读记录集(效率最高,但不能使用MovePrevious和MoveFirst方法)
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset(“表1″, , dbForwardOnly)
————————————————————————————————————————–
‘打开一个数据来源于SQL Server数据库的记录集时要记得用dbSeeChanges参数,尤其是当表中有自动编号字段时是必需的
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset(“表1″, , dbSeeChanges)
————————————————————————————————————————–
‘循环记录集的时候,主要用的有两种:
方式一:
Do Until rst.EOF
ListBox1.Add rst!字段1
rst.MoveNext
Loop

方式二:
Dim intI As Integer
If rst.RecordCount > 0 Then
rst.MoveLast
rst.MoveFirst
For intI = 1 To rst.RecordCount
ListBox1.Add rst!字段1
rst.MoveNext
Next
End If
很多人喜欢用第一种方式,因为使用简单(包括我自己),但第一种的效率要比第二种差些,如果需要大批量操作或者数据量很大的时候,建议大家还是用第二种。
至于在循环的开头先移到记录集结尾,再移到记录集开头的作用时:DAO记录集打开时,如果数据量比较大的时候,存在打开记录集时用RecordCount属性不能正确读取记录数的问题,而要将指针移到最后一条时才能正确读取,再有就是如果你对数据的排序不在意的话,可以不必再将指针移回记录集开头,直接在循环中用MovePrevious移动就行了

注意:上面的示例代码中是将记录源参数设为了表名,但实际上还可以设为查询名称及SQL语句

谈数据库设计前分析工作

漏网小鱼 发表于 2010-6-21 分类 个人随笔 | 34条评论

当数据库学习者已经基本掌握了某一种数据库设计工具后,那么如何着手开始设计数据库呢?在这里我和正准备设计第一个数据库应用项目的朋友来谈一谈项目实施前的分析工作。
一、在没有谈之前,我们首先认识一下人类的记录事物的行为。理解人类记录自身社会行为活动的原因。
纵观人类社会的发展,人类记录事件的行为方式是伴随人类文明发展而不断变化,但最终目的都是对人类各种社会行为活动的历史追朔,从而分析过去和现在的关系,分析前因后果的内部联系,明确利益分配和责任承担,分解复杂事物便于驾驭复杂事物等等。因此就有了古代的节绳记事及现代的计算机等记录载体的出现,而我们要谈到的是计算机领域存储数据的数据库部分。数据库的发展是伴随着计算机的快速发展而发展,由最早的卡片穿孔和磁带顺序存储发展到后期广泛应用的磁盘随机存储形式,数据的组织模型也由早期的网状数据库模型、层次数据库模型发展到现在普遍使用的关系数据库模型,后期由于面向对象的设计思想出现又发展出面向对象数据库模型。在本文中我们重点讨论关系型数据库的设计,其他知识只简略描述。
二、设计数据库时为什么要进行设计前的分析?
有人会不要思索的回答“是设计需要当然要做需求分析”,也有人会说“这只是为了形成设计文档而做的工作”,还有人说“有点故弄玄虚,不用做分析一样可以设计数据库”,有许多的回答让我们对数据库设计分析存在的意义增加了一些疑问。
实际上在设计数据库之前的分析工作十分重要,注意我这里所讲的分析不只是客户所提出的那些需求分析,除了客户提出的要求之外,设计人员还要更广泛的考虑到社会事物普遍规律,把握事物的本质以便更好的绘制出数据库应用系统的E-R模型(实体-关系模型)。在现实的数据库设计过程中,有些设计人员好象并没做相关分析也比较快的完成了数据库的设计工作,似乎并不需要这些分析过程,然而事实上这些设计人员恰恰相反,他们以非常快的速度完成了分析的过程,这是因为他们通过长期的工作总结出了一套更快捷的分析经验,一旦所设计的内容与其经验相符合,那么经验将充分发挥作用;如果没有任何经验可以参考,那么必然会从头开始一步一步的做完分析过程。(注意:以上我所描述的设计人员并不是职业分析员,分析员的职业特点决定了分析员所针对分析工作的必要性。)分析的目的就是利用现有分析方法对人类可以认识的事物及人类各种社会行为活动概括简化并抽象为可以理解和解释的文字及图示模型,程序员往往可以根据这些被抽象化的文字与模型通过模拟再现事物及人类行为过程。用更少的文字概括分析目的就是“通过分析事物创建模型,利用模型模拟再现事物”。实际上当我们面对一个复杂的事物进行分析时,我们会发现其过程是一个比较枯燥和艰巨,分析工作的结果往往会产生大量的文档,这些文档又会随着分析的深入不断更新,程序设计员根本没有更多的精力去应对这样的工作量,这也是出现职业分析人员及各种分析工具的原因。 查看全文


无觅相关文章插件,快速提升流量