1

我正在尝试插入一条新记录,但有时数据窗口不包括所有列。

在更新属性中选择了所有列,但我没有得到插入语句中的所有列。

4

2 回答 2

1

DataWindow 并不总是包含它生成的 INSERT 语句中的所有列。给定行中包含的列将取决于 DataWindow 维护的该项目的状态。如果 DataWindow 将该列视为 DataModified!,则该列将包含在 INSERT 中。这样,它就不会生成和发送不必要的 SQL。

将列状态设置为 DataModified的自然方式!包括用户输入的数据,如果该列在 DataWindow 中设置了初始值,并且另一列已输入数据。(即具有初始值的列会自动设置为 DataModified!,但只有在另一列设置为 DataModified 之后!)。您可以将列设置为 DataModified的合成方式!以编程方式使用 SetItemStatus() 函数。(请注意,我经常看到有人尝试使用此功能,但最终会产生意想不到的后果;您需要在使用此功能时仔细考虑所有可能性并进行彻底测试。)

如果您的应用程序的行为中仍然存在无法解释的漏洞,我会在 DataWindow 的 SQLPreview 事件中设置一个断点并探索列的值、原始值和项目状态。查看这三个值几乎总能解释生成的 SQL。解释这些值是如何达到当前状态的……通常需要更多的挖掘。

祝你好运,

特里。

于 2013-08-06T19:27:28.167 回答
0

您可能没有在更新前调用 accepttext() 吗?

于 2014-03-19T17:46:23.850 回答