-
Добрый день друзья. Не могу никак понять, в чем ошибка вот код
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;
edit; 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 Пробовал по-разному эту процедуру реализовать, все никак
-
решил проблему сам, все оказалось проще, чем я думал 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;
-
Хм... нет, так не пойдет, нужно сохранить с форматированием, не подскажите как?
-
Также если делать 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
-
а смысл 2-й раз AdoTable1.Edit вызывать?
-
Это я думал, может быть одна из функций меняет режим доступа. Но в любом случае возникает эта ошибка.
-
> одна из функций меняет режим доступа
так бессмысленно менять режим доступа уже после этого самого доступа
-
Запись именно редактируется, а не Insert?
-
да, редактируется, но на всякий случай пробовал и режим AdoTable1.Insert. безразультатно.
-
Никто не подскажет, почему ms:= TMemoryStream.Create;
Richedit1.Lines.SaveToStream(ms);
Richedit1.Lines.LoadFromStream(ms); дает пустой Richedit1?
-
позиция в конце?
-
ага, уже понял в чем была эта ошибка... спасибо
-
Но глобальная проблема также осталась..
-
Потратил целый день, но нашел решение 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;
Перерыл кучу неработающих исходников
-
Спасибо всем, кто пытался помочь, надеюсь этот пост поможет еще кому-то) В начале очищаем переменные-а потом уже post
-
> надеюсь этот пост поможет еще кому-то) надеюсь что нет... насколько же все проще с датасетом... не нужно днями рыть ради элементарного... просто в хелп заглянуть и все, и где хочешь(/логичнее) там и 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;
-
|