Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

Как записать содержимое файла в поле 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.014 c
1-27955
Alexander Vasjuk
2002-11-29 12:38
2002.12.09
Отображение связанных данных


1-28058
Mosh
2002-11-27 21:39
2002.12.09
Помогите, люди добрые!!


14-28237
stone
2002-11-18 09:36
2002.12.09
On-Line переводчик


14-28224
Cr@sh
2002-11-17 15:08
2002.12.09
Помогите с физикой.


1-27944
sers
2002-11-29 09:14
2002.12.09
Много ли занимает форма в памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский