如何在第一个字段上使用多个索引键,在第二个字段上使用多个索引键。
例如:
在MS Access上
Table: Persons(Name[string], Family_name, Age[Int])
Index: Second_key(Name, Age)
在VBA上
DIM Name as string
DIM Age as Integer
DIM Table_1 as Recordset
Name = "Tom"
Age = 20
Set Table_1 = Currentdb.OpenRecorset("Persons")
Table_1.INDEX = "Second_key"
Table_1.SEEK "=", Name, ">", Age
我收到错误“RUN-TIME error'3421'类型转换错误”
MS Access允许按多个键进行搜索,请参阅https://msdn.microsoft.com/en-us/library/bb221096%28v=office.12%29.aspx
请帮助我。
答案 0 :(得分:2)
稍微忽略你的例子,因为对我来说没有意义为什么你要为那种数据使用那个特定的索引,甚至没有提到为什么你想要以这种方式寻找它。我只是假设这部分内容是一个抽象的例子,你只是为了提出一般问题......
仔细检查文档。 Recordset.Seek
并不期望您为多列索引中的每列使用不同的比较器。相反,它将找到匹配比较器的第一个项目和指定的所有值。您希望将当前代码替换为类似Table_1.SEEK ">=", Name, Age
的内容,这些内容会搜索名称> = Name
和Age> = Age
但这可能不是你想要达到的目标,因为它允许Name> Name
和年龄= Age
。因此,您最好只需更改为能够提供所需内容的SQL查询,例如
SELECT TOP 1 Name, Family_Name, Age
FROM Persons
WHERE Name = [SearchName]
AND Age > [SearchAge]
然后使用QueryDef
从这个已保存的参数化查询中获取记录集,如下例所示:https://msdn.microsoft.com/en-us/library/office/ff820966.aspx