在acess2000中增加又没关系的,而且也能用程序把表中的的记录查询出来。
解决方案 »
- if MsTscAx1.Disconnect=true then form2.Close; 这句提示出错!大家来看看!
- Tstrings 取txt文件时的问题
- 100分请教:PaintBox.canvas保存为bmp图像问题,请指教!!!!
- 如何获取程序方面的URL及参数
- 200分再开新贴:嵌套框架的HTML代码获取的问题!顶者有分
- 这样的问题,要怎么解决........要多少分由你来说???????急着救命.....
- 主从表加排序功能
- 如何得到当前时间前3秒的时间是多少 ?
- 序号问题(100分)
- 如何实现ctrl+c和ctrl+v?
- 高手请进,关于ADO and Access的问题
- 建议:.........即将去南京参加这次的人才交流会(为找工作),请在南京的或熟悉南京的朋友给点建议(来者有分)
象这种自动编号型的字段,在增加的语句中,难道也得为它弄一个ADOQryadd.parameters.parambyname('number').value:=?;的不成?如果要,又是如何?
如果不指定字段,则认为是全部字段,所以会出现字段与你赋值不等,而自增字段是自动赋值的。
你可以试试用adotable方式 将你的表采用永久字段方式导入控件中 然后用append post 方法输入数据. 不过最好不要用那个自增长字段 关键字还是采用自己的唯一编码比较好
如果(:filename,:date,:filecategory,:projectcategory,:position,:memo
是你的字段名
AdoQryadd.SQL.Add('insert into tablename(filename,date,filecategory,projectcategory,position,memo)
valueS //这也有问题
(:filename,:date,:filecategory,:projectcategory,:position,:memo)');
这样子了还有错:
the application improperly defined a parameter!
INSERT INTO tablename [(fieldname{[, fieldname]})] VALUES (fielddata{[,fielddata]})
如果不指定fieldname的列表,那么后面fielddata中数据出现的顺序必须与数据库表中字段的顺序一模一样;如果指定了fieldname列表,就只需要在fielddata中给出对应于fieldname列表的数据(顺序与fieldname列表的顺序一致即可。
由此可见,你的程序有以下问题:(总结楼上朋友的意见)
1、“value”应该改为“values”
2、在fieldname列表中列出除了自动增加字段之外的其他需要更新的字段,然后在fielddata列表中逐一对应地提供数据即可。这个问题其实与自动增加字段无关,原因在于你没有给出字段列表。那条错误信息的意思是给出的数据的数量与数据表中实际的字段数量不匹配。假设你的数据表有1、2、3、4、5个字段,其中1是自动增加字段;但是你的语句中只给出了2、3、4、5字段的4个字段值,但系统期待是5个值,就会出这样的错误了。解决办法就是列出2、3、4、5这四个字段的名称,与给出的数据对应就可以了。
如果只是简单采用自增长 自然可以是实现唯一标识的目的
但对于数据采集的效率就没有什么意义了.
你的sql语句带入那么多的参数
后面是不是少了
parameters[0].value:= filename的值
.....
parameters[5].value:= memo的值
AdoQryadd.Close;
AdoQryadd.SQL.Clear;
AdoQryadd.SQL.Add('insert into '+addtablename+'(filename,date,filecategory,projectcategory,position,memo) values(:filename,:date,:filecategory,:projectcategory,:position,:memo)');
ADOQryadd.parameters[0].value:=RZlineEdit1.Text;
ADOQryadd.parameters[1].value:=DxDateEdit1.Text;
ADOQryadd.parameters[2].value:=RZComBoBox1.Text;
ADOQryadd.parameters[3].value:=RZComBoBox2.Text;
ADOQryadd.parameters[4].value:=RZComBoBox3.Text;
ADOQryadd.parameters[5].value:=RZmemo1.Text;最后出错:the application improperly defined a parameter!
上面的语句正确的应该如何写?如何可以简炼些?
调试了一下,问题出在adoqryadd.execsql;这里了。前面的都没错。
不合理的定义了一个参数对象?
什么意思?
AdoQryadd.Close;
AdoQryadd.SQL.Clear;
AdoQryadd.SQL.Add('insert into '+addtablename+'(filename,date,filecategory,projectcategory,position,memo) values(:filename,:date,:filecategory,:projectcategory,:position,:memo)');
ADOQryadd.parameters[0].value:=RZlineEdit1.Text;
ADOQryadd.parameters[1].value:=DxDateEdit1.Text;
ADOQryadd.parameters[2].value:=RZComBoBox1.Text;
ADOQryadd.parameters[3].value:=RZComBoBox2.Text;
ADOQryadd.parameters[4].value:=RZComBoBox3.Text;
ADOQryadd.parameters[5].value:=RZmemo1.Text;
ADOQryADD.EXECSQL;
不合理的定义了一个参数对象?.... date 字段是不是有点问题 而且 date是sql的保留字
字段定义最好不要用这个 仔细检查一下你的其他字段类型 和你的参数输入有没有出入
刚刚 随便写了一个类次的过程 没有发现问题 再有问题呼我 55440971
用不了adoquery,还有adotable呢,不用SQL增加了,用平常的insert post过过日子了。
用SQL和用insert增加有什么区别吗?