cnstr = "Provider=SQLOLEDB.1;Password=exam;Persist Security Info=True;User ID=sa;Initial Catalog=tdb;Data Source=172.16.42.31"
conn.ConnectionString = cnstr
conn.Open cnstr
rs1.CursorLocation = adUseClientWith conn
    sqltxt = "delete from whhxtb"
    .Execute (sqltxt)
    sqltxt = "insert into whhxtb select * from tdb_out..whhxtb"     '就是执行到这句不行啦!
    .Execute (sqltxt)
End With这句insert into就是把tdb_out中的whhxtb表数据插入到tdb中的whhxtb中,但总是执行不了,会是什么原因呢?要实现这个功能,还能怎么写呢?

解决方案 »

  1.   

    上述那段程序前面有一段是关掉数据库的连接并进行还原数据库:
    cnstr = "Provider=SQLOLEDB.1;Password=exam;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=172.16.42.216"
    conn.ConnectionString = cnstr
    conn.Open cnstr
    rs1.CursorLocation = adUseClient
    sqlm = "select spid from sysprocesses where dbid=db_id('tdb_out')"
    rs1.Open sqlm, conn
    Do While Not rs1.EOF
    conn.Execute "kill " & rs1("spid") 
    rs1.MoveNext
    Loop
    sqltxt = "restore database tdb_out from disk='" & inputfile & "' with replace"
    conn.Execute (sqltxt)
    rs1.Close
    conn.Close我就是不知道是否因为上述哪些原因导致insert into...这句连接不了
    有高手吗?说说吧!
      

  2.   

    把这句sql放到查询分析器里运行一下,看报什么错
      

  3.   

    把这句话写全一点“insert into whhxtb select * from tdb_out..whhxtb”。
    是不是关键键不能重复的原因?
      

  4.   

    sqltxt = "insert into [tdb].[dbo].[whhxtb] select * from [tdb_out].[dbo].[whhxtb]" 这样应该可以了。我以前也碰到过,不过忘了具体怎么回事了,差不多是这样。
      

  5.   

    是不是主鍵不能重復?
    sql="insert into B select * from A where 主鍵 not in(select 主鍵 from B)"你這樣試試看?