我可以在记录集中打开一个表。但是尝试使用 FindFirst 检查现有记录会引发"此类对象不支持操作"。而且我找不到通过 SELECT 或 SQL 优化记录集的方法。
在 IDE 中工作时,使用 DAO 时会提供 FindFirst。记录集变量,因此它必须是对象的一部分。
我认识到很难找到这不是一个受欢迎的地区的信息。但它是受支持的,我认为这是因为至少有一些人仍在使用它。在短期内,仅仅能够检查数据库中的现有记录对我来说将有很长的路要走。
但是,我将进一步感谢任何帮助打开C# DAO文档,参考或任何其他知识的大门。(MS 站点仅引用 VB。我没有找到正确的搜索词。
这是我正在尝试工作的代码...
DAO.DBEngineClass DbEng = new DAO.DBEngineClass();
Db = DbEng.OpenDatabase(txtDB.Text, null, null, null);
Rs = Db.OpenRecordset("Data", DAO.RecordsetTypeEnum.dbOpenTable, null, DAO.LockTypeEnum.dbOptimistic);
Rs.FindFirst(@"Full_Path Like '\DELL-2Tosh-2TB-1tibB1_bad.tib'")
我在 MS 文档中找到了这个:
在 Microsoft Access 工作区中,如果未指定类型,DAO 将尝试创建具有最多可用功能的记录集类型,从表开始
因此,我没有像在 VBA 中几乎总是那样"松散地"打开带有 SELECT 语句的记录集,而是为"大多数可用功能"(DAO(键入打开它。RecordsetTypeEnum.dbOpenTable. VBA 在"黑暗中"做有用的事情。为了增加"功能"并使 FindFirst 功能正常工作,我不得不使用"功能较少"的 DAO 打开它。RecordsetTypeEnum.dbOpenDynaset. 我没有找到任何可以确认它的东西,但我假设当我在 Open 语句中没有提供可选参数时,VB 在直觉 Dynaset 的后台完成了工作。
我之所以发现这个解决方案,只是因为看到 DAO 周围的所有 MS 文档只处理 VB,我开始放弃远离 VB 的希望,并开始将我的项目移植回它。在遵循不同的路径进入不同的文档时,我遇到了这个:
对于 Microsoft Access 工作区中的动态集和快照类型的记录集对象,您还可以使用 Find 方法(如 FindFirst(根据条件查找特定记录。如果未找到该记录,则 NoMatch 属性设置为 True。对于表类型的记录集对象,可以使用 Seek 方法扫描记录。
也没有说明使用表类型,您只能使用 Seek。
我读了这一段,特别是考虑到表格类型是"功能最强大"的另一个陈述,这指的是附加的而不是排他性的功能。