有个a.mdb数据库和d.mdb数据库
现在想将a.mdb数据库里的表b的字段c里的数据
更新到数据库d.mdb的表e的字段f里
条件是表b里的字段g与表d的字段h相同怎样用SQL语句实现?本贴谢绝灌水,实验成功后就给分。

解决方案 »

  1.   

    用两个连接吧,SQL语句可能不太好做,可能不提供这种功能吧?sql2000里就好做。
      

  2.   

    数据库联接好像只能连一个mdb吧
    除非用2个recordset分别对应2个mdb一个放b.c,b.g
    一个放d.f,d.h再更新
      

  3.   

    你们误会了吧,我指的条件是要条件是表b里的字段g与表d的字段h相同,因为字段g与字段h里的数据位置是不相同的,所以我才要SQL语句实现.
      

  4.   

    你们误会了吧,我指的条件是要条件是表b里的字段g与表d的字段h相同,因为字段g与字段h里的数据位置是不相同的,所以我才要SQL语句实现.
      

  5.   

    用两个data控件可这样写:
    Data1.DatabaseName = App.Path + "\a.mdb"
    Data2.DatabaseName = App.Path + "\d.mdb"
    Data1.RecordSource = "select *from b"
    Data1.Refresh
    Dim ii, jj
    If Data1.Recordset.RecordCount <> 0 Then
       Data1.Recordset.MoveLast
       Data1.Recordset.MoveFirst
       
       For ii = 1 To Data1.Recordset.RecordCount
           Data2.RecordSource = "select *from e where h='" + Trim(Data1.Recordset!g) + "'"
           Data2.Refresh
           If Data2.Recordset.RecordCount <> 0 Then
              Data2.Recordset.MoveLast
              Data2.Recordset.MoveFirst
              For jj = 1 To Data2.Recordset.RecordCount
                  Data2.Recordset.Edit
                  Data2.Recordset!f = Trim(Data1.Recordset!c)
                  Data2.Recordset.Update
                  If Data2.Recordset.EOF <> False Then Data2.Recordset.MoveNext
              Next
           End If
           
           If Data1.Recordset.EOF <> False Then Data1.Recordset.MoveNext
       Next
       
    End If以上方法是愚蠢了点,但可解决问题.
      

  6.   

    很简单,建两个连接,两个记录集,分别读取数据,把符合条件的数据更新另一个记录集数据。定义:
          rs1
          rs2
        
        rs1!字段=rs2!某字段
      

  7.   

    你的情况好办,只要定义两个连接,把结果集送给另一个结果集就行了。
    如果另一个库中有数据,就要稍改一下,就行了。
    用ADO连接:
    工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)Option ExplicitDim WithEvents adoRS As Recordset
    Dim db As Connection
    '提数据事件
        Set db = New Connection
        db.CursorLocation = adUseClient
        db.Open"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\db1.mdb;Jet OLEDB:Database Password=1234;"
    '                           ##########################################
    '打开密码是1234的Access2000数据库db1.mdb
    '不需要密码,就把Jet OLEDB:Database Password=1234;这段去掉    Set adoRS = New Recordset
        
        adoRS.Open "SELECT * FROM 表", db, adOpenStatic, adLockOptimistic
        '赋值给 DataGrid 表
        Set DataGrid1.DataSource = adoRS
        '表刷新
        DataGrid1.Refresh
    '添加事件和保存
        adoRS.AddNew
        '保存
        adoRS![字段a] = text1.Text
        adoRS![字段b] = text2.Text
        adoRS.UpdateBatch adAffectAll'删除
        adoRS.Delete
        '重新赋值给表
        adoRS.Requery
        Set DataGrid1.DataSource = adoRS
        DataGrid1.Refresh    '其他相关操作:
        '上一条
        If Not adoRS.BOF Then adoRS.MovePrevious
        If adoRS.BOF And adoRS.RecordCount > 0 Then
             '已到最后返回
             adoRS.MoveFirst
        End If
        '下一条
        If Not adoRS.EOF Then adoRS.MoveNext    '下一条
        If adoRS.EOF And adoRS.RecordCount > 0 Then
              '已到最后返回
              adoRS.MoveLast
        End If
        '第一条
        If Not adoRS.BOF Then adoRS.MoveFirst
        '最末
        If Not adoRS.EOF Then adoRS.MoveLast
      

  8.   

    请大家看清题目,因为字段g与字段h相同数据的位置是不同的,所以我一开始想用sql语句"where b.h=c.g"完成的,所以请大家看清我的题目.
    是不是这个原来是个难题,我把它看的太幼稚呢?怎么没人答对?或者还是我与大家沟通有问题呢?这个问题困扰了我很久,我这个星期都没睡好过,惨....
      

  9.   

    对不起,sql语句的条件部分应是"where  b.h=d.g  "
      

  10.   

    在a.mdb或d.mdb做一个到对方对应表的链接表。这样两个表就在一个数据库里,再用Where或
    inner join 就可以了。