我有一个数据表(子)表单,它从存储过程接收记录源,因此它不可更新。我想将一列值(仅在 Access 表单上)复制到未绑定的复选框(新列)中,以便用户可以单击它,然后事情就会发生。
我尝试以不同的方式设置值,但我总是只得到第一行的值 - 插入到所有行。
我从存储过程收到的信息:
ID | 确认的 |
---|---|
1 | 真的 |
2 | 错误的 |
3 | 错误的 |
我想要的是:
ID | 确认的 | 确认副本(未绑定) |
---|---|---|
1 | 真的 | 真的 |
2 | 错误的 | 错误的 |
3 | 错误的 | 错误的 |
如果我将 ConfirmedCopy 的默认值设置为 =[Confirmed],或者使用 VBA 执行相同操作,将得到以下结果。因此,它获取顶行的值并将其插入到 ConfirmedCopy 字段中的所有行:
ID | 确认的 | 确认副本(未绑定) |
---|---|---|
1 | 真的 | 真的 |
2 | 错误的 | 真的 |
3 | 错误的 | 真的 |
这是连续表单中未绑定控件的典型行为。由于它未绑定到记录源中的任何字段,因此它在连续表单的所有记录中显示相同的值。
解决方案:用存储过程的数据填充本地表。在此表中,您还可以添加附加字段。现在,您可以执行查询以用 Confirmed 的数据填充字段 ConfirmedCopy。在您的表单中,您将记录源设置为本地表,现在您可以对 ConfirmedCopy 执行任何您想做的事情。
完成所有操作后,您可以清除本地表以准备下次使用。
请注意,这将导致数据库崩溃,具体取决于您加载到本地表中的数据量。在关闭时自动压缩数据库可能是一个好建议。