vb访问sql server数据库时,执行到"conn.Execute sqltxt"时出现如下错误:[microsoft][odbc sql server driver][sql server]仅当使用了列的列表,并且IDENTITY_INSERT 为on时,才能在表'tmpzbgl_kc'中为标志列指定显式值

解决方案 »

  1.   

    sql语句有问题,对于主键要注意唯一性,检查sql语句
      

  2.   

    sql语句有问题,对于主键要注意唯一性,检查sql语句
    //....................
      

  3.   

    我的表里有主键,int型,加1.从一个表里拷贝多条记录到另一个表.两个表里都有主键
      

  4.   

    你把sql贴出来。比如说你的源表t1,目标表t2。 如果t2那个主键列是自动加一的,你不能对t2的主健列进行更改.如果你需要一列来注明源表t1主键值得话,就增加一列。希望我表述明白了
      

  5.   

    Dim sqltxt As String
    sqltxt = "delete t2"
    Set conn = New ADODB.Connection
    conn.ConnectionString = "dsn=zbgl;uid=sa;pwd=sa;"
    conn.Open
    conn.Execute sqltxtIf condstr = "" Then
       sqltxt = "insert into t2 select * from t1"
    Else
       sqltxt = "insert into t2 select * from t1 where " + condstr
    End Ifconn.Execute sqltxt
    conn.Close
    执行到程序末二句的时候,出的上面的错误.
    我想实现的是把满足条件的t1表中的记录全部拷贝到t2表中去,待打印.
      

  6.   

    你的T2表 关键字假如是 自动编号  插入的时候就不可以 指定这个关键字
    比如表 
    CREATE T2( ID INT IDENTITY(1,1),NAME VATCHAR(10))
    GO
    INSERT T2 VALUES("AAA")
    INSERT T2 VALUES("BBB")SELECT * FROM T2结果:
    id   name
    1    AAA
    2    BBB
      

  7.   

    把T2表的主键取掉?T1表要主键,T2表不要?我明天去单位试试.
    我当时T1表和T2表的设计是一模一样的,怕复制出错
      

  8.   

    对呀,一定是你的sql语句有问题,你两个表里都是以id(自动编号,自动增长)为主键的,所以你插入语句中只要对除id外的字段处理就可以了
      

  9.   

    我还想问一下,IDENTITY和主键有什么区别?
      

  10.   

    IDENTITY_INSERT
    實際 你設置IDENTITY_INSERT 為 on 然後 直接用Select * 拷貝也可以 然後 在設置為off
    不過 你的t2表沒有必要加關鍵字
      

  11.   

    现在又出新问题了,我改成了如下语句
    Dim sqltxt As String
    sqltxt = "delete tmpzbgl_kc"
    Set conn = New ADODB.Connection
    conn.ConnectionString = "dsn=zbgl;uid=sa;pwd=sa;"
    conn.Open
    conn.Execute sqltxtIf condstr = "" Then
       sqltxt = "insert into tmpzbgl_kc (yqmc,bh,yxrq,zt,sydw) select * from zbgl_kc"
    Else
       sqltxt = "insert into tmpzbgl_kc (yqmc,bh,yxrq,zt,sydw) select * from zbgl_kc where " + condstr
    End If
    conn.Execute sqltxt
    conn.Close   出错说[microsoft][odbc sql server driver][sql server]插入错误,列名或所提供值的数目与表定义不匹配。
      

  12.   

    用这样的方法可以往SQL Server的自动增加列插入数据,不过你得保证你插入的数据是唯一的:在写入数据的前后加上:
        sql = "SET IDENTITY_INSERT dbo.表名 ON "
        dconn.Execute sql
        sql = "你的插入数据语句"
        dconn.Execute sql
        sql = "SET IDENTITY_INSERT dbo.表名 OFF "
        dconn.Execute sql
      

  13.   

    insert into tmpzbgl_kc (yqmc,bh,yxrq,zt,sydw) select yqmc,bh,yxrq,zt,sydw from zbgl_kc後面的Select的*也要替換 要不然的話回提示數目不對
      

  14.   

    insert into tmpzbgl_kc (yqmc,bh,yxrq,zt,sydw) select yqmc,bh,yxrq,zt,sydw from zbgl_kc这样我也试了,还是不对.我的T1和T2表有十一列,对我只选择其中的五列填充,会不会是这个的问题?我必须把不用的六列也列出来吗?
      

  15.   

    insert into tmpzbgl_kc (yqmc,bh,yxrq,zt,sydw)   values    (select yqmc,bh,yxrq,zt,sydw from zbgl_kc)
    要有values关键字!!!
    不过不知道你后面的select yqmc,bh,yxrq,zt,sydw from zbgl_kc  这样子可不可以,没这样写过!