Вопрос: как обработать ввод неверной даты в DBgrid?
Суть проблемы: если в поле типа datetime ввести что-то левое (а grid это вполне позволяет) - то при исключении выдается диалог с двумя кнопками (ok и cancel) из которых одна - просто прибивает приложение.
Глупый вопрос: как отловить это исключение? (поиск как-то не помог)
[Solved] exception при вводе левой даты в dbgrid
Модератор: Модераторы
[Solved] exception при вводе левой даты в dbgrid
Последний раз редактировалось count 26.03.2012 20:20:53, всего редактировалось 1 раз.
Уже сотый раз , наверное , скажу , сделайте тестовый проект с демонстрацией ошибки
тестовый проект во вложении, первая колонка - целые числа, там даже ничего левого не введешь, а вот в дату (вторая колонка)- завсегда можно всякий мусор вписать и поймать исключение....
пробовал под win32 и под linux
и такое ощущение что незнаю чего-то совсем элементарного... заранее благодарен за помощь.
пробовал под win32 и под linux
и такое ощущение что незнаю чего-то совсем элементарного... заранее благодарен за помощь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ну вообщето это нормально выдавать ошибку при неверной инфе. Как вариант можно проверять символы до ввода
http://forum.vingrad.ru/topic-46953.html
Если только по одному столбцу, то тоже можно , должны быть свойства DBGrid
http://forum.vingrad.ru/topic-46953.html
Если только по одному столбцу, то тоже можно , должны быть свойства DBGrid
проверять символы до ввода - подскажите как в случае с датой? (я лично не догнал: там может быть все что угодно в зависимости от региональных настроек, которые пользователь волен крутить как левой задней пятке хочется)
на винграде был еще вариант с обработкой на датасете - однако проблема в гриде: пробуем в приложенный проект вписать обработчик onbeforepost у датасета (memdataset там):
обратите внимание - в нормальной ситуации выводится сообщение, производится вставка, если вместо даты "бред" - должно быть сообщение "бред" а потом исключение, обработанное нами. таки нет, поимеем исключение. у грида приемлимых обработчиков не заметил (может плохо смотрю?). какие свойства грида вы имели в виду?
Добавлено спустя 1 минуту 30 секунд:
и чсх в первую колонку почему-то ввести "бред" не получается...
Добавлено спустя 18 часов 50 минут 8 секунд:
на базовом форуме ответили:
http://lazarus.freepascal.org/index.php ... 443.0.html
на винграде был еще вариант с обработкой на датасете - однако проблема в гриде: пробуем в приложенный проект вписать обработчик onbeforepost у датасета (memdataset там):
Код: Выделить всё
procedure TForm1.MemDataset1BeforePost(DataSet: TDataSet);
var d:TDateTime;
begin
if DBGrid1.SelectedField.FieldName ='MemDataset1Field2' then
begin
try
ShowMessage(DBGrid1.SelectedField.Value);
d:=DBGrid1.SelectedField.Value;
except
DBGrid1.SelectedField.Value:=now;
end;
end;
end; обратите внимание - в нормальной ситуации выводится сообщение, производится вставка, если вместо даты "бред" - должно быть сообщение "бред" а потом исключение, обработанное нами. таки нет, поимеем исключение. у грида приемлимых обработчиков не заметил (может плохо смотрю?). какие свойства грида вы имели в виду?
Добавлено спустя 1 минуту 30 секунд:
и чсх в первую колонку почему-то ввести "бред" не получается...
Добавлено спустя 18 часов 50 минут 8 секунд:
на базовом форуме ответили:
http://lazarus.freepascal.org/index.php ... 443.0.html
