9 个解决方案
#1
不能,Find 方法不支持多条件。你可以用 Filter 来做类似的事情。
#2
是啊,而且做这个操作时,要特别注意加上错误处理,免得条件不合规范时,抛出的错误让程序崩溃掉
#3
何不直接用select查询?
#4
可能是希望保持全部记录,仅仅定位在某一符合条件的记录上。
还有一种比较“绕”的方法,来实现楼主类似多条件 Find 的效果。
用两个条件做两轮 Find,记录找到的记录的 AbsolutePosition 属性。在两轮中都出现的 AbsolutePosition 处的记录就是符合多条件的记录。可以通过设置 AbsolutePosition 属性定位到这些记录上。
还有一种比较“绕”的方法,来实现楼主类似多条件 Find 的效果。
用两个条件做两轮 Find,记录找到的记录的 AbsolutePosition 属性。在两轮中都出现的 AbsolutePosition 处的记录就是符合多条件的记录。可以通过设置 AbsolutePosition 属性定位到这些记录上。
#5
用Filter好像解决不了我的问题呢?
我是用AODDC控件将查询结果值返回给一个DataGrid控件,原来想用Find方法来在DataGrid控件中查找想要找的记录,即在DataGrid控件的记录集中再定位记录.
#6
姑娘姑娘姐真是利害也,知我心者非你也
#7
如果通过两次查询的两个条件来定位,好想是定位不了一个唯一的记录
字段1 字段2
EEE 007
AAA 007
BBB 070
AAA 007
CCC 003
如果第一个定位是Find(字段1='AAA')定位到的是第2条记录,
第二个定位是Find(字段2='007')定位到的是第1条记录?
#8
你的数据库表有没有 ID 之类值唯一的字段?
如果有,另用一个查询,找到这些 ID:
在定位时
可以让 List1.Visible = False
如果有,另用一个查询,找到这些 ID:
Set rs = cn.Execute("SELECT id FROM yourtable WHERE 姓名='张三' And 年份='2012'"
Do Until rs.EOF
List1.AddItem rs!id
rs.MoveNext
Loop
Set rs = Nothing
在定位时
.Find("id = " & List1.List(i))
i = i + 1
可以让 List1.Visible = False
#9
你必须找到两轮查找中 AbsolutePosition 相同的那些记录。
比如,你在第一轮中找到的记录 AbsolutePosition 有:(不要停在找到的首记录)
1
3
7
在第二轮中找到的记录 AbsolutePosition 有:
3
8
9
106
那就只有记录 3 是两条件都满足的。
ADODC1.Recordset.AbsolutePosition = 3 就可以定位在这条记录上。
比如,你在第一轮中找到的记录 AbsolutePosition 有:(不要停在找到的首记录)
1
3
7
在第二轮中找到的记录 AbsolutePosition 有:
3
8
9
106
那就只有记录 3 是两条件都满足的。
ADODC1.Recordset.AbsolutePosition = 3 就可以定位在这条记录上。
#1
不能,Find 方法不支持多条件。你可以用 Filter 来做类似的事情。
#2
是啊,而且做这个操作时,要特别注意加上错误处理,免得条件不合规范时,抛出的错误让程序崩溃掉
#3
何不直接用select查询?
#4
可能是希望保持全部记录,仅仅定位在某一符合条件的记录上。
还有一种比较“绕”的方法,来实现楼主类似多条件 Find 的效果。
用两个条件做两轮 Find,记录找到的记录的 AbsolutePosition 属性。在两轮中都出现的 AbsolutePosition 处的记录就是符合多条件的记录。可以通过设置 AbsolutePosition 属性定位到这些记录上。
还有一种比较“绕”的方法,来实现楼主类似多条件 Find 的效果。
用两个条件做两轮 Find,记录找到的记录的 AbsolutePosition 属性。在两轮中都出现的 AbsolutePosition 处的记录就是符合多条件的记录。可以通过设置 AbsolutePosition 属性定位到这些记录上。
#5
不能,Find 方法不支持多条件。你可以用 Filter 来做类似的事情。
用Filter好像解决不了我的问题呢?
我是用AODDC控件将查询结果值返回给一个DataGrid控件,原来想用Find方法来在DataGrid控件中查找想要找的记录,即在DataGrid控件的记录集中再定位记录.
#6
可能是希望保持全部记录,仅仅定位在某一符合条件的记录上。
还有一种比较“绕”的方法,来实现楼主类似多条件 Find 的效果。
用两个条件做两轮 Find,记录找到的记录的 AbsolutePosition 属性。在两轮中都出现的 AbsolutePosition 处的记录就是符合多条件的记录。可以通过设置 AbsolutePosition 属性定位到这些记录上。
姑娘姑娘姐真是利害也,知我心者非你也
#7
可能是希望保持全部记录,仅仅定位在某一符合条件的记录上。
还有一种比较“绕”的方法,来实现楼主类似多条件 Find 的效果。
用两个条件做两轮 Find,记录找到的记录的 AbsolutePosition 属性。在两轮中都出现的 AbsolutePosition 处的记录就是符合多条件的记录。可以通过设置 AbsolutePosition 属性定位到这些记录上。
如果通过两次查询的两个条件来定位,好想是定位不了一个唯一的记录
字段1 字段2
EEE 007
AAA 007
BBB 070
AAA 007
CCC 003
如果第一个定位是Find(字段1='AAA')定位到的是第2条记录,
第二个定位是Find(字段2='007')定位到的是第1条记录?
#8
你的数据库表有没有 ID 之类值唯一的字段?
如果有,另用一个查询,找到这些 ID:
在定位时
可以让 List1.Visible = False
如果有,另用一个查询,找到这些 ID:
Set rs = cn.Execute("SELECT id FROM yourtable WHERE 姓名='张三' And 年份='2012'"
Do Until rs.EOF
List1.AddItem rs!id
rs.MoveNext
Loop
Set rs = Nothing
在定位时
.Find("id = " & List1.List(i))
i = i + 1
可以让 List1.Visible = False
#9
可能是希望保持全部记录,仅仅定位在某一符合条件的记录上。
还有一种比较“绕”的方法,来实现楼主类似多条件 Find 的效果。
用两个条件做两轮 Find,记录找到的记录的 AbsolutePosition 属性。在两轮中都出现的 AbsolutePosition 处的记录就是符合多条件的记录。可以通过设置 AbsolutePosition 属性定位到这些记录上。
如果通过两次查询的两个条件来定位,好想是定位不了一个唯一的记录
字段1 字段2
EEE 007
AAA 007
BBB 070
AAA 007
CCC 003
如果第一个定位是Find(字段1='AAA')定位到的是第2条记录,
第二个定位是Find(字段2='007')定位到的是第1条记录?
比如,你在第一轮中找到的记录 AbsolutePosition 有:(不要停在找到的首记录)
1
3
7
在第二轮中找到的记录 AbsolutePosition 有:
3
8
9
106
那就只有记录 3 是两条件都满足的。
ADODC1.Recordset.AbsolutePosition = 3 就可以定位在这条记录上。