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

Вниз

Проблема с записью в BLOB-поле   Найти похожие ветки 

 
Zabludshiy   (2004-08-05 17:19) [0]

Доброго всем времени. Oracle8i, Delphi-6. К базе подключаюсь с помощю ODAC.
Пытаюсь записать RichEdit в CLOB следующим образом:

procedure TNewDocVizard.Button11Click(Sender: TObject);
var FullDocText:string;
   BlobStream:tStream;
begin
     SmartQuery1.Active:=False;
     SmartQuery1.ParamByName("Cond").AsInteger:=465;
     SmartQuery1.Open;
     if SmartQuery1.State = dsBrowse then
       SmartQuery1.Edit;
     BlobStream:=SmartQuery1.CreateBlobStream(SmartQuery1.FieldByName("doc_text"),bmWrite);
     Try
       BlobStream.Seek(0, soFromEnd);
       BlobStream.Write(pChar(RichEdit1.Text)^,length(RichEdit1.Text));
//      BlobStream.WriteBuffer();
       SmartQuery1.Post;
       DMod1.OracleSession1.Commit;
     Finally
       BlobStream.Free;
       SmartQuery1.Close;
     end;
end;

В результате в "doc_text" ничего не записывается (CLOB пустой), ошибок не выдаёт. 2-й день не могу понять где допустил ошибку?
Заранее спасибо за помощ.


 
Zabludshiy   (2004-08-05 17:22) [1]

В SmartQuery.sql такой запрос:
Select DIC.DOC_TEXT, DIC.RowId
from DIC
where COND = :Cond


 
Johnmen ©   (2004-08-05 17:49) [2]

>BlobStream.Write(pChar(RichEdit1.Text)^,length(RichEdit1.Text));

Видимо, либо
s:=RichEdit1.Text;
BlobStream.Write(pChar(s)^,length(s));

либо
BlobStream.Write(RichEdit1.Text[1],length(RichEdit1.Text));


 
Zabludshiy   (2004-08-05 18:12) [3]


> Johnmen ©   (05.08.04 17:49) [2]

Спасибо, но не помогло.

Что интересно, в новом (чистом) проекте на тестовой базе аналогичный код работает. Да и взят он из реально рабочего примера, одного из тех что шёл с ODAC.

Рабочий код, на нажатие кнопки:

begin
 if SmartQuery1.State = dsBrowse then
   SmartQuery1.Edit;
 BlobStream:=SmartQuery1.CreateBlobStream(SmartQuery1.FieldByName("tclob"),bmReadWrite);
 try
   BlobStream.Seek(0, soFromEnd);
   BlobStream.Write(PChar(memo1.Text)^,length(memo1.Text));
   SmartQuery1.Post;
 finally
   BlobStream.Free;
 end;
end;

А то что я модифицировал - никак не хочет работать.


 
Johnmen ©   (2004-08-05 18:19) [4]

А-а.. Понятно
глянь  TBlobStreamMode+F1


 
Zabludshiy   (2004-08-05 19:17) [5]

Да, действительно.
Спасибо.



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

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

Наверх




Память: 0.47 MB
Время: 0.028 c
3-1091632660
Frozzen
2004-08-04 19:17
2004.08.29
Можно ли и как перенести базу из-под ИБ 6 на ИБ 5


1-1092196174
maxkat
2004-08-11 07:49
2004.08.29
глобальные переменные!


1-1092127239
STALKER
2004-08-10 12:40
2004.08.29
каким образом циклом можно...


3-1091450350
ZHK
2004-08-02 16:39
2004.08.29
Как в реальном времени добавить поля в таблицу?


3-1091265633
faost
2004-07-31 13:20
2004.08.29
Ищу более удобный DBGrid