Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибки EConvertError и EDataBaseError 
V
    Опции темы
Kuper
Дата 31.1.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



При вводе значения в поле TDBEdit отличное от типа, указанного для данного поля в БД вылетает ошибка
EConvertError (в некоторых случаях - EDataBaseError).
Помогите её отловить, плиз!

P.S.
Пробывал и на OnPostError у DataSet и на OnExit у компонента, но до них не доходит.
Пробывал отловить глобальным обработчиком, но это не устраивает заказчиков.
PM MAIL   Вверх
Romikgy
Дата 31.1.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



это исключение в try/except его , там и лови


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kuper
Дата 31.1.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



Цитата(Romikgy @ 31.1.2006, 12:25)
это исключение в try/except его , там и лови

Понятно, что в try/except!
Но куда его вставить, в какой метод? Ошибка вылетает при попытке потерять фокус компонентом.

Это сообщение отредактировал(а) Kuper - 31.1.2006, 12:43
PM MAIL   Вверх
_hunter
Дата 31.1.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



вот туда и вставляй


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kuper
Дата 31.1.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



Проблема то в том, что я не могу понять в каком месте и в какой момент вылетает ошибка. smile
PM MAIL   Вверх
Romikgy
Дата 31.1.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Смотри где происходит конвертация данных, исходники компонента посмотри, дабы знать где могут случится исключения


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kuper
Дата 31.1.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



Спасибушки! smile
Добавлено @ 13:37
Romikgy, если не трудно, то скажи что именно искать!
PM MAIL   Вверх
Romikgy
Дата 31.1.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Kuper @ 31.1.2006, 12:26 Найти цитируемый пост)

Спасибушки!

Интересно за что , если
Цитата(Kuper @ 31.1.2006, 12:26 Найти цитируемый пост)

скажи что именно искать

smile
Код

procedure TDBEdit.DataChange(Sender: TObject);
begin
  if FDataLink.Field <> nil then
  begin
    if FAlignment <> FDataLink.Field.Alignment then
    begin
      EditText := '';  {forces update}
      FAlignment := FDataLink.Field.Alignment;
    end;
    EditMask := FDataLink.Field.EditMask;
    if not (csDesigning in ComponentState) then
    begin
      if (FDataLink.Field.DataType in [ftString, ftWideString]) and (MaxLength = 0) then
        MaxLength := FDataLink.Field.Size;
    end;
    if FFocused and FDataLink.CanModify then
      Text := FDataLink.Field.Text
    else
    begin
      EditText := FDataLink.Field.DisplayText;
      if FDataLink.Editing and FDataLink.FModified then
        Modified := True;
    end;
  end else
  begin
    FAlignment := taLeftJustify;
    EditMask := '';
    if csDesigning in ComponentState then
      EditText := Name else
      EditText := '';
  end;
end;

Я так понял , что дбедит работает только с данными типа текст, а что ты пихаешь в него, в дбедит, щаз еще в хелпе посмотрю smile
Добавлено @ 13:54
Кстати мы все в общем да в общем, покажи код исходный твой, и скажи че делаешь/вводишь?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alex
Дата 31.1.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Обрабатывать и ловить это сообщение нужно не в dbedit, а в поле с которым связан этот dbedit. У любого поля есть событие OnValidate. Вот описание из хелпа:
Цитата

Write an OnValidate event handler to validate changes made to the data in the field, just before the data is written to the current record buffer. The EditMask property allows validation of the data on a character by character basis while it is being entered by the user. OnValidate allows an application to validate the data as a whole.
When the value of a field component is assigned programmatically, validation by the EditMask is bypassed, since there is no data-aware control to enforce adherence to the mask. OnValidate allows an application to validate such data before it is posted to the database table.

To reject the current value of the field from the OnValidate event handler, raise an exception.

When writing the value of a field to the current record buffer, the following steps occur:

1The OnValidate event handler is called to validate the data.
2If the OnValidate event handler does not raise an exception, the data is written to the current record buffer.
3If writing the data does not raise an exception, the OnChange event handler is called to allow a response to the change.



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Kuper
Дата 31.1.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



Спасибо за помощь!Решение нашлось с использованием метода ValidateEdit,унаследованного от TCustomMaskEdit.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1779 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.