![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Non-blob column in table required to perform operation! [D7, IB6.x]
Avreliy © (2003-05-12 16:26:00)Привет мастерам!
Есть форма, работающая с 2мя таблицами: Главная --> Подчиненная.
Доступ к БД(FireBird) осуществляется посредством BDE. Так вот, при попытке внести данные в подчинённую таблицу, появляется сообщение: Non-blob column in table required to perform operation!. Хотя никаких BLOB-полей в таблице не присутствует. Нету и длинных строк, которые трактовались бы как BLOB"ы. Тем не менее данные в таблицу вносятся, при том, столько раз, сколько вызывается метод Postподчинённой таблицы. Может, кто сталкивался с этим? Буду признателен за помощь.
Zacho (2003-05-12 20:20:00) [1]
> Avreliy (12.05.03 20:07)
> Насколько трудоёмок этот процесс?
Зависит от ... Много чего, точнее не скажешь :) Переводить какой-нибудь более-менее большой старый проект - немного проще, чем написать все заново :) В общем, попробуй, узнаешь :)
> И неужели нигде нету бесплатного FibPlus?
Есть какая-то старая версия. Наверное, и новые версии можно найти на каких-нибудь варезных сайтах. Но лично мне было бы стыдно :) За такой отличный продукт - цена совсем небольшая. Жалко денег - пользуйтесь IBX, тоже вполне приемлемо.
Avreliy (2003-05-12 20:07:00) [2]Насколько трудоёмок этот процесс?
И неужели нигде нету бесплатного FibPlus?
Zacho (2003-05-12 19:56:00) [3]
> Avreliy (12.05.03 19:45)
try ... except ... end
или
Application.OnException
или
TDataSet.OnPostError
А не лучше ли перейти на IBX или FIBPlus ? В BDE еще много чего неожиданного (и не всегда приятного) есть :)
Avreliy (2003-05-12 19:45:00) [4]Разобраться я попытаюсь, а вот если не получится, то лучше его игнорировать. Только подскажи, как?
spater (2003-05-12 19:40:00) [5]ok :)
Zacho (2003-05-12 19:40:00) [6]
> Avreliy (12.05.03 18:51)
По предоставленной тобой информации ничего вразумительного сказать уже не могу. Как я уже писал, в свое время работал с BDE, и связи master-detail были, и поля с кодировкой win1251 были, а такую ошибку наблюдал только для строковых полей более 255 символов. Может у кого-нибудь еще идеи будут.
А подавить само сообщение об ошибке конечно можно, но не лучше ли разобраться, почему она происходит ?
Zacho (2003-05-12 19:18:00) [7]
> spater (12.05.03 19:12)
Ветка была про IB. И отвечал я про IB. А с access"ом я дела не имел, заведи свою ветку, укажи в теме ACCESS и жди ответов :)
spater (2003-05-12 19:12:00) [8]> Zacho © (12.05.03 18:56)
Так мне что делать?
База то в акцессе..., и размер поля 300.
Zacho (2003-05-12 18:56:00) [9]
> spater (12.05.03 18:31)
IMHO, master-detail и каскадное удаление здесь ни при чем. Все дело в DBMemo. Этот компонент предназначен для работы с blob (memo) полями, отсюда и ошибка.
Когда я еще работал с BDE :) , в наших проектах были таблицы с самими разными связями, и строковые поля с character set win1251 размером до 255 включительно, и такой ошибки я ни разу не видел.
Avreliy (2003-05-12 18:51:00) [10]За инфо спасибо.
Но как насчёт определённых идей по избежанию появления сообщения?
Zacho (2003-05-12 18:39:00) [11]
> Avreliy (12.05.03 18:24)
В комплекте с Дельфи (начиная с D5) есть IBX (на палитре компонентов - закладка Interbase). Еще есть FIBPlus - гораздо лучше IBX, но стоят 15$. Еще есть IBO (InterBase Objects) - тоже платные, ничего про них сказать не могу,т.к. последний раз смотрел в 1998 г. а с тех пор IBO сильно изменились. Еще можно работать через ADO и dbExpress - по этому поводу тоже ничего сказать не могу, не пробовал. Я сейчас использую IBX. Да, еще осталась предтеча IBX и FIBPlus - FIBC (Free InterBase Components), но использовать их сейчас нет смысла, т.к. примерно с 1999 г. FIBC умерли.
spater (2003-05-12 18:31:00) [12]Удалено модератором
Примечание: Задай вопрос в СВОЕЙ ветке
Avreliy (2003-05-12 18:24:00) [13]И всё же...
Есть какие-то определённые идеи?
> Zacho
Помнится, ты говорил, что давно не работаешь с BDE. Я работаю с базами недолго, поэтому не знаю альтернатив BDE. Какие можешь посоветовать?
Zacho (2003-05-12 18:14:00) [14]
> Johnmen © (12.05.03 17:47)
Уже смутно помню работу с BDE, но кажется мне, что ограничения в 83 там не было. Помнится, были у нас поля с charset win1251 ровно 255, и все было нормально. А 83 - это максимальный размер индекса на поле с collate (а не с character set), и BDE здесь ни при чем.
Johnmen (2003-05-12 18:09:00) [15]Трактуется движком BDE, если указана национальная кодировка. А в общем и целом, конечно, нет !
Avreliy (2003-05-12 18:02:00) [16]Т.е. любое символьное поле размером > 83 трактуется как поле типа BLOB? Как избежать этого, конечно же, не изменяя длины поля? И почему такое ограничение?
Johnmen (2003-05-12 17:47:00) [17]Тогда не более 83
Avreliy (2003-05-12 17:33:00) [18]Кодировка символьного поля - WIN1251
Johnmen (2003-05-12 17:21:00) [19]Какова кодировка символьного поля ?
Avreliy (2003-05-12 17:00:00) [20]Прошу прощения, что в прошлый раз внезапно покинул форум - очень спешил.
-------------
Компоненты доступа стандартные - Table, DataBase, DataSource.
Визуальный компонент - DBGrid.
Максимальный размер поля типа VarChar - 120. Но этот тип я использую не напрямую, а через домен.
Среди остальных типов полей таблицы: Date, Integer, SmallInt, Numeric(9.2).
Также использую несколько полей выборки.