一个SQL2005 =A 
一个MDB =B 
在A的表1里有ID字段 内容有 ID=1......ID=10 
在B的表2里有ID字段 内容有 ID=1,ID=5,ID=10 要求:在B的表2里有的ID,在A表1删除没有的 
应该如何写? 结果是A的表1也就ID=1,ID=5,ID=10

解决方案 »

  1.   

    dim Rs as adodb.recordset
    set Rs=Con.excute("select ID from A")    'Con为打开了的SQL2005连接
    do while not Rs.eof
    Conn.excute "delete from B where ID='" & RS(0) &"'"     'Conn为打开了的MDB连接
    Rs.movenext
    loop
      

  2.   

    分别建立连接比如删除表a1的ID在表2中没有的记录.将ID列表查询出来,类似selet id from a2
    rs.movenext
    str = str & "," & rs(0)这样得出str类似这样的格式:
    1,2,3,5,6,8然后在表a1上执行:cn.execute delete from a1 where id not in (str)
      

  3.   

    你是要写个程序来进行这个操作么?
    1. 连接B数据库,检索表2里的ID,用循环把存在的ID列表组成一个字符串数组。
        格式大致如下。
           strIDList = "1, 5, 10"
    2. 连接A数据库,将上面得到字符串写入SQL语句并执行,结果SQL如下。
          DELETE FROM 表1 WHERE ID NOT IN (1, 5, 10)
      

  4.   

    delete from B where id not in (select ID from A) 
      

  5.   


    仅做参考。
        Dim objConnA As New Connection
        Dim objConnB As New Connection
        
        objConnA.Open strConnStringA    '连接A数据库
        objConnA.Open strConnStringB    '连接B数据库
        
        Dim objRec As New Recordset    objRec.Open "SELECT ID FROM 表2", objConnB    Dim strIDList As String
        strIDList = ""
        
        Do Until objRec.EOF
            If strIDList <> "" Then
                strIDList = strIDList & ", "
            End If
            strIDList = strIDList & objRec.Fields("ID").Value
        Loop
        objRec.Close
        
        Dim strSQL As String
        If strIDList <> "" Then
            strSQL = "DELETE FROM 表1 WHERE ID NOT IN (" & strIDList & ")"
            objConnA.Execute strSQL
        End If
        
        objConnA.Close
        objConnB.Close
      

  6.   

    Execute是什么啊?strIDList = strIDList & ", "
    这句的话.他运行的话.全部都是同一个ID了
      

  7.   

    你使用的不是ADO么?
    把ADO引用加入工程,怎么会未找到?
    如果已经引用,是哪个版本?
      

  8.   

    给你个思路吧:
    1、建立两个连接分别连SQL和MDB
    2、对目标表循环,根据条件删除你不要的记录。
      

  9.   

    不是ADO的
    现在我自己写了一个.但是str = str & "," & RS(0)
    的时候 第1个ID的前面有,不知道如何去除第1个,
      

  10.   

    if len(str) then
    str = str & RS(0)
    else
    str = str & "," & RS(0)
    end if
      

  11.   

    这位兄弟不知道怎么搞的。
    前面已经写了啊。
    类似下面的写法。
        Dim strIDList As String
        strIDList = ""
        
        Do Until objRec.EOF
            If strIDList <> "" Then
                strIDList = strIDList & ", "
            End If
            strIDList = strIDList & objRec.Fields("ID").Value
        Loop
      

  12.   

    [Quote=引用 13 楼 tigerandufo 的回复:]
    不是ADO的
    现在我自己写了一个.但是str = str & "," & RS(0)
    的时候 第1个ID的前面有,不知道如何去除第1个,
    str = str & "," & RS(0)去掉RS(0)
    qlming判断下面还有一句strIDList = strIDList & objRec.Fields("ID").Value才是连接ID字符串
      

  13.   

    在 A 上建立一个连接,执行下列 SQL 语句:Delete From 表1 Where ID Not In (Select ID From 表2 In 'B.mdb')
      

  14.   


    服了这位兄弟了,咋就看不明白呢。
        Dim strIDList As String
        strIDList = ""
        
        Do Until … … 
            If strIDList <> "" Then
                strIDList = strIDList & ", "
            End If
            strIDList = strIDList & RS(0)
        Loop
      

  15.   


        Dim strIDList As String
        strIDList = ""
        
        Do Until … … 
            If strIDList <> "" Then
                strIDList = strIDList & ", "
            End If
            strIDList = strIDList & RS(0)
        Loop