现有两个表客户信息(消费合计),订单信息(金额)
要把订单信息中的“金额”的合计赋值给a中的“消费合计”,即客户信息中的“客户号码”等于订单信息中的“客户号码”
数据库为access该如何操作啊?Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False"
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False"
Adodc1.RecordSource = "客户信息"
Adodc1.Refresh
Adodc2.RecordSource = "订单信息"
Adodc2.Refresh
Dim query As Recordset
 Dim a As Single
 Dim b As Single
 Set query = Data1.Database.OpenRecordset("select 客户信息.客户号码,sum(金额) as a from 订单信息 where 客户信息.客户号码=订单信息.客户号码")
 b = query.Fields("a").Value
 Connection1.Execute "UPDATE 客户信息 SET 客户信息.消费合计=b"
End Sub
我是这样写的,不行啊 到了
Set query = Data1.Database.OpenRecordset("select 客户信息.客户号码,sum(金额) as a from 订单信息 where 客户信息.客户号码=订单信息.客户号码")
就出错啊

解决方案 »

  1.   

    这个SQL语句有问题,看来楼主得加强这方面的知识才行
    "select 客户信息.客户号码,sum(金额) as a from 订单信息 where 客户信息.客户号码=订单信息.客户号码"
    语句中where涉及了两个表,而from才一个表,怎么会对呢?
    你改成:
    "select 客户信息.客户号码,sum(金额) as a from 订单信息,客户信息 where 客户信息.客户号码=订单信息.客户号码"应该就可以了
      

  2.   

    Set query = Data1.Database.OpenRecordset("select 客户信息.客户号码,sum(金额) as a from 订单信息 where 客户信息.客户号码=订单信息.客户号码")
     b = query.Fields("a").Value
    上面去掉,直接執行:
    Connection1.Execute "update 客户信息 set 消费合计 = tmp.合計 from 客户信息 inner join 
    (select 客户号码,isnull(sum(金额),0) as 合計 from 订单信息 Group by 客户号码) tmp
    on 客户信息.客户号码=tmp.客户号码"