Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запихать картинку в blob поле базы Access / 3 сообщений из 3, страница 1 из 1
26.08.2003, 08:46
    #32246993
dishlo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запихать картинку в blob поле базы Access
в блоб поле MSSQL 2000 запихивается без проблем, но стоит в том же самом коде поставить поле базы Access, то возникает проблема - пихает первые четыре байта и все.
никаких ошибок не выдает.
Пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TMainForm.Button5Click(Sender: TObject);
var
blbAccess, blbMSSQL: TBLOBField;
strm: TADOBLOBStream;
//mem: TMemoryStream;
begin
qAccess.Edit;
qMSSQL.Edit;
blbAccess := (qAccess.FieldByName('pic') as TBLOBField);
blbMSSQL  := (qMSSQL.FieldByName('pic') as TBLOBField);
blbAccess.LoadFromFile('PICTURE.BMP');
blbMSSQL.LoadFromFile('PICTURE.BMP');

blbAccess.SaveToFile('AccessPICTURE.BMP');
blbMSSQL.SaveToFile('MSSQLPICTURE.BMP');
qAccess.Post;
qMSSQL.Post;
end;


То же самое если загружать из потока LoadFromStream и присваивать присваивать напрямую через Value.
В форуме нашел решение работать через параметр (сам не пробовал)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var 
ole: TFileStream; 
Rs: TADOQuery; 
begin 
ole:=TFileStream.Create('F:\Price.xls',fmOpenReadWrite); 
size:=ole.Size; 
Rs:=TADOQuery.Create(nil); 
rs.Connection:=dbs; 
rs.SQL.Text:='insert into t_docs (doc) values (:p)'; 
rs.Parameters.ParamByName('p').LoadFromStream(ole,ftBlob); 
rs.ExecSQL; 
end;


но это изврат, кто нибудь знает человеческое решение?
...
Рейтинг: 0 / 0
26.08.2003, 08:49
    #32246995
dishlo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запихать картинку в blob поле базы Access
в коде имелось ввиду что

Код: plaintext
1.
blbAccess.SaveToFile('AccessPICTURE.BMP'); - в файле четыре первых байта картинки 
blbMSSQL.SaveToFile('MSSQLPICTURE.BMP'); -- нормалная картинка
...
Рейтинг: 0 / 0
26.08.2003, 09:22
    #32247020
dishlo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запихать картинку в blob поле базы Access
Вопрос снимается
Решение проблемы:
Поле Blob из базы данных аксес было типа ftMemo

Код: plaintext
blbAccess.BlobType = ftMemo;


Хотя
Код: plaintext
blbAccess.IsBlob = true;

для него действовало правило PChar, о том что конец строки это ноль.
В данном файле пятый символ был ноль.
При смене типа на ftBlob
Код: plaintext
blbAccess.BlobType = ftBlob;


это правило переставало действовать и файл писался правильно.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запихать картинку в blob поле базы Access / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]