德尔福 - 的ClientDataSet - 验证数据

问题描述:

我有被利用的ClientDataSet在Delphi 7应用程序,并在其上的一些操作。 ClientDataSet链接到Intraweb网格。德尔福 - 的ClientDataSet - 验证数据

我做插入或在ClientDataSet的编辑。如何验证每个字段的clientdataset中引入的数据?我无法验证用户在webform上的输入,所以我必须使用ClientDataSet事件进行验证。

LE:我想,当用户进行输入验证数据。不在onbeforepost事件。所以,我把clientdataset放在edit/insert中。用户使在网格的输入,以及我想验证该行的数据中ClientDataSet的像波纹管在图像中:

enter image description here

第一列是串,第二个是整数,第三个也是一个整数。现在,我想在用户输入后验证第三列。必须完成此验证(如果可能的话),只能使用clientdataset事件/黑客。

你应该处理的TClientdataSet BeforePost事件,如果如果你想现场验证的基于数据无效使用abort方法

+0

或者也许更好,提出一个适当的例外,以显示给用户。 – 2011-05-23 10:13:41

+0

我看到了这个问题 - http://*.com/questions/838546/delphi-canceling-a-tdataset-post-in-an-onbeforepost-event。谢谢。+ 1 – RBA 2011-05-23 10:17:19

+0

@RBA在这种情况下,用户被要求确认以保存更改。你想要一个沉默的例外,因为用户已经回答了一个问题。在这种情况下,用户正在发布更新,如果在没有错误消息的情况下忽略它,可能会感到惊讶或困惑。 – 2011-05-23 10:23:29

,你可以处理连接电网的数据集的TDataSource的OnDataChange事件。只要用户更改了某个字段,就会触发它。你应该知道,在其他一些情况下也会触发它。

TField具有用于此目的的的OnValidate事件。它也有一个CustomConstrain属性,可以使用类似于SQL的语法来约束。如果没有给定值,DefaultExpression将让你选择一个值。这些对于单场验证是很有用的。如果您需要跨多个字段进行更复杂的检查,则必须使用数据集或数据源事件。

无论如何,如果IntraWeb表格向服务器发送整个记录,而不是单一领域的编辑,你可能不会,因为它们在网格中输入验证却领域添加代码客户端。