Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2016.02.28;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при сохранении в blob   Найти похожие ветки 

 
Geo   (2011-06-03 16:01) [0]

Добрый день друзья. Не могу никак понять, в чем ошибка

вот код

procedure TDiary_form.BitBtn1Click(Sender: TObject);
var
 bs: TStream;
 table1memo: TBlobField;
begin
 CreateUn("SELECT * FROM DIARY_SURVEY");
 bs := nil;
 with Login_form.ADOQuery1 do
   try
     open;
     //first;
     edit;     //stream:= ibquery1.CreateBlobStream(ibquery1.FieldByName("messagebody") as TBlobField, bmRead);
     bs := Login_form.ADOQuery1.CreateBlobStream(Login_form.ADOQuery1.FieldByName("MORE") as TBlobField, bmwrite);
     Richedit1.plaintext := false;
     Richedit1.Lines.Savetostream(bs);
     edit;
     post;
   finally
     bs.free;
     close;
   end;
end;


Ошибка на  post;

DataSet not edit or inset mode

Пробовал по-разному эту процедуру реализовать, все никак


 
Geo   (2011-06-03 16:17) [1]

решил проблему сам, все оказалось проще, чем я думал
with Login_form.ADOQuery1 do
 begin
 edit;
 FieldByName("MORE").Value:=RichEdit1.Lines.Text;
 post;
 end

и все) а почему та ошибка появлялась, все равно интересно, при разработке пользовался вот этой статьей http://www.kansoftware.ru/?tid=3789

где исходный код (без моих изменений):
procedure TForm1.BtnPutClick(Sender: TObject);
var
 bs: TBlobStream;
begin
 bs := nil;
 with Table1 do
   try
     open;
     first;
     edit;
     bs := TBlobStream.Create(table1memo, bmwrite);
     Richedit1.plaintext := false;
     Richedit1.Lines.Savetostream(bs);
     post;
   finally
     bs.free;
     close;
   end;
end;


 
Geo   (2011-06-03 16:42) [2]

Хм... нет, так не пойдет, нужно сохранить с форматированием, не подскажите как?


 
Geo   (2011-06-03 17:45) [3]

Также если делать

begin

ms:= TMemoryStream.Create;
Richedit1.Lines.SaveToStream(ms);

AdoTable1.Edit;
bs:= AdoTable1.CreateBlobStream(AdoTable1.FieldByName("MORE") as TBlobField, bmwrite);
Richedit1.Lines.Savetostream(ms);
TBlobField(AdoTable1.FieldByName("MORE")).LoadFromStream(ms);
AdoTable1.Edit;
AdoTable1.Post;
bs.Free;
ms.Free;


та же ошибка AdoTable1: DataSet not edit or insert mode


 
clickmaker ©   (2011-06-03 17:54) [4]

а смысл 2-й раз AdoTable1.Edit вызывать?


 
Geo   (2011-06-03 18:03) [5]

Это я думал, может быть одна из функций меняет режим доступа. Но в любом случае возникает эта ошибка.


 
clickmaker ©   (2011-06-03 18:06) [6]

> одна из функций меняет режим доступа

так бессмысленно менять режим доступа уже после этого самого доступа


 
clickmaker ©   (2011-06-03 18:10) [7]

Запись именно редактируется, а не Insert?


 
Geo   (2011-06-03 18:27) [8]

да, редактируется, но на всякий случай пробовал и режим AdoTable1.Insert. безразультатно.


 
Geo   (2011-06-03 19:31) [9]

Никто не подскажет, почему

ms:= TMemoryStream.Create;
Richedit1.Lines.SaveToStream(ms);
Richedit1.Lines.LoadFromStream(ms);


дает пустой Richedit1?


 
sniknik ©   (2011-06-03 20:09) [10]

позиция в конце?


 
Geo   (2011-06-03 20:22) [11]

ага, уже понял в чем была эта ошибка... спасибо


 
Geo   (2011-06-03 20:41) [12]

Но глобальная проблема также осталась..


 
Geo   (2011-06-03 21:17) [13]

Потратил целый день, но нашел решение
procedure TDiary_form.Button2Click(Sender: TObject);

var
 blob: TStream;
 ms: TMemoryStream;
 begin
  AdoTable1.Edit;
 blob := AdoTable1.CreateBlobStream(AdoTable1.FieldByName("MORE"), bmWrite);
 try
   blob.Seek(0, soFromBeginning);
     ms:= TMemoryStream.Create;
     Richedit1.Lines.Savetostream(ms);
     ms.Position := 0;
   try
     blob.CopyFrom(ms, ms.Size);

   finally
     ms.Free
   end;
 finally
   blob.Free
 end;
  AdoTable1.Post;
end;


Перерыл кучу неработающих исходников


 
Geo   (2011-06-03 21:21) [14]

Спасибо всем, кто пытался помочь, надеюсь этот пост поможет еще кому-то)
В начале очищаем переменные-а потом уже post


 
sniknik ©   (2011-06-03 22:29) [15]

> надеюсь этот пост поможет еще кому-то)
надеюсь что нет...

насколько же все проще с датасетом... не нужно днями рыть ради элементарного... просто в хелп заглянуть и все, и где хочешь(/логичнее) там и post

var
 ms: TMemoryStream;
begin
 ms:= TMemoryStream.Create;
 try
   Image1.Picture.Bitmap.SaveToStream(ms);
   ADODataSet1.Edit;
   TBlobField(ADODataSet1.FieldByName("ImField")).LoadFromStream(ms);
   ADODataSet1.Post;
 finally
   ms.Free;
 end;
end;


 
Johnmen ©   (2011-06-03 23:24) [16]

Озорник, однако
http://www.sql.ru/forum/actualthread.aspx?tid=856341



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

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

Наверх





Память: 0.48 MB
Время: 0.002 c
2-1408100312
lewka_s
2014-08-15 14:58
2016.02.28
Изменение иконки (значка)


2-1408606960
lewka_s
2014-08-21 11:42
2016.02.28
Авторизация ВКонтакте


3-1307102463
Geo
2011-06-03 16:01
2016.02.28
Ошибка при сохранении в blob


15-1434051864
0x00000000
2015-06-11 22:44
2016.02.28
перевести на английский


2-1407505445
С-К
2014-08-08 17:44
2016.02.28
Вывести пустой TDateTimePicker





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский