![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оле объект и База данных [D7, Paradox]
niko4543 © (2004-06-28 09:10:00)Здравствуйте.
Подскажите пожайлуста как можно сохранить в базу данных в блоб
поле ОЛЕ объект, вернее в ОЛЕ загружен вордовский документ и его надо сохранить в базу в блоб поле минуя сохранение в файл.А сохранённые оле объекты как файл и подгруженные в ОЛЕ контейнер я сохраняю таким образом:
var
OLE : TOLEContainer;
TBS : TBlobStream;
begin
OLE:=FindComponent('OleContainer1') as TOLEContainer;
if Assigned(OLE) then
with OLE do begin
{добавляю в таблицу новую запись}
Table1.Insert;
{создаюм поток, связанный с BLOB полем}
TBS:=TBlobStream.Create(Table1.FieldByName('OLE') as
TBLOBField, bmReadWrite);
{сохраняем OLE-объект в поток}
SaveToStream(TBS as TStream);
{уничтожаю поток}
TBS.Free;
Exit;
кно это к сожелению не подходит к загруженному в в ОЛЕ контейнер документ Ворд.
niko4543 (2004-07-03 09:09:00) [1]>>>>>>>> bushmen и КурдльПомогите мне разобраться где находится поток у DataSet.Если честно не врублюсь. Сколько всего перепробывал не получается.
> bushmen © (28.06.04 14:32) [22]
> Попробуй сам разобраться. Все лежит на поверхности. Если
> что-то не додумаешь, задавай вопросы.
Блин не получается за......лся!!!!!!!!!!!!
niko4543 (2004-07-03 09:07:00) [2]>>>>>>>> bushmen и КурдльПомогите мне разобраться где находится поток у DataSet.Если честно не врублюсь. Сколько всего перепробывал не получается.
> Попробуй сам разобраться. Все лежит на поверхности. Если
> что-то не додумаешь, задавай вопросы.
bushmen (2004-06-28 14:32:00) [3]>niko4543 (28.06.04 13:26) [20]
Попробуй сам разобраться. Все лежит на поверхности. Если что-то не додумаешь, задавай вопросы.
Курдль (2004-06-28 14:04:00) [4]Я приветствую твое упорство, но без знаний того, что TDataSet - не просто св-во TDataSource, а базовый класс для большинства компонентов, работающих с наборами данных, написать утилитку будет проблематично. Я в [3] привел абсолютно исчерпывающий пример кода в полном соответствии с заданным вопросом. Извини, конечно, что не всю "утилитку" и не в твоих наименованиях. Так что прервал дискуссию я не из вредности, а потому, что предугадываю цепочку твоих дальнейших вопросов, которым не будет конца, пока "утилитка" не заработает.
Написать на мыло мне можно (для этого я его и оставил), но я не являюсь лучшим знатоком Делфей, так что лучше обращайся к коллективному разуму прямо на этот сайт.
niko4543 (2004-06-28 13:26:00) [5]Нет невкоем случае, я необижаюсь.Я дейчтвительно благодарен вам за ответы (>>>>>>bushmen,Курдль). Просто я задолбался с этим приложением мне надо сегодня написать эту утилитку, но увы неполучается . А базу я связал как положено Table1 и DataSource1, ладно буду дальше разбераться сам, если что напишу.
bushmen (2004-06-28 13:09:00) [6]>niko4543 (28.06.04 13:00) [17]
Во-первых, не надо обижаться. Раз ты пишешь приложение работы с базами данных, то ты ДОЛЖЕН использовать компоненты доступа к данным. Теперь понятнее стало?
niko4543 (2004-06-28 13:05:00) [7]Во всяком случае я могу написать тебе на мыло?. Когда прочту книжку разумеется.
niko4543 (2004-06-28 13:00:00) [8]Смешно. Спасибо за ответы, большое спасибо.
Курдль (2004-06-28 12:58:00) [9]Сегодня не получится (во всяком случае - бесплатно).
niko4543 (2004-06-28 12:47:00) [10]>>>Курдль
Я с удовольствием возбму книжку и почитаю но мне надо сегодня а под рукой нет книжки,а мне надо срочно. Объясни пожайлуста в чём я ошибся. Насколько я помню DataSet это свойство DataSource.
???????????????????????????????????????????????????????
Курдль (2004-06-28 12:19:00) [11]Я подскажу. Возьми книжку про Делфи + ДБ и посвяти себя её чтению хоть на недельку. Потом мы будем говорить на одном языке.
niko4543 (2004-06-28 12:17:00) [12]Я не профессионал это во первых, а во вторых у меня долгое время небыло практики и в третьих я уже задолбался. Не подскажешь? :))
bushmen (2004-06-28 11:25:00) [13]>niko4543 (28.06.04 11:05) [11]
Как же ты с такими знаниями пишешь программу? :))
niko4543 (2004-06-28 11:05:00) [14]DataSource1 - есть
Table1 - есть
DataSet в DataSource1 может есчё компонент какой нибудь нужен??????
Курдль (2004-06-28 10:58:00) [15]Ну, крындец! Не настолько же я добрый!
Попробуй сделать FindComponent('DataSet1') по всем своим проектам! :(
niko4543 (2004-06-28 10:56:00) [16]Кстати пишет что: Undeclared identifier: 'DataSet1'. Что за хрень???
Курдль (2004-06-28 10:44:00) [17]
> niko4543 (28.06.04 10:01) [7]
> в частности что это: sdqTemplate.State
> и это sdqTemplateTEM_DATA
Хорошо. Я сёдня добрый...
DataSet1.State
DataSet1.FieldByName('TEM_DATA').LoadFromStream(mstr);
niko4543 (2004-06-28 10:01:00) [18]в частности что это:
sdqTemplate.State
и этоsdqTemplateTEM_DATA
niko4543 (2004-06-28 10:00:00) [19]
mstr.Seek(0, soFromBeginning);эту строчку я понял выставляется поток на начало.
if not ( sdqTemplate.State in [dsInsert, dsEdit]) then sdqTemplate.Edit;а вот с этим туго
sdqTemplateTEM_DATA.LoadFromStream(mstr);
Курдль (2004-06-28 09:55:00) [20]Тебя должен интересовать код со строчки "...
mstr := TMemoryStream.Create;" - создание потока.
Потом содержимое контейнера помещается в этот поток.
Далее - указатель потока выставляется на начало.
ДатаСэт (в моем случае TSDQuery) устанавливается в режим редактирования.
В BLOB-поле (sdqTemplateTEM_DATA) грузятся данные из потока.
Освобождается память, выделенная под поток.