我正在尝试插入新记录,但有时数据窗口不包括所有列。
在更新属性中选择了所有列,但我没有获得insert语句中的所有列。
答案 0 :(得分:1)
DataWindow不会始终在其生成的INSERT语句中包含所有列。列在给定行上的包含将取决于DataWindow维护的该项的状态。如果DataWindow将该列视为DataModified !,该列将包含在INSERT中。这样,它就不会生成和发送不必要的SQL。
列的状态将设置为DataModified的自然方式!包括用户输入的数据,以及该列是否在DataWindow中设置了初始值,另一列是否已输入数据。 (即具有初始值的列将自动设置为DataModified!,但仅在另一列设置为DataModified之后!)。 合成方式可以将列设置为DataModified!是以编程方式使用SetItemStatus()函数。 (请注意,我经常看到人们尝试使用此功能,最终会产生意想不到的后果;在使用此功能并彻底测试时,您需要仔细考虑所有可能性。)
如果应用程序的行为中仍然存在无法解释的漏洞,我会在DataWindow的SQLPreview事件中设置断点,并探索列的值,原始值和项状态。查看这三个值几乎总能解释生成的SQL。解释这些价值如何达到当前状态......通常需要更多的挖掘。
祝你好运,特里。
答案 1 :(得分:0)
你可能在更新之前没有调用accepttext()吗?