Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Как записать содержимое файла в поле BLOB?   Найти похожие ветки 

 
Nadine   (2002-11-27 13:12) [0]

Подскажите, пожалуйста, как записать содержимое файла в поле BLOB?


 
DN ©   (2002-11-27 15:07) [1]

А это смотря какого типа файл?


 
Nadine   (2002-11-27 15:20) [2]

Файлы с расширением doc, xls и dbf. Но в основном интересуют первые два типа. При выполнении команды Table1.Post возникает ошибка "Указатели LOB не могут разделять транзакции".
var
FromFile: TFileStream;
ToBlobStream: TStream;
I: integer;
begin
Fromfile:=TfileStream.Create(Edit1.Text,fmopenread);
fromfile.Position:=0;
Table1.insert;
Table1.FieldByName("dateRep").AsDateTime:=Now;
Table1.FieldByName("NameRep").AsString:=Edit1.Text;
Table1.FieldByName("ExtRep").AsString:=rightstr(Edit1.Text,3);
ToBlobStream:=Table1.CreateBlobStream(Table1.FieldByName("TestBlobData"),bmReadWrite);
ToBlobStream.CopyFrom(Fromfile,FromFile.Size);
table1.Post;
fromfile.Free;
toblobstream.Free;
end;


 
DN ©   (2002-11-27 16:06) [3]

А зачем вам сохранять doc, xls - файлы в базу, лучше хранить в базе ссылки на файлы, а затем подгружать их по мере необходимости.
В Вашем коде не совсем все понятно: что есть Now? Сегодняшняя дата?


 
Nadine   (2002-11-27 16:24) [4]

Дали такое задание, именно записывать содержимое файлов в поле BLOB. NOW - это сегодняшняя дата. В поле Edit1 записывается название фала, который надо в базу записать. Можно как-нить конкретно указать, что в моем коде неправильно? Пожалуйста, помогите, очень сильно надо.


 
exit   (2002-11-27 16:32) [5]


Table1.FieldByName("TestBlobData").LoadFromStream(FromFile);

и еще, если уж так нужен еще один Stream:

var
ToBlobStream: TMemoryStream;
begin
try
ToBlobStream := TMemoryStream.Create;
finally
ToBlobStream.Free;
end;


 
DN ©   (2002-11-27 16:40) [6]

Поле есть такое в базе?
И лучше наверно сначала прочитать этот файл куда-нибудь в мемо что-ли, а потом в базу что-то вроде этого:
...
Table1.FieldByName("Text").AsVariant:=Memo1.Text;
...



 
Nadine   (2002-11-27 16:46) [7]

Извините, а можно полностью код написать, а то я не очень поняла, куда эти куски вставлять надо.


 
exit   (2002-11-27 16:53) [8]


var
FromFile: TFileStream;
begin
try
Fromfile:=TfileStream.Create(Edit1.Text,fmopenread);
fromfile.Seek(0, soFromBegining);
Table1.insert;
Table1.FieldByName("dateRep").AsDateTime:=Now;
Table1.FieldByName("NameRep").AsString:=Edit1.Text;
Table1.FieldByName("ExtRep").AsString:=rightstr(Edit1.Text,3);
Table1.FieldByName("TestBlobData").LoadFromStream(Fromfile);
table1.Post;
finally
fromfile.Free;
end;
end;


 
Nadine   (2002-11-27 17:05) [9]

Спасибо. Но та же ошибка повторяется "Указатели LOB не могут разделять транзакции".


 
Andy78   (2002-11-27 17:11) [10]

У поля типа Blob должен быть метод loadfromfile. Попробуй его.


 
exit   (2002-11-27 17:21) [11]

А если так:

var
FromFile: TFileStream;
begin
try
Fromfile:=TfileStream.Create(Edit1.Text,fmopenread);
fromfile.Seek(0, soFromBegining);
if Table1.Database <> nil then
begin
Table1.Database.StartTransaction;
Table1.insert;
Table1.FieldByName("dateRep").AsDateTime:=Now;
Table1.FieldByName("NameRep").AsString:=Edit1.Text;
Table1.FieldByName("ExtRep").AsString:=rightstr(Edit1.Text,3);
Table1.FieldByName("TestBlobData").LoadFromStream(Fromfile);
table1.Post;
Table1.Database.Commit;
end;
finally
fromfile.Free;
end;
end;



 
Nadine   (2002-11-27 17:23) [12]

Попробовала LoadFromFile - та же ошибка. У меня база на Oracle 9.


 
Nadine   (2002-11-27 17:30) [13]

Как последний раз г-н exit посоветовал, прога выполнилась без ошибок, то что в базе получилось, еще не проверяла. Большое спасибо.


 
exit   (2002-11-27 17:38) [14]

Она могла выполниться и если Database не назначен. (Это я на всякий случай условие поставил). :-)


 
exit   (2002-11-27 17:39) [15]

P.S. Хотя как это возможно для Оракла... (в смысле "Database не назначен")



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
3-27802
stoper
2002-11-19 21:15
2002.12.09
Первые шаги в SQL. HELP!!! HELP!!!HELP!!!


3-27853
AndrewVolkov
2002-11-20 23:36
2002.12.09
TDbLookupComboBox - обнуление строки???


8-28145
Flying Bird
2002-08-18 01:34
2002.12.09
Проблемы с mediaplayer


1-28041
Jack
2002-11-29 18:00
2002.12.09
Текстовые файлы


3-27807
Кирилл_
2002-11-20 11:19
2002.12.09
О попытках занести null в поле number