Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / BLOB INTERBASE / 16 сообщений из 16, страница 1 из 1
07.05.2004, 22:34:01
    #32511299
barsuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
Подскажите (покажите!) пример как-нибудь можно работать с BLOB-полями через QUERY(insert,update),а то в книгах все примеры с TABLE ю
...
Рейтинг: 0 / 0
08.05.2004, 12:12:34
    #32511399
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
SQL: INSERT INTO TABLE(ID, BLOB_FIELD) VALUES(:ID, :BLOB_FIELD)

Пишешь:
ibquery.paramBYName('BLOB_FIELD').LoadFromStream(Your_stream);

В поток предварительно заносишь нужные данные
...
Рейтинг: 0 / 0
08.05.2004, 20:56:49
    #32511585
barsuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
Пробовал и так ,и этак в примерах к Делфе все вроде тоже правильно написано, НО НЭ РАБОТАЕТ! Поэтому и прошу ЖИВОЙ ПРИМЕР! (То есть кусочек кода функционирующего)
На "LoadFromStream(Your_stream)" Делфи обматерилась 125 раз, то не устраивает тип, то параметры. Не поленился списал с Хелпа целиком несколько образцов кода (чтобы не было вопросов по версии Делфи)
ничерта не работает....
...
Рейтинг: 0 / 0
11.05.2004, 07:35:15
    #32512499
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
TIBTable.Fields.FieldByName('BOLB_FIELD').LoadFromStream(Stream: TStream)

- работает!

П.С. Можно попробовать заменить прокладку между ушей.
...
Рейтинг: 0 / 0
11.05.2004, 11:34:49
    #32512811
Scream
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
На Дельфе не пишу, могу кусок своего кода на Билдере подогнать.
Надо?

--
LET`S ROCK!
...
Рейтинг: 0 / 0
11.05.2004, 14:53:52
    #32513214
IGORRR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
Вот пимер из Buildera, как записать в BLOB картинку из TImage:

Код: plaintext
1.
2.
3.
TMemoryStream *s = new TMemoryStream();
        Image1->Picture->Bitmap->SaveToStream(s);
        IBQuery1->IBQuery1IMAGE->LoadFromStream(s);
        IBQuery1->Post();
ЗЫ: IMAGE - поле BLOB
...
Рейтинг: 0 / 0
11.05.2004, 15:34:39
    #32513302
barsuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
TTable мне нужен как козе стоп-сигнал , так же как и Query в режиме LifeUpdate (так любой сбой по питанию завалит мне базу) интересует именно поток и тому подобное ,что бы минимизировать время захвата базы
...
Рейтинг: 0 / 0
11.05.2004, 15:36:06
    #32513306
barsuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
TTable мне нужен как козе стоп-сигнал , так же как и Query в режиме LifeUpdate (так любой сбой по питанию завалит мне базу) интересует именно поток и тому подобное ,что бы минимизировать время захвата базы
...
Рейтинг: 0 / 0
11.05.2004, 15:37:09
    #32513310
barsuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
TTable мне нужен как козе стоп-сигнал , так же как и Query в режиме LifeUpdate (так любой сбой по питанию завалит мне базу) интересует именно поток и тому подобное ,что бы минимизировать время захвата базы
...
Рейтинг: 0 / 0
11.05.2004, 16:01:38
    #32513368
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
А ещё раз, слабО?!
...
Рейтинг: 0 / 0
11.05.2004, 16:01:55
    #32513370
Scream
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
2 barsuk:
Какой сбой питания??? Ты о транзакциях что-нибудь слышал?
IGORRR , по-моему, привел отличный пример работы с BLOB `ом... Так и надо.
А после Post () (или в OnPost ) даешь CommitRetaining () - и можешь иметь ввиду все сбои питания вместе взятые.

--
LET`S ROCK!
...
Рейтинг: 0 / 0
11.05.2004, 16:23:58
    #32513427
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
barsuk - это akuz :-)
...
Рейтинг: 0 / 0
11.05.2004, 20:28:36
    #32513952
barsuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
IGGOR-ю спасибо , це фраза была wadman-у .
В общем я нашел где яйца прятались (для кверей надо было ОБЯЗАТЕЛЬНО указывать СубТип блоба) и все поперло как надо .
Теперь следующий вопрос: в блоб надо пихать данные причем это будет и Word , и Excel, и рисунки.Пока есть мысля через ALЁ-контейнер, если кто может поделиться опытом будьте любезны!
P.S.Про Commit and транзакции хорошо было сказано, но проблемма была в том,что в приводимом примере все работало только в ON-LINE (это и есть захват базы - "рекорда") RequestLife , а этот режим обещает много интересного для админа. Вообще интересно было бы пообщаться с людьми которые вживую ведут задачи, а не теоретически по учебнику дают советы не попробовав даже скомпилить свои мысли.
...
Рейтинг: 0 / 0
11.05.2004, 23:10:07
    #32514039
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
А можно я?! Вроде иногда программлю... Правда все время от BOL и DevGuide с LangRef'ом голову не отрываю, да и Delphi Help очень пособляет... В общем держи кусок кода, который реально юзался (правда не долго - дня два)... ;) Будешь по примерам учиться, если хельп не прёть...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
procedure TfrmObjects.btnAdditClick(Sender: TObject);
const
  Sec: TSecurity = [ 0 ];
var
  MemStrm: TMemoryStream;
  ImgJPG: TJpegImage;
begin
  if (not(gUser.ACC in Sec))or(not DM.dbAddit.Connected) then Exit;
  Refr:=_bF;
  AFill;
  if F_DlgPanel.ShowDock(Caption+' - [дополнительно]',Self,pnlObjectA,_nil)=mrOk then
    begin
      try
        DM.trMultiA.Active:=_bT;
        DM.qryMultiA.SQL.Clear;
        if (imgPS.Picture.Graphic.Empty)and(imgPB.Picture.Graphic.Empty)and(memACOMM.Lines.Text=_sNul)
          then DM.qryMultiA.SQL.Add('DELETE FROM ADDOB WHERE ID_OB='+qryObjectsID_OB.AsString)
          else
            begin
              if qryObjectsA.IsEmpty
                then DM.qryMultiA.SQL.Add('INSERT INTO ADDOB (ID_OB, PS, PB, COMM) VALUES ('+qryObjectsID_OB.AsString+', :PS, :PB, :COMM)')
                else DM.qryMultiA.SQL.Add('UPDATE ADDOB SET PS=:PS, PB=:PB, COMM=:COMM WHERE ID_OB='+qryObjectsID_OB.AsString);
              MemStrm:=TMemoryStream.Create;
              ImgJPG:=TJpegImage.Create;
              if imgPS.Picture.Graphic.Empty
                then DM.qryMultiA.ParamByName('PS').Clear
                else
                  begin
                    ImgJPG.Assign(imgPS.Picture.Graphic);
                    ImgJPG.SaveToStream(MemStrm); MemStrm.Position:=_iZero;
                    DM.qryMultiA.ParamByName('PS').LoadFromStream(MemStrm,ftBlob);
                  end;
              if imgPB.Picture.Graphic.Empty
                then DM.qryMultiA.ParamByName('PB').Clear
                else
                  begin
                    MemStrm.Clear;
                    ImgJPG.Assign(imgPB.Picture.Graphic);
                    ImgJPG.SaveToStream(MemStrm); MemStrm.Position:=_iZero;
                    DM.qryMultiA.ParamByName('PB').LoadFromStream(MemStrm,ftBlob);
                  end;
              if memACOMM.Lines.Text=_sNul
                then DM.qryMultiA.ParamByName('COMM').Clear
                else
                  begin
                    MemStrm.Clear;
                    memACOMM.Lines.SaveToStream(MemStrm); MemStrm.Position:=_iZero;
                    DM.qryMultiA.ParamByName('COMM').LoadFromStream(MemStrm,ftBlob);
                  end;
              ImgJPG.Free;
              MemStrm.Free;
            end;
        DM.qryMultiA.ExecSQL;
        DM.trMultiA.Commit;
        Refr:=_bT;
      except
        DM.trMultiA.Rollback;
        if ImgJPG<>_nil then ImgJPG.Free;
        if MemStrm<>_nil then MemStrm.Free;
      end;
    end;
end;
...
Рейтинг: 0 / 0
12.05.2004, 09:42:55
    #32514238
Queen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
А вот здесь http://hiprog.com/vb/article.asp?id=324
описано как работать с этим из VBA
Если подправить под ADO и юзать IBпровайдер то работает, типа проверенно..
...
Рейтинг: 0 / 0
13.05.2004, 13:48:41
    #32516260
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLOB INTERBASE
Теперь следующий вопрос: в блоб надо пихать данные причем это будет и Word , и Excel, и рисунки.Пока есть мысля через ALЁ-контейнер, если кто может поделиться опытом будьте любезны!

Не связывайся. Я про контейнер. Не знаю, как Excel, но с Word-ом у меня возникли неразрешимые проблемы (с моей точки зрения), когда работаешь с несколькими экземплярами Word - документа. Я недавно по этому поводу у "обчества" (SQL.RU, RSDN.RU etc.) спрашивал - никто не решил. Можешь поискать, прочитай. Я решил вопрос по другому - использую TWordApplication, в пределах приложения веду пул подключений, и при обработке "своих" документов перехватываю попытку сохранения документа (нажатия на кнопку Save и т.д.), и сохраняю документ во временный файл, а затем - в базу.
При закрытии приложения - все "мои" Word - документы сохраняются в базу и закрываюся, а "не мои" (ну, открытие не из моего приложения) - остаются открытими. И никаких ограничений по поводу экспортируемых методов COM - сервером в OLE - контейнер (ну, например, в контейнере не реботает "Preview").
Думаю, что для Excel можно было бы подобным образом сделать.

P.S.Про Commit and транзакции хорошо было сказано, но проблемма была в том,что в приводимом примере все работало только в ON-LINE (это и есть захват базы - "рекорда") RequestLife , а этот режим обещает много интересного для админа. Вообще интересно было бы пообщаться с людьми которые вживую ведут задачи, а не теоретически по учебнику дают советы не попробовав даже скомпилить свои мысли.
1. Ну, какой - то ты грубиян. Я уверен, что большинство присутсвующих на форуме как раз ведет задачи "вживую".
2. По поводу RequestLive. Пора забыть про BDE. IBX, FIBPlus. Просто обалдеть, как все просто и здорово.
3. Купи книжку. Даже если у тебя уже одна есть. Например:
А.Ковязин, С.Востриков. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil. Второе издание.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / BLOB INTERBASE / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]