Office中国论坛/Access中国论坛

标题: 请教关于access的查找功能 [打印本页]

作者: eyewitnes    时间: 2005-7-30 17:51
标题: 请教关于access的查找功能
在代码中判断表或者查询中某个值是否存在,俺现在掌握的只有2种方法,一是用DCOUNT()>=1,一是ISNULL(DLOOKUP()),但是两种的运算速度都感觉比较慢,还有没有其他的方法?例如在代码中使用SQL语句进行判断?或者更好,更快的办法?感觉上,系统自带的ctrl+F查找好像挺快的,不知道在代码中能借用这个查找功能的方法不?

[此贴子已经被作者于2005-7-30 10:11:45编辑过]


作者: 海狸先生    时间: 2005-7-30 18:33
用ADO打开查询,判断记录数
作者: eyewitnes    时间: 2005-7-30 19:42
除此以外,还有其他方法不?
作者: 海狸先生    时间: 2005-7-30 21:31
其他的方法肯定有,不过我不知道您要什么方法。因为我不能可能一一列举所有的方法
作者: eyewitnes    时间: 2005-7-30 21:42
只要求速度快,因为数据量比较大
作者: 海狸先生    时间: 2005-7-30 21:43
以下是引用海狸先生在2005-7-30 10:33:00的发言:

用ADO打开查询,判断记录数



这个不快吗?
作者: eyewitnes    时间: 2005-7-30 22:25
还是感觉到有很明显的停顿
作者: 海狸先生    时间: 2005-7-30 22:32
能写出来您用ADO的代码吗?
作者: eyewitnes    时间: 2005-7-30 22:37
Private Sub UNITNAME_AfterUpdate()

Me.RATE = 1

        If Me.复选38 = False Then

'        Dim rst As DAO.Recordset

'        Set rst = CurrentDb.OpenRecordset("select goodsid from qgoodsunit where goodsid = " & Me.GOODSID)

'        If rst.EOF Then

        If IsNull(DLookup("[goodsid]", "qgoodsunit", "goodsid = " & Me.GOODSID)) Then

'        If DCount("[goodsid]", "qgoodsunit", "goodsid = " & Me.GOODSID) <= 0.99 Then

        Me.复选38 = True

        Me.Form.Repaint

        End If

        End If

End Sub

呵呵,我是用DAO的,ADO不太懂,或者您帮改成ADO的?
作者: 海狸先生    时间: 2005-7-30 22:44
倒底你是用DAO还是用 dlookup,请写清楚一点
作者: 海狸先生    时间: 2005-7-30 22:47
if CurrentProject.Connection.Execute("select goodsid from qgoodsunit where goodsid = " & Me.GOODSID).EOF then
作者: eyewitnes    时间: 2005-7-30 23:04
以下是引用海狸先生在2005-7-30 14:47:00的发言:

if CurrentProject.Connection.Execute("select goodsid from qgoodsunit where goodsid = " & Me.GOODSID).EOF then



。。。还是感觉慢呀。。
作者: 海狸先生    时间: 2005-7-30 23:15
把 goodsid 设为主键
作者: eyewitnes    时间: 2005-7-31 00:17
本来就是主键,自动递增型的
作者: 海狸先生    时间: 2005-7-31 00:41
把文件发上来,看看?
作者: eyewitnes    时间: 2005-7-31 01:28
就是一个很简单的表,用来记录产品的单位,以及单位的换算比率,单位进货价,零售价,批发价的,价格和比率用的是小数类型,还有一个逻辑型字段记录当前记录是否基本单位,goodsid字段是记录对应的产品ID,长整型,已经建立了索引,允许重复。不过数据量大,有30几万条记录。这里要找的goodsid是与产品表中的主键goodsid的相关联的1对多关系,另外一个产品在这个表中可以有多个不同的单位,例如一个产品的单位可以是  克、千克、市斤、包、盒、箱、桶、磅等等,而换算比率则是与基本单位相比较每单位对应基本单位的数量。不过这个应该不影响查找操作。我想应该是数据量太大的问题吧。。

[此贴子已经被作者于2005-7-30 17:43:33编辑过]


作者: eyewitnes    时间: 2005-7-31 01:51
以下是引用eyewitnes在2005-7-30 16:17:00的发言:

本来就是主键,自动递增型的

搞错了,这个GOODSID不可能设置为主键,因为是对应另外一个表中一对多关系的多方
作者: 海狸先生    时间: 2005-7-31 01:54
30几万条?那有可能真是数据太多的关系了
作者: eyewitnes    时间: 2005-7-31 01:59
唉。。海狸先生知道windows自带的ctrl+F是怎么工作的吗?试了几次,觉得用ctrl+F比较快,但是又不可能使用ctrl+F来解决。。
作者: eyewitnes    时间: 2005-7-31 02:04
看来要把库挪到SQL上了。。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3