将主键复制到Access中的另一个字段

时间:2010-05-05 08:56:19

标签: sql ms-access ms-office

嘿,我正在努力将主键复制到Access中的另一个字段。 这是无关紧要的,但澄清了我正在比较的内容。

... WHERE Tunniste=" & [Tarkiste] & ""

Tunniste =主键,自动编号,ID(由Access生成。)

Tarkiste =这是我要复制它以进行比较的字段。

我愿意接受建议,我已经尝试使用Form_Load,使用以下代码。

Private Sub Form_Load()

DoCmd.RunSQL "UPDATE Korut SET [Tarkiste]=('" & Tunniste & "');"

End Sub

但是这会将相同的密钥复制到“Tarkiste”字段中的所有条目。

简单地说,无论采用哪种方法,我都希望将1:1字段“Tunniste”复制到“Tarkiste”。

从这个问题开始。 File Picker Replaces All Rows With The Same Choice.

2 个答案:

答案 0 :(得分:1)

如果两个字段在同一个表中,您可以这样做:

DoCmd.RunSQL "UPDATE Korut SET [Tarkiste]=[Tunniste]"

它肯定会运行!

答案 1 :(得分:0)

为了更好地掌握正在发生的事情

单个值在每一行都会更新,因为在加载表单时会计算查询的字符串。 那时变量Tunniste从它绑定的控件中获取一个值(在你的情况下可能是指向同一个表的记录集中的字段的控件)。

因此假设对于Form_Load上的当前记录,Tunniste为1,则数据库最终会运行查询

UPDATE Korut SET [Tarkiste]=('1');

,其中

UPDATE Korut SET [Tarkiste]=[Tunniste];

会做正确的事。

需要注意的事项:

  • 您可以(应该)独立于表单事件测试和构造SQL命令(特别是如果查询参数的非查询参数取决于表单中的值,绑定或未绑定);运行SQL发生在自己的空间
  • 使用可视化查询构建器来练习您的SQL技能(切换到SQL模式并返回以了解会发生什么)
  • 了解数据如何绑定到表单
  • 每次表单加载时都会更新表中的所有记录,并且(如果这是一个普通的编辑表单)这肯定不是最佳的(你至少可以在设置[Tarkiste]时添加一个WHERE条件)价值不同),这将缩小
  • 您似乎在同一字段和静默转换中使用不同的数据类型;这可能适得其反

也许解释一下你想要达到的目标会带来更好的建议。

相关问题