Delphi - ClientDataSet - проверка данных - PullRequest
1 голос
/ 23 мая 2011

У меня есть приложение в Delphi 7, использующее набор клиентских данных, и я выполняю над ним несколько операций. ClientDataSet связан с сеткой Intraweb.

Я делаю вставку или редактирование в ClientDataSet. Как я могу проверить данные, введенные в клиентский набор данных для каждого поля? Я не могу проверить ввод от пользователя в веб-форме, поэтому я должен сделать проверку с помощью событий ClientDataSet.

LE: Я хочу проверить данные, когда пользователь делает ввод. Не на мероприятии накануне. Итак, я поместил клиентский набор данных в edit / insert. Пользователь вводит данные в сетку, и я хочу проверить данные для этой строки в наборе данных клиента, как показано на рисунке ниже:

enter image description here

первый столбец - строка, второй - целое число, третий - также целое число. Теперь я хочу проверить третий столбец после того, как пользователь сделает ввод. Эта проверка должна быть выполнена (если это возможно), только с использованием событий / хаков набора данных клиента.

Ответы [ 3 ]

3 голосов
/ 23 мая 2011

TField имеет событие OnValidate для этой цели. Он также имеет свойство CustomConstrain, которое может использовать SQL-подобный синтаксис для ограничений. DefaultExpression позволит вам выбрать значение, если оно не указано. Они полезны для проверки одного поля. Если вам нужны более сложные проверки более чем в одном поле, вам необходимо использовать набор данных или события источника данных.

В любом случае, если сетка Intraweb отправляет серверу целые записи, а не редактирует отдельные поля, вы не можете проверять поля, поскольку они введены в сетку, но добавляя код на стороне клиента.

3 голосов
/ 23 мая 2011

Вы должны обработать событие TClientDataset BeforePost , а если данные недействительны, использовать abort method

1 голос
/ 23 мая 2011

Если вам нужна проверка на основе полей, вы можете обработать событие OnDataChange TDatasource, соединяющего сетку с набором данных. Это будет срабатывать всякий раз, когда поле было изменено пользователем. Вы должны знать, что это также будет срабатывать в некоторых других ситуациях.

...