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

Вниз

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

 
WG   (2004-01-08 16:57) [0]

Мастера, помогите в простом вопросе - надо сохранить содержание мемо-поля из БД в текстовом файле (вообще-то надо его в Word передать, но, я так понял, проще всего снача в файл). Как использовать TBlobField.SaveToFile - не могу понять синтаксис и всё :(

Table1.FieldByName("HOLDERS").SaveToFile("c:\temp.tmp") - бред ведь ?

По форуму искал, смотрел, но ничего не понял, туплю чего-то :( Объясните по-простому.


 
MV   (2004-01-08 17:32) [1]

Стандартная последовательность:
1.Открываем набор данных.
2.На базе Memo-поля создаем Stream
3.Стреам пишем в файл
4.Убиваем стреам.
5.Закрываем набор данных.


 
WG   (2004-01-08 18:48) [2]

Жутко извиняюсь за назойливость, но нет ли какого конкретного примера ? Я понимаю принцип, проблемы у меня скорее с синтаксисом и увязкой объектов (постоянно то несовместимость типов, то еще что-то)...


 
WG   (2004-01-09 10:21) [3]

Мастера, ну подскажите, плиз. Парюсь ведь с ерундой. Вот беру пример из хелпа -

procedure TForm1.Button1Click(Sender: TObject);

var
Stream1, Stream2 : TBlobStream;
begin
Stream1 := TBlobStream.Create(Table1Notes, bmRead);
try
Table2.Edit;
{ here’s a different way to create a blob stream }
Stream2 := Table2.CreateBlobStream(Table2.FieldByName("Remarks"), bmReadWrite);
try
Stream2.CopyFrom(Stream1, Stream1.Size);
Table2.Post;
finally
Stream2.Free;
end;
finally
Stream1.Free;

end;
end;

Делаю вроде все то же самое:

var Stream1 :TBlobStream;

begin

Stream1 := Table1.CreateBlobStream(Table1.FieldByName("HOLDERS"), bmRead);
try
Stream1.SaveToFile("c:\temp10.tmp");
finally
Stream1.Free;
end;

end;

Пишет, собака, на строке Stream1 := Table1.CreateBlobStream....:

[Error] Unit1.pas(270): Incompatible types: "TBlobStream" and "TStream"

В чем дело ? Нид хелп !!!


 
Desdechado ©   (2004-01-09 16:03) [4]

var Stream1 :TStream;


 
Stas ©   (2004-01-09 16:13) [5]

Ты можешь прямо к полю обратится (Если это возможно)

QueryMyField.SaveToFile ("MyFile.txt")

где QueryMyField - Blob-поле созданное в Designed time


 
Stas ©   (2004-01-09 16:17) [6]

У меня вот так работает
TBlobField(Query.FieldByName("MyField")).SaveToFile("MyFile.txt")


 
WG   (2004-01-09 16:23) [7]

Ладно, с совместимостью я разобрался, конструкция типа

var Stream1: TBlobField;
...
Stream1 := TBlobField( TBlobStream( Table1.CreateBlobStream(Table1.FieldByName("HOLDERS"), bmRead) ));
Stream1.SaveToFile("c:\temp10.tmp");
Stream1.Free;
...

...компилируется, но при выполнении прога падает. Файл temp10.tmp создается, но пустой. Я пробовал так же через TFileStream делать - FileStream.CopyFrom(Stream,0);

но при освобождении (free), файл обнуляется. Блин, уже голову сломал.


 
WG   (2004-01-09 16:28) [8]

2 Stas

Й-е-е-ес ! Заработало !!! Спасибо огромное !!! Вот именно TBlobField(Query.FieldByName("MyField")).SaveToFile("MyFile.txt") мне и надо было !


 
Romkin ©   (2004-01-09 16:50) [9]

И в Ворд мона:

var
Content: string;
v: variant;
begin
Content := FieldByName("MyField")).asString;
V := CreateOleObject("Word.Application");
V.Documents.Add();
V.Selection.TypeText(Content);
V.Visible := true;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
6-2255
Интересующийся
2003-11-26 01:43
2004.02.02
TServerSocet и TClientSocet


1-2148
Крутыш
2004-01-21 18:12
2004.02.02
Проблемы с событием Activate


3-2016
Вомбат
2004-01-06 16:44
2004.02.02
ODBC драйвер файловой системы


1-2100
terra
2004-01-19 23:59
2004.02.02
компиляция


3-1982
NickNaz
2003-12-17 11:22
2004.02.02
Фильтр