delphi中richedit中增加字段到数据库,为什么会被强行截取?

shanneng2001 2010-10-21 06:34:59
我要在richedit里插入一下文字。当文字大概超过几十个字的时候就会强行被截断。其中redtgj.Text是richedit.
with dm1.adoqrygj do
begin
close;
sql.Clear;
sql.Add('insert ypgj (gm,pym,gj) value(:a,:b,:c);
parameters.ParamByName('a').Value := trim(edtgm.text);
parameters.ParamByName('b').Value := trim(edtpym.text);
parameters.ParamByName('c').Value := trim(redtgj.Text);
execsql;
end;
目前本人的解决办法有两个,一个是将trichedit控件换成tmemo,
parameters.ParamByName('c').Value := trim(memo1.Text);
另外一个方法就是将parameters.ParamByName('a').size := 256;
但我就是不明白,为什么tmemo里没有问题,而trichedit确会强行截取它认为“多余”的文字?
...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kye_jufei 2010-10-22
  • 打赏
  • 举报
回复
可以這樣試試,用流方式存取。。。
保存:
var
Str: string;
temStream: TMemoryStream;
begin
temStream := TMemoryStream.Create;
RichEdit1.Lines.SaveToStream(temStream);
str := 'select * from Table1';
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add(str);
AdoQuery1.Open;
AdoQuery1.Append;
AdoQuery1.FieldByName('ID').AsInteger:= 3;
TBlobField(AdoQuery1.FieldByName('RichEditText')).LoadFromStream(temStream);
AdoQuery1.Post;
temStream.Free;

读取:
var
Str: string;
temStream: TMemoryStream;
begin
temStream := TMemoryStream.Create;
str := 'select * from Table1 ';
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add(str);
AdoQuery1.Open;
TBlobField(AdoQuery1.FieldByName('RichEditText')).SaveToStream(temStream);
temStream.Seek(0,0);
RichEdit1.Lines.LoadFromStream(temStream);
temStream.Free;
bdmh 2010-10-21
  • 打赏
  • 举报
回复
richedit是带格式的,和memo不一样
shanneng2001 2010-10-21
  • 打赏
  • 举报
回复
how to test?
billy145533 2010-10-21
  • 打赏
  • 举报
回复
请测试memo1.Text和redtgj.Text的长度是否相同
可能是parameters在设置size前无法容纳redtgj.Text中的数据

2,499

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧