Var f:TBlobField; bs:TBlobStream;    f:=Query1.FieldByName('MemOField');
    bs.Create(f,bmWrite);
    Memo1.Lines.SaveToStream(bs);    释放bs;

解决方案 »

  1.   

    test ok
     ...
     query1.FieldbyName('MemoField').AsString:=Memo1.Text;
    ...
      

  2.   

    lwm8246的在数据量很大(几十M以上)会出问题的,最后一个字节会变成0,可能是
    delphi的bug。bcb的也有问题。
    如下:
    var
      bs: TMemoryStream;
    bs := tmemorystream.create;
    MyMemo.lines.savetostream(bs);
    bs.postion := 0;
    (query1.fieldbyname('MemoField') as tblobfield).loadfromstream(bs);
    bs.free;这样应该可以了。
      

  3.   

    不好意思,我自己已找到了方法。
    可能是我的意思没有表达清楚,我的意思是要把MEMO中的内容连同其他数据一起写入到数据库中。所以,各位给我的方法都不太好用。
    源程序:
    ...
     //数据库中定义:A,B,C,D:VarChar; E:Blob
     With DataModule1.IBQuery1 do
     begin
      SQL.Clear;
      SQL.Text:='Insert Into Table (A,B,C,D) Value("A","B","C","D");
      ExecSQL;
     end;
    ...
    如果用各位的方法,我实在不知加到什么地方,还有,各位有没有发现,如果用你们的方法,有一个问题,我不知道如何去描述它,提示一下,SQL插入一段数据后,在数据库中保存的位置比较不固定,这样会出现数据混乱的情况,是不是?我的方法:
    ...
     //数据库中定义:A,B,C,D:VarChar; E:Blob
     With DataModule1.IBQuery1 do
     begin
      SQL.Clear;
      SQL.Text:='Insert Into Table (A,B,C,D,E) Value("A","B","C","D",:S);
      Param[0].AsBlob:=Memo1.Lines.Text;//注意这一行
      ExecSQL;
     end;
    ...
    验证通过!
      

  4.   

    to ether(void) length(memo.text)<64k 怎么会有问题呢 
      

  5.   

    With DataModule1.IBQuery1 do
    begin
      SQL.Clear;
      SQL.Text:='Insert Into Table (A,B,C,D,E) Value("A","B","C","D",:S);
    //  Param[0].AsBlob:=Memo1.Lines.Text;//注意这一行]
       Param[0].AsString:=Memo1.Text;//注意这一行]
      ExecSQL;
    end;