用ADOQuery and Access and Insert为什么不能插入设置备注型字段。。。???我要自杀了。SOS!!!SOS!!!(100分)

  • 主题发起人 主题发起人 mynlxx
  • 开始时间 开始时间
M

mynlxx

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADOQuery and Access and Insert为什么不能插入设置备注型字段。。。???我要自杀了。SOS!!!SOS!!!
 
SQL不能处理备注型字段,可以考虑用Query的Insert方法解决,但备注型字段的处理和普通字段完全不同,可以参考有关资料
 
你不要死先!把问题具体说说,大家都没办法了,你再去死!
 
我在这儿完全可以操作的呀,说说你的具体问题吧.
 
谢谢各位同胞关注:
ACCESS97数据库,用两个TADOQUERY访问,将其中一个库的内容追加到另一个库相应表中,
我用
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Insert Into tbComputerInfo ' + '(ImageIndex, NoDrink, NoFood, Note) Values (:ImageIndex, :NoDrink, :NoFood, :NoFood, :Note)');
ADOQuery1.Parameters.ParamByName('ImageIndex').Value := ADOQuery1.FieldByName('ImageIndex').Value;
.......................
ADOQuery1.Parameters.ParamByName('Note').Value := ADOQuery1.FieldByName('Note').Value;
ADOQuery1.ExecSQL;
其中Note为备注型字段,当我将Note注释掉时能正常执行,而当我将Note加进去时去出错:
Parameter 对象被不正确地定义。提供了不一定或不完整的信息。
请为这是为什么,该如何解决?
 
检查一下是不是ADOQuery1.FieldByName('Note').Value=''?
直接写ADOQuery1.Parameters.ParamByName('Note').Value := '工';
看看还出错么?
 
直接写还是会出错。我试了很多遍。。
 
这是你的程序问题。

ADOQuery1.Parameters.ParamByName('Note').loadfromfile('c:/www.doc',ftBlob);
 
那为什么我加那一个备注字段就不行,而不加则行,我单独一个备注字段也不行?
我想两个数据库进行追加记录,那你认为应该怎么写?
 
另一个库的那个表的那个备注字段我能正确读出来,就是写到目标数据库里写不进去。
 
你的代码没有贴全吧?你在加SQL之前,CLOSE了ADOQUERY1么?若已经CLOSE了,那么程序中
又何来ADOQUERY1.FIELDBYNAME('XXXX').VALUE?
 
不好意思,代码有点问题,
应该是:
ADOQUERY2。FIELDBYNAME('XXXX').VALUE
等于我两个数据库都用ADOQuery连起来了,进行导入另一个数据库表里的内容。
 
ADOQuery1.SQL.Add('Insert Into tbComputerInfo ' + '(ImageIndex, NoDrink, NoFood, Note) Values (:ImageIndex, :NoDrink, :NoFood, :NoFood, :Note)');
前面有4个列,后面的参数有5个,数量不对嘛
 
不要用 xxx.Value:=xxx.Value 改为:
ADOQuery1.Parameters.ParamByName('xxx').Assign(ADOQuery2.FieldByName('xxx'));
 
你是否加了delphi的ado补丁?
 
哪有补丁下载?
 
调试通过:
adoquery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.sql.add('insert into test(a)values(:a)');
ADOQuery1.Parameters.ParamByName('a').DataType:=ftmemo;
ADOQuery1.Parameters.ParamByName('a').Value:=ADOQuery2.FieldByName('A').AsString;
ADOQuery1.ExecSQL;
有两点需要注意的地方:
1在连接字符串中一定要指定"读写权限";
2ADOQuery2.FieldByName('A').value不能为空值.这儿是空值和以NULL结尾的值在做怪.
你试试?
 
多谢kingdeezj兄,
但还是有问题,就是出现在
ADOQuery1.Parameters.ParamByName('a').Value:=ADOQuery2.FieldByName('A').AsString
上,提示为:
Variant does not reference an automation object
 
ADOQuery1.Parameters.ParamByName('xxx').Assign(ADOQuery2.FieldByName('xxx')); 呢?
 
也不行,我现在用:
tempstr := 'llll';
ADOQuery1.Parameters.ParamByName('Note').Value := tempstr;

ADOQuery1.Parameters.ParamByName('Note').Value Assign (tempstr);
然后在执行ExecSqL时,又是提示
Parameter 对象被不正确地定义。提供了不一致或不完整的信息。
 

Similar threads

S
回复
0
查看
859
SUNSTONE的Delphi笔记
S
S
回复
0
查看
784
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部