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

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

Запись BLOB в Access используя TQuery [D5, MS Access]


romano.ru ©   (2002-04-11 20:32:00) 

Может кто встречался с такой проблемой, помогите кто сможет...

есть таблица в MS Access:
T_DATA с полями
F0 - номер записи
F1 - текст
F2 - BLOB

нужно запихнуть картинку...

не мудрствуя лукаво делаю следующее:


Query1.SQL.Add("INSERT INTO T_DATA(F1,F2) VALUES(:F1, :F2)");
Query1.Params[0].AsString := Edit1.Text;
Query1.Params[1].LoadFromFile("<filename>", ftBlob);
Query1.ExecSQL;


При попытке выполнить происходит следующее:
если файл меньше 256 байт, то все прекрасно пишется в базу, если же файл больше - выдается ошибка
General SQL error
Слишком большая длина поля


Если пользовать TTable - проблемы нет, но по ряду причин нужно пользоваться только TQuery

Если кто встречался с этим глюком - раскажите, please, как с ним бороться!


romano.ru   (2002-04-13 01:39:00) [1]

Вопрос, к счастью, разрешился!
Проблема исчезла, как только я перенастроил алиас на работу через ODBC-драйвер.
Работает, правда, медленее, но зато работает :)

Народ, спасибо за участие!


roottim   (2002-04-12 08:43:00) [2]

хм!.. связка query+updatesql
и почему вариант.. надо явно указать параметру тип ftBlob


romano.ru   (2002-04-11 23:08:00) [3]

Спасибо за ответ!

Все бы ничего, но при вызове методов Insert или Edit вылезает Exception:
Query1: Cannot modify a read-only dataset

:(


Aleksandr   (2002-04-11 20:47:00) [4]

Как-то совсем хитро... Тут могут и параметры ругаться, Variant тоже не резиновый... Не проще ли попробовать:
Query1.SQL.Add("SELECT * FROM T_Data");
Query1.Open;
Query1.Insert;
Query1.FieldByName("F1").AsString:=Edit1.AsString;
(Query1.FieldByName("F2") AS TBlobField).LoadFromFile(...);
Query1.Post;

если не покатит, что вряд ли, то загрузи файл в поток и сравни его размер с BlobSize поля... Может, он и в самом деле запредельный...


Наверх

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