我设计了个窗体界面,在界面上放了一些textbox,又建了个access数据库,把textbox中的内容插入到数据库中,但再程序中插入时插入语句总出错,说“标准表达式中数据类型不匹配”。我在access中用sql查询检查语句时,出现错误,说“access不能再追加查询中追加所有记录。access设置1字段为null是因为类型转换失败,它未将0记录添加到表是因为键值冲突,没有添加0记录是因为锁定冲突,没有添加0记录是因为有效性规则冲突”
我的数据库的字段和类型如下:
字段名称   数据类型
客户名称   文本
合同号     备注
原料        备注
日期        文本
品名        文本
发样品名   备注
序号        自动编号
裁断        备注
整毛         备注
重量         数字
毛长         文本
排长          数字
管径           数字
方向           文本
倒毛            文本
压段          文本
备注           文本
说明          备注
烘箱温度       备注
网帽          文本
头皮尺寸       数字
头皮重量         数字
发型          文本
完成重量       数字
其他说明        备注
是否有头皮       文本
烘烤时间        文本
插入的一条语句为:
insert into JobInstruction(客户名称,合同号,原料,日期,品名,发样品名,裁断,整毛,重量,毛长,排长,管径,方向,倒毛,压段,备注,说明,烘箱温度,网帽,头皮尺寸,头皮重量,发型,完成重量,其他说明,是否有头皮,烘烤时间)values('','','','2008-11-18','AL01','','16.5 12.5','17.5 8.75','6','7.75','45','65','IN','','','','','85','','','','','','','否','60')
请高人帮我指点一下是怎么回事

解决方案 »

  1.   

    你插入数字的地方,不需要加单引号吧?insert into JobInstruction(客户名称,合同号,原料,日期,品名,发样品名,裁断,整毛,重量,毛长,排长,管径,方向,倒毛,压段,备注,说明,烘箱温度,网帽,头皮尺寸,头皮重量,发型,完成重量,其他说明,是否有头皮,烘烤时间)values('','','','2008-11-18','AL01','','16.5 12.5','17.5 8.75','6','7.75','45','65','IN','','','','','85','','','','','','','否','60')应该为:insert into JobInstruction(客户名称,合同号,原料,日期,品名,发样品名,裁断,整毛,重量,毛长,排长,管径,方向,倒毛,压段,备注,说明,烘箱温度,网帽,头皮尺寸,头皮重量,发型,完成重量,其他说明,是否有头皮,烘烤时间)values('','','','2008-11-18','AL01','','16.5 12.5','17.5 8.75',6,'7.75',45,65,'IN','','','','','85','','','','','','','否','60')还有后面一些字段,楼主自己检查一下吧。
      

  2.   

    程序中说“标准表达式中数据类型不匹配”sql查询中说说“标准表达式中数据类型不匹配”。我在access中用sql查询检查语句时,出现错误,说“access不能再追加查询中追加所有记录。access设置1字段为null是因为类型转换失败,它未将0记录添加到表是因为键值冲突,没有添加0记录是因为锁定冲突,没有添加0记录是因为有效性规则冲突” 
      

  3.   

    主键不是必须的,但就查询速度以及数据的唯一性来说是要加的.
    数据类弄不匹配的话,看看你数据库中字段设置的是什么类型,将其一一对应.如果是int 就不用加单引号.
      

  4.   

    我把数字类型的单引号都去掉了,但又出现错误说 input string was not in an correct format
    我后面的那几个数字类型的是空值,sql语句可以这样写吗
    INSERT INTO JobInstruction ( 客户名称, 合同号, 原料, 日期, 品名, 发样品名, 裁断, 整毛, 重量, 毛长, 排长, 管径, 方向, 倒毛, 压段, 备注, 说明, 烘箱温度, 网帽, 头皮尺寸, 头皮重量, 发型, 完成重量, 其他说明, 是否有头皮, 烘烤时间 )
    VALUES ('', '', '100%高温丝', '2008-11-17', 'AL01', '', '16.5 12.5', '17.5 8.75', 6, '7.75', 45, 65, 'IN', '', '', '', '', '85', '', ,, '', , '', '否', '60')
    再sql中报错是“insert into语法错误”
      

  5.   

    数字类型的不用加单引号.包括float,numeric
      

  6.   

    字段不对应,上面26个,values只有25个
      

  7.   

    是呀,我把数字类型的单引号都去掉了,可不可以帮忙看看我上面的语句还有什么错误,它又说我插入语句有错误
    INSERT INTO JobInstruction ( 客户名称, 合同号, 原料, 日期, 品名, 发样品名, 裁断, 整毛, 重量, 毛长, 排长, 管径, 方向, 倒毛, 压段, 备注, 说明, 烘箱温度, 网帽, 头皮尺寸, 头皮重量, 发型, 完成重量, 其他说明, 是否有头皮, 烘烤时间 ) 
    VALUES ('', '', '100%高温丝', '2008-11-17', 'AL01', '', '16.5 12.5', '17.5 8.75', 6, '7.75', 45, 65, 'IN', '', '', '', '', '85', '', ,, '', , '', '否', '60') 
     提示说是【'85', '', ,, '', ,】这两个逗号之间有错误,这两个都是数字型的字段,但我插入的是空值,所以就是连着两个逗号,应该怎么改呀,
    先谢谢各位了
      

  8.   

    不是呀,values就是26个,我查了没错
      

  9.   

    你可以下面有几个有值的值,上面写几个字段名,把没有值的去掉
    例如:
    INSERT INTO JobInstruction ( 原料, 日期, 品名) 
    VALUES ( '100%高温丝', '2008-11-17', 'AL01') 
      

  10.   

    把你要执行的SQL在Access里执行下,一目了然,很容易发现问题.
      

  11.   

    我执行了,在access中报错是“insert into语法错误”,我现在是不知道哪出的语法出错了,所以才贴出来问一下
    INSERT INTO JobInstruction ( 客户名称, 合同号, 原料, 日期, 品名, 发样品名, 裁断, 整毛, 重量, 毛长, 排长, 管径, 方向, 倒毛, 压段, 备注, 说明, 烘箱温度, 网帽, 头皮尺寸, 头皮重量, 发型, 完成重量, 其他说明, 是否有头皮, 烘烤时间 ) 
    VALUES ('', '', '100%高温丝', '2008-11-17', 'AL01', '', '16.5 12.5', '17.5 8.75', 6, '7.75', 45, 65, 'IN', '', '', '', '', '85', '', ,, '', , '', '否', '60') 
      

  12.   

    VALUES ('', '', '100%高温丝', '2008-11-17', 'AL01', '', '16.5 12.5', '17.5 8.75', 6, '7.75', 45, 65, 'IN', '', '', '', '', '85', '', null,null, '', , '', '否', '60') 如果可以为空的话。。
      

  13.   

    楼主的SQL语句也太长了,难以维护啊。
    建议使用SqlParameter吧。
      

  14.   

    其实楼主注意一下空值的情况就可以了。。
    如果是文本类型的,空值用''表示
    其他类型的空值用null表示根据这个改一下,应该就行了。
      

  15.   

    我是取的textbox里的值,它允许为空,但有时可能为空可能不为空,所以没法用null来直接代替呀,应怎么插入呀
      

  16.   

    $connstr = "DRIVER=Microsoft access Driver (*.mdb);DBQ=D:\Server\ed.mdb";
     $connid =  odbc_connect($connstr,"","",SQL_CUR_USE_ODBC) or die ("数据库ACCESS连接错误!");
      echo "<br>数据ACCESS库连接成功";
      $sqlaccess ="INSERT INTO sms_shan.sendingsmstable(SmsUser,PhoneNumber,SmsContent,UserDefineNo,NewFlag,SendLevel,SmsTime ,PhoneNumberType,PutType)VALUES ('$rowdaifa[1]' ,'$rowdaifa[2]','$mag', '0','1' ,'0' , '$rowdaifa[6]' , '0' , '待发')";  //$sqlaccess ="INSERT INTO sms_shan.sendingsmstable (SmsIndex,SmsUser,PhoneNumber,SmsContent,UserDefineNo,NewFlag,SendLevel,SmsTime ,PhoneNumberType,PutType)VALUES (NULL , '$rowdaifa[1]' ,'$rowdaifa[2]' ,'$mag', '0','1' ,'0' , '$rowdaifa[6]' , '0' , '待发')"; 
     //$queryaccess  = odbc_do($connid,$sqlaccess)or die("<br>写入ACCESS数据库失败!"); 
     
     $queryaccess = odbc_do($connstr,$sqlaccess)or die("<br>写入ACCESS数据库失败!");
      $resultaccess = odbc_execute($queryaccess);帮忙看看哪里出错了?谢谢!
      

  17.   

    找到原因了,我也是通过 “设置1字段为null是因为类型转换失败,它未将0记录添加到表是因为键值冲突,没有添加0记录是因为锁定冲突,没有添加0记录是因为有效性规则冲突。 
    ” 搜索来的,
    最后还是我仔细看了下代码,是因为判断类型true false的关系,这个类型的值不需要加引号,完美通过。