Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка изменения длинных символьных полей [D6, D7, FireBird 1.0]


Enty ©   (2003-04-03 12:05:00) 

Проблема выглядит следующим образом:
В базе данных создана таблица, одно из полей которой должно содержать приблизительно 400 символов текста. Тип поля был объявлен как char(400). В поле записывается информация из переменных типа String. Сразу после создания (для теста) были добавлены в таблицу 3 записи - прошло на ура.
На следующий день при попытке добавить новую запись в таблицу на строке Post стала появляться ошибка: "Project raised exception class EDBEngineError with message "Non-blob column in table required to perform operation". Process stopped." При чем запись в таблице таки появлется!
Попытки поменять поле на BLOB с подтипом 1 или на varchar ни к чему не привели - ошибка выдается всё время одинаковая, таблица заполняется.
Исчезает ошибка только если задать поле как char(255), т.е. строка и не более. Также ошибка исчезает, если таблицу удалить, создать новую - тогда 1-2 записи он пропускает без ошибки, затем она появляется снова.

Пожалуйста, я очень прошу, помогите! Я уже всю голову себе изломала - не могу принять причину, и главное - что делать... Очень жду ответов.

P.S. Самое обидное, что в этой же базе данных есть таблица, которая имеет поле varchar(800), и с ним нет никаких проблем. Единственное отличие, что там заполнение этого поля идет из dbMemo.


Enty   (2003-04-03 12:51:00) [1]

>zacho ©

Вот честное слово есть некоторые причины, по которым еще используется BDE.
А проблему решать всё равно нужно.


zacho   (2003-04-03 12:31:00) [2]


> Johnmen © (03.04.03 12:21)

Согласен. Но у меня почем-то появилось подозрение, что в данном случае приложение новое. Иначе про эту проблему разработчики давно бы уже знали :-)


Johnmen   (2003-04-03 12:21:00) [3]

>zacho © (03.04.03 12:13)
>Ну зачем сейчас использовать BDE ???

Возможно, затраты на перезатачивание старого приложения под IBX,FIBPlus,IBO весьма высоки...:)
И нет средств на написание нового...


zacho   (2003-04-03 12:13:00) [4]

Это давно известная фича BDE - строковые поля более 255 символов оно считает блобами. Так что надо или польоваться соответствующими компонентами типа dbMemo, или вообще отказаться от BDE.
Есть же нормальные компоненты доступа к IB - IBX,FIBPlus,IBO..
Ну зачем сейчас использовать BDE ???


Наверх

Титульная страница Поиск, карта сайта Написать письмо