我用AdoQuery往Access数据库的一张表里插数据,表有254个字段,在执行sql语句时报这个错误“字段太小而不能接收所要添加的数据的数量,试着插入或粘贴较少的数据.”,我在Access的查询里用sql插表成功,开始以为是每断sql过长,就分成了很多行,还是不行,甚至每个字段一行也不行,请问高手是什么问题,是AdoQuery的限制还是Access的限制,怎么解决?下面是sql语句:
“insert into crtcrd values(0521,'0199101111000001',01,1,0,NULL,'14',NULL,'9',NULL,11,'01','13','','15','','F',18,'1','O','1','01','1',NULL,'','','27','','','','','','',34,'1',NULL,37,'','','','',NULL,'','','','',NULL,'',NULL,'','','','','','',56,'57','58','59','A001','61','01','1','64','65',66,67,'','','','',NULL,NULL,NULL,'','','','','',NULL,'','','','','',NULL,'','','','','','',NULL,'','','','','','','','','','','','','',NULL,'01','109','','111','','F',114,'1','M','1',118,'119','120','1','122','123','124','125','A001','01','01','129','130',NULL,132,'','','','','','','',140,'B','','','','','',NULL,'','','',NULL,'','','','',NULL,NULL,'',NULL,'','','','','','','','','',NULL,NULL,171,NULL,'','','175',176,'177','178','179','180','181','1','0',25,'B','','187','188',0,0,NULL,0,0,NULL,'LT',0,197,0,0,'',NULL,NULL,NULL,NULL,'COUR',0,NULL,'A','A','0','0','','',NULL,'','3','','','','0','0','','','','','','','','','',NULL,'',NULL,NULL,NULL,'',NULL,NULL,'',NULL,'','',NULL,'',NULL,NULL,NULL,NULL,'','','',NULL,'','')”
这个还只是测试数据,要是正式数据的话里面很多数字都要变成文字,sql的长度肯定更大。
“insert into crtcrd values(0521,'0199101111000001',01,1,0,NULL,'14',NULL,'9',NULL,11,'01','13','','15','','F',18,'1','O','1','01','1',NULL,'','','27','','','','','','',34,'1',NULL,37,'','','','',NULL,'','','','',NULL,'',NULL,'','','','','','',56,'57','58','59','A001','61','01','1','64','65',66,67,'','','','',NULL,NULL,NULL,'','','','','',NULL,'','','','','',NULL,'','','','','','',NULL,'','','','','','','','','','','','','',NULL,'01','109','','111','','F',114,'1','M','1',118,'119','120','1','122','123','124','125','A001','01','01','129','130',NULL,132,'','','','','','','',140,'B','','','','','',NULL,'','','',NULL,'','','','',NULL,NULL,'',NULL,'','','','','','','','','',NULL,NULL,171,NULL,'','','175',176,'177','178','179','180','181','1','0',25,'B','','187','188',0,0,NULL,0,0,NULL,'LT',0,197,0,0,'',NULL,NULL,NULL,NULL,'COUR',0,NULL,'A','A','0','0','','',NULL,'','3','','','','0','0','','','','','','','','','',NULL,'',NULL,NULL,NULL,'',NULL,NULL,'',NULL,'','',NULL,'',NULL,NULL,NULL,NULL,'','','',NULL,'','')”
这个还只是测试数据,要是正式数据的话里面很多数字都要变成文字,sql的长度肯定更大。
是不是这样:
sqlstr:='insert into crtcrd values(0521, ' '0199101111000001 ' ',01,..... ')';
AdoQuery.SQL.Add(QuotedStr(sqlstr));
就可以了?
sqlstr:= 'insert into crtcrd values(0521, ''0199101111000001 '',01,..... ') ';
试过了,不行,我最上面贴出来的sql语句已经是封装好的了,我是取的AdoQuery.SQL.Text的值,引号的问题在做封装的时候已经注意过了,报错应该还是在哪里有限制造成的。
解决的方法也很简单,增加一Memo,把Sql内容显示出来,然后放到Access里查询
AdoQuery.SQL.Add(QuotedStr(sqlstr));
Memo1.Lines.Add(AdoQuery.SQL.Text);重点还是单引号问题