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

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

Сохранение BLOB в таблицу [D7, Access]


TRESDA ©   (2006-12-13 13:11:00) 

Мир Вам великие Мастера!!

Такая проблема возникла при передачи при помощи SQL-запроса картинки загруженной в DBImage1 в таблицу.

Делаю всё при помощи следующего запроса:
with form1.ADOQuery1 do
begin
SQL.add('insert into house (image) ');
sql.add('  values (:image)');
parameters.ParamValues['image'].LoadFromFile(OpenPictureDialog1.FileName);
execsql;

Однако при отработке запроса вылетает сообщение:
"Invalid variant operation"

Грабли в принципе понятно в чем, но как с ними справиться.

Заранее Большое спасибо за оказанную помощь, действительно ОЧЕНЬ нужно сделать


clickmaker   (2006-12-14 10:13:00) [1]

parameters.items[index].DataType := ftBlob;
parameters.items[index].LoadFromFile(fileName, ftBlob);


ЮЮ   (2006-12-14 08:47:00) [2]

values (' c:\11.bmp')
Издеваешься? :)  Именно ' c:\11.bmp' там и записано. Надо задать переменной типа стринд лдлину равную длине файла и поместить в ней СОЖЕРЖИМОЕ файла, с помощью FileStream, например, или FileRead. Ты же поместил ИМЯ ФАЙЛА


Tresda   (2006-12-14 07:45:00) [3]

select * from dbo.TableImage
insert into TableImage(MyImage) values ('c:\11.bmp')

Сработало. Но в поле запись такого типа
MyImage                                                                                                                                            0x633A5C31312E626D70
как посмотреть не знаю.

Попробую большую и с расширением другим.
insert into TableImage(MyImage) values ('c:\06_podborka_8.jpg')
Тоже срабатывает .
0x633A5C30365F706F64626F726B615F382E6A7067


ЮЮ   (2006-12-14 07:11:00) [4]


> Однако здесь он от меня ждёт опять Variant, а я ему TBitmap
> даю.


Самый лучший variant тут, ИМХО, varString. А вот каким образом ты устаноаишь длину строки и заполнишь её байтами - куча способов.


TRESDA   (2006-12-14 06:55:00) [5]

Пробую еще делать так, на первой кнопке загружаю картинку в DBImage, а во второй отправляю с DBIMAGE в таблицу house.

Процедура первой кнопки:
Var B: TBitmap;
begin
if messagedlg('Добавить изображение?', mtwarning, [mbYes, mbNo],0)=mrNo
then
exit
else
dbimage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
try
if OpenPictureDialog1.Execute then
begin
B := TBitmap.Create;
B.LoadFromFile(OpenPictureDialog1.FileName);
DBImage1.Picture.Assign(B);
end
else
exit;
finally
B.Free;

Процедура второй кнопки:

with form1.ADOQuery1 do
begin
sql.clear;
SQL.add('insert into house (image) ');
sql.add(' values (:image)');
parameters.ParamValues['image']:=B;
execsql;

Вываливает ошибка:
'Variant' and 'TBitmap'

Однако здесь он от меня ждёт опять Variant, а я ему TBitmap даю.

Блин что делать? У кого может другие вариант есть??? ГОРЮ!!!


Наверх

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