TmemoField的用法,您会吗?

wendream 2007-03-08 03:30:36
请问有人知道TmemoField的具体用法吗?

我想用它来实现写入备注型字段值,我用的是delphi7+access 2003.
可不可以贴个示范代码啊?

我的代码如下,帮忙看看为什么会出问题啊,无法执行,报内存保护错.

memo_field:=TmemoField.Create(self);
memo_field.BlobType:=ftMemo;
memo_field.FieldName:='memo';
memo_field.LoadFromFile(ExtractFilePath(Application.ExeName) + 'message\temp.txt');
ADOQuery2.Parameters.ParamByName('h').Value:=memo_field.Value;

// last edited at 2007-3-7
ADOQuery2.ExecSQL;
ADOQuery2.Close;

数据库连接,变量声明等都没有问题,可是为什么上面的代码要出错呢? 各位高手有没有关于TmemoField的使用示范代码啊? 谢谢了!
...全文
190 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wendream 2007-03-08
  • 打赏
  • 举报
回复
谢谢关注强哥的关注.

我已经自己解决问题了,我把memo该成了mmemo,然后就可以了!

结帐!
ahjoe 2007-03-08
  • 打赏
  • 举报
回复
你需要的大概是这个
(ADOQuery2.FieldByName('memo') as TMemoField).LoadFromFile('xxx.txt');
ahjoe 2007-03-08
  • 打赏
  • 举报
回复
不知道你的SQL语句怎么写的,不过,你将整个文件的内容作为 Parameter,不妥吧,难道文件只有一行?
ahjoe 2007-03-08
  • 打赏
  • 举报
回复
TMemoField不与DataSet关连独立使用,还真没想过。

你看Field都有个DataSet属性, 表示该Field属于哪个数据集, 还有FullName属性, 表示与数据表的哪个字段关连,这样对Field对象进行LoadFromFile,就是将文件内容保存到数据直接保存到了表中, 当然还少不了DataSet.Post操作。

你这样一个独立的Field对象,不好用的吧。
wendream 2007-03-08
  • 打赏
  • 举报
回复
为了使传入的值是memo型,我专门定义了
var
memo_field:TMemoField;

memo_field.LoadFormFile() 的语法没有错的啊.
wendream 2007-03-08
  • 打赏
  • 举报
回复
谢谢关注:
完整的代码如下:

ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('insert into mail([mail-addr],[usr-name],[subject],[product],[m-date],[supporter],[mail-type],[memo])values(:a,:b,:c,:d,:e,:f,:g,:h)');
ADOQuery2.Parameters.ParamByName('a').Value:=trim(edit1.Text);
ADOQuery2.Parameters.ParamByName('b').Value:=trim(edit2.Text);
ADOQuery2.Parameters.ParamByName('c').Value:=trim(edit3.Text);
ADOQuery2.Parameters.ParamByName('d').Value:=combobox1.Text;
ADOQuery2.Parameters.ParamByName('e').Value:=Date;
ADOQuery2.Parameters.ParamByName('f').Value:=trim(edit4.Text);
// ADOQuery2.Parameters.ParamByName('g').Value:=string(combobox3.Text);

// 这个语句要出问题,写入备注型字段有错误

assignfile(tempfile,ExtractFilePath(Application.ExeName) + 'message\temp.txt');
rewrite(tempfile);
writeln(tempfile,memo1.text);
closefile(tempfile);

memo_field:=TmemoField.Create(self);
memo_field.BlobType:=ftMemo;
memo_field.FieldName:='memo';
memo_field.LoadFromFile(ExtractFilePath(Application.ExeName) + 'message\temp.txt');
ADOQuery2.Parameters.ParamByName('h').Value:=memo_field.Value;

// last edited at 2007-3-7
ADOQuery2.ExecSQL;
ADOQuery2.Close;

本来是想用memo控件里的字符串直接写入连接好的数据库的备注型字段的,由于得不到结果,才想到用文件来中转的.
netfly 2007-03-08
  • 打赏
  • 举报
回复
如果你是想读一个文本文件进来,那是不能把文本文件本身作为参数代入到SQL语句里


1)读文本文件可以用TStringList来读
2)写入数据库应该是

AdoQuery.Sql.Text := 'select h from sample where sampleid=2';
adoquery.open;
adoquery.Edit
adoquery.FieldbyName('h').AsString := myStrings.text;
adoQuery.Post;
adoQuery.BatchUpdate;

要强调一下,就是上面这样的
adoquery.FieldbyName('h').AsString := myStrings.text;只能是MEMO型,如果是其他如二进制数据就不行.

2,497

社区成员

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

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