如何使用数据库命令“Seek”?和结果“NoMatch”?
这是我的问题:
假设我有这些表:
table1
1 - "a"
2 - "b"
table2
1 -
2 -
3 -
现在,我使用以下代码来比较表:
table2.MoveFirst
Do While Not table2.EOF
table1.Seek "=", table2!field2
If table1.NoMatch Then
go do a lot of things to find that information
Else
table2.Edit
table2!Field2 = table1!field2
table2.update
End If
table2.MoveNext
Loop
但该行
table2!Field2 = table1!field2
不起作用,所以出色地。我很确定我在这里做错了什么,但我在寻找解决方案时遇到问题。我什至不确定我应该谷歌搜索什么...
编辑:字段 2 在表 1 中建立索引,因此“搜索”有效。
Here's my problem:
Let's say I have these tables:
table1
1 - "a"
2 - "b"
table2
1 -
2 -
3 -
Now, I'm using the following code to compare the tables:
table2.MoveFirst
Do While Not table2.EOF
table1.Seek "=", table2!field2
If table1.NoMatch Then
go do a lot of things to find that information
Else
table2.Edit
table2!Field2 = table1!field2
table2.update
End If
table2.MoveNext
Loop
But the line
table2!Field2 = table1!field2
Is not working so well. I'm pretty sure I'm doing something wrong here, but I'm having problems finding a solution. I'm not even sure what I should google...
EDIT: Field 2 is indexed in table 1, so the 'seek' works.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一些笔记。
假设您想要 Table2 中名为 Field1 的字段不匹配的所有记录:
当然,您可以在查询设计窗口中构建查询并进行调整,直到正是您想要的,然后切换到 SQL查看以获取正确的(ish)SQL 字符串。
请将以上内容视为注释,而不是完成的代码。
A few notes.
Let us say you want all the records from Table2 where there is no match on a field called Field1:
You could, of course, build the query in the query design window and fiddle around until is is just what you want, then switch to SQL view to get the right (ish) SQL string.
Please treat the above as notes, not finished code.
...这并不能很好地描述问题所在。
代码是否在这一行停止/崩溃?
它运行时是否没有错误,但没有执行任何超出您预期的操作/其他操作?
我想您正在使用 DAO 记录集。
如果没有更多信息,很难给出建议,但我会尝试一下:
Is
table2
完全是空的吗?您的描述如下所示:<代码>表2
1 -
2 -
3 -
如果是,则整个循环可能根本不会执行。
记录集
table2
可以更新吗?并非所有类型的记录集都支持这一点,这取决于您如何创建它。参见MSDN:Recordset Object (DAO),里面有一个Recordset的列表在开头输入类型。
如果它不可更新,则在调用
.Update
时应该会收到错误消息。...is not a good description of what goes wrong.
Does the code stop/crash at this line?
Does it run without errors, but do nothing / something else than you expected?
I suppose that you're using DAO Recordsets.
It's hard to give advice without more information, but I'll give it a try:
Is
table2
completely empty? Your description looks like this:table2
1 -
2 -
3 -
If yes, the whole loop is probably never executed at all.
Can the Recordset
table2
be updated?Not all types of Recordsets support this, it depends on how you create it. See MSDN: Recordset Object (DAO), there is a list of Recordset types at the beginning.
If it's not updateable, you should get an error when you call
.Update
.如果您使用 DAO 记录集(按照 Christian 的建议),您可以将该行更改
为
“我假设两个 Field2 都是文本数据类型”。
If you're using DAO recordsets (as suggested by Christian) you can change the line
to
I'm presuming both Field2's are of Text data type.