Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Вниз

Как вывести информацию (HTML) в WebBrowser из БД Access 


dmitriyk   (2002-01-04 04:20) [0]

Подскажите пожалуйста !
Как из БД Access, вынять информацию в виде HTML, и запихнуть ее
в WebBrowser для просмотра, не создавая при этом файл на диске.



Cobalt_   (2002-01-04 12:23) [1]

Поконкретнее вопрос:
1) доступ к БД Access (форум БД)
2) работа с WebBrowser и CGI-BIN скриптами(ИМХО) - если не хочешь создавать файл (форум СЕТИ)



kig   (2002-01-04 14:06) [2]

Посмотрите методы интерфейса WebBrowser.Document
Например - writeln



dmitriyk   (2002-01-05 02:23) [3]

Для Cobalt_.
У меня в БД, есть поле, типа OleObject. В это поле, я впихнул файл (*.mht), как BLOB. Затем этот файл, с диска я удалил, специально, в целях эксперимента. Теперь, мне надо, прочитать из БД, из этого поля, эту информацию обратно. Но не создавая файл на диске, (это я могу сделать), мне надо впихнуть ее в WebBrouser, который в моей проге, для отображения в нем этой, прочитанной из БД, информации.
Смысл в том, чтобы НЕ СОЗДАВАТЬ файл на винте, для его отображения через WEBBrouser, а сразу впихнуть его WEBBr... ! Потому, что в БД такой информации много, и для каждой создавать файл, это будет, неверно, всетаки неправильно. Ведь, можно же както и по другому.



kig   (2002-01-06 09:40) [4]

Ну и кто Вам мешает? Считываете информацию из blob поля (образ файла - наверно все-таки *.htm) и натравливаете на этот образ WebBrowser...

Только для того, что бы иметь доступ к WebBrowser.Document (IHTMLDocumnet(2)), проинициализуруйте WebBrowser примерно следующим образом (в терминах vb - дельфи не стоит):

WebBrowser.Navigate("about:blank")
wheel (not WebBrowser.ReadyState <> READYSTATE_COMPLETE)
sleep 100
doevents " в случае Д - Application.ProcessMessage
wend



kig   (2002-01-06 09:43) [5]

Сорри)))

В предыдущем ответе в wheel not конечно ни к чему...)))



dmitriyk   (2002-01-06 16:35) [6]

Вот вы пишете:
Ну и кто Вам мешает? Считываете информацию из blob поля (образ файла - наверно все-таки *.htm) и натравливаете на этот образ WebBrowser...

Так яж именно это и хочу, но я не знаю как это сделать
Как направить тот поток, которым я считываю свое BLOB поле, в мой
WEBBrouser !.

Вот моя процедурка, которая считывает поле и пишет информацию в файл. Этот файл затем, я могу присвоить свойству Navigate. Так у меня нет проблем. Но мне надо без файла, а сразу. Но КАК ?


procedure TForm1.WriteFromFieldToFile(Field : TField);
var
F: TFileStream;
Stream: TStream;
begin
with Query1 do
begin
Stream := (Field.DataSet as TCustomADODataSet).CreateBlobStream(Field, bmRead);
F := TFilestream.Create("E:\TEMP.hmt",fmCreate);
F.CopyFrom(Stream,Stream.Size);
F.Free;
Stream.Free;
end;
end;


Вызывается она просто: WriteFromFieldToFile(Поле в БД);

Подскажите пожалуйста по подробнее. Как мне это сделать.
Если не трудно, дайте исходный код, вроде моего.



kig   (2002-01-06 17:27) [7]

Сходите сюда ))

http://www.sources.ru/delphi/delphi_twebbrowser_faq.shtml

Это решение оттуда

Вопрос: Как загрузить потоковые(stream) данные в WebBrowser не прибегая к открытию файла?

Ответ: Вот пример кода:

function TForm1.LoadFromStream(const AStream: TStream): HRESULT;
begin
AStream.seek(0, 0);
Result := (WebBrowser1.Document as
IPersistStreamInit).Load(TStreamAdapter.Create(AStream));
end;

Автор: Per Larsen



dmitriyk   (2002-01-06 22:08) [8]

Слава богу, есть здвиги, но! как всегда, чтото да не так. На этот раз вот что. Загрузил я той процедуркой, что вы мне дали, мой поток. WEBBrouser его принял. Но, проблема в том, что WEBbr.. отображает их как TEXT, а не как графику.
Не одно так другое. :) Как мне теперь их нормально отобразить ?.
Вот моя процедура, которая это делает


procedure TForm1.KeyStoreClick(Sender: TObject);
var
Stream: TStream;
begin
with Query1 do
begin
Stream := (FieldByName("DataBlob").DataSet as TCustomADODataSet).CreateBlobStream(FieldByName("DataBlob"), bmRead);
WebBrowser1.Navigate("about:Blank");
LoadFromStream(Stream);
end;

Stream.Free;
end;


После нее, мой броузер отображает информацию как текстову. Почему?.
Кстати, спасибо за ссылку.
С праздничком !



dmitriyk   (2002-01-07 02:37) [9]

Сдвиги есть. Но как всегда, вечно какая то проблема остается. На этот раз такая. Мой Броузер, поток глотает. Но выводит информацию как HTML текст. А не как обычно,в графике, как надо. Почему?.

Вот моя процедура, которая читает BLOB поле.

procedure TForm1.KeyStoreClick(Sender: TObject);
var
Stream: TStream;
begin
with Query1 do
begin
Stream := (FieldByName("DataBlob").DataSet as TCustomADODataSet).CreateBlobStream(FieldByName("DataBlob"), bmRead);
WebBrowser1.Navigate("about:Blank");
LoadFromStream(Stream);
end;
Stream.Free;
end;


После нее, WebBrowser - отображает ее как ТЕКСТ. Что на этот раз не так.?
К стати, за ссылку спасибо.
С праздничком.



kig   (2002-01-08 17:39) [10]

Попробуйте модифицировать приведенную LoadFromStream так:

Выполнить

WebBrowser1.Document as
IPersistStreamInit).InitNew();

перед

(WebBrowser1.Document as
IPersistStreamInit).Load...

(по крайней мере в MSDN предлагается именно так)

Если это не поможет - превратите поток в строку и воспользуйтесь
методом write или writeln WebBrowser1.Document




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.02 c
14-9000           Вадим                 2001-12-12 18:21  2002.02.04  
Не хорошо... :((


4-9030            swr                   2001-12-06 09:41  2002.02.04  
Анимированный курсор


3-8754            KonuhovSegey          2001-12-30 11:21  2002.02.04  
Ограничения на транзакцию


1-8887            KvORubin              2002-01-16 19:07  2002.02.04  
Memo1 или RichBox1.


1-8898            nikols                2002-01-16 17:13  2002.02.04  
Как получить текст HTML у TWebBrowser?