Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > DataSet.Cancel (Ms SQL, ADO)


Автор: Принцессочка 5.3.2009, 09:28
В датасэте в событии BeforePost установила проверку на правильность вводимых данных пользователем.


Код

If (NOT ок ) tnen
 DataSet.Cancel


Когда срабатывает метод Cancel, в таблицу пытается сделать insert последней записи в DataSet(не ту которую заводил пользователь, а которая уже была в таблице).

В общем вопрос, почему так?

P.S. Просьба не предлагать установить ограничения на поля в таблице.

Автор: ~FoX~ 5.3.2009, 10:06
Принцессочка, Мало кода....Не понятно, как пользователь вводит данные, какие контролы используются, как вообще к базе подключаешься....

Проверь не обрабатвыаеться ли AfterCancel...
Попробуй вместо Cancel использовать Abort....

Автор: Akella 5.3.2009, 10:44
Цитата(~FoX~ @  5.3.2009,  10:06 Найти цитируемый пост)
Попробуй вместо Cancel использовать Abort....

правильнее сказать: вместо DataSet.Cancel использовать abort

Автор: Принцессочка 5.3.2009, 11:33
Метод Abort не нашла.
Использую кампаненты
TTable
Редактирую через DBgrid

Автор: Kbl4AH 5.3.2009, 11:45
Цитата(Принцессочка @  5.3.2009,  09:28 Найти цитируемый пост)
Когда срабатывает метод Cancel, в таблицу пытается сделать insert последней записи в DataSet(не ту которую заводил пользователь, а которая уже была в таблице).

Цитата(Принцессочка @  5.3.2009,  11:33 Найти цитируемый пост)
Использую компанентыTTaидуTTableРедактирую через DBgrid

так что все-таки используешь?
Еще не поянисла какое действие осуществляет пользователь (редактирование записи или вставку новой?)!
Я так понял, что вставку...
Имхо разреши вставку, потом делай проверку корректности вставленной записи и, если она не корректна, то удаляй ее...

Автор: ~FoX~ 5.3.2009, 11:59
Цитата(Принцессочка @  5.3.2009,  12:33 Найти цитируемый пост)
Метод Abort не нашла.

"
то не метод датасета

HELP:
Цитата

This example checks for a valid entry in a TDBEdit control and calls the Abort procedure if the control is empty; Abort cancels the post before it happens.

Код

procedure TForm1.MyDataBeforePost(DataSet: TDataSet);

begin
if DBEdit1.Text = '' then
  Abort;

end;


Цитата

Имхо разреши вставку, потом делай проверку корректности вставленной записи и, если она не корректна, то удаляй ее...

Угу, и и при попытке в поле с датой ввести букву зю, вроде как ничего и не произойдет?  smile 

Автор: Принцессочка 5.3.2009, 12:00
Цитата

Я так понял, что вставку...

Да!

Цитата

Имхо разреши вставку, потом делай проверку корректности 


Это решение, но не подходит. Не удобно

Меня больше интресует почему делает insert при Cancel, притом insert предыдущей строки в таблице, а не то что пользователь ввел.

событий на OnCancel нет

Автор: ~FoX~ 5.3.2009, 12:08
Принцессочка, выложи куда нить модуль.....или код модуля....

Цитата(Принцессочка @  5.3.2009,  13:00 Найти цитируемый пост)
событий на OnCancel нет


У какого контрола? У TTable, DataSet???
А BeforCancel, AfterCancelб Befor\AfterEdit\Insert?

Автор: Принцессочка 5.3.2009, 12:17
Цитата(~FoX~ @ 5.3.2009,  12:08)
У какого контрола? У TTable, DataSet???
А BeforCancel, AfterCancelб Befor\AfterEdit\Insert?

У TTable.
Есть только событие BeforePost.

Автор: ~FoX~ 5.3.2009, 12:42
В DataSeurce какой нить onUpdate не обрабатываеться?......
И выложи уже код....или это комерческая тайна?

Автор: Принцессочка 5.3.2009, 12:50
Цитата(~FoX~ @ 5.3.2009,  12:42)

И выложи уже код....или это комерческая тайна?

Ага

Автор: Данкинг 5.3.2009, 13:05
Цитата(Принцессочка @  5.3.2009,  12:50 Найти цитируемый пост)
Ага 

Да, представляешь, что станется, если ваши конкуренты наконец-то узнают, что существует метод DataSet.Cancel ! smile smile

Автор: Принцессочка 5.3.2009, 13:10
Цитата(Данкинг @ 5.3.2009,  13:05)

Да, представляешь, что станется, если ваши конкуренты наконец-то узнают, что существует метод DataSet.Cancel 

Какие мы остроумные...........
Но у нас нет конкурентов.

Добавлено через 11 минут и 32 секунды
Цитата(~FoX~ @ 5.3.2009,  12:42)
В DataSeurce какой нить onUpdate не обрабатываеться?......

Займусь ка я этим завтра, а то уже ничего в голову не лезит , да и устала.

Автор: Данкинг 5.3.2009, 14:55
Цитата(Принцессочка @  5.3.2009,  13:10 Найти цитируемый пост)
Но у нас нет конкурентов.

Конечно, какие же конкуренты у прЫнцесс. smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)