![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись 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 поля... Может, он и в самом деле запредельный...