Tba = "CW_03_车间成本费用表1"  '需要更新的表
   
    sqlcjcb = "记录编码,本月成本" '临时表头 '记录编码,本月成本是表CW_03_车间成本费用表1中的2个字段,记录编码是主键
    
    cjcb = "#tmp_dba_" & JELR.Tag '临时表创建
    
    strcnn.Execute "if exists (select name from sysobjects where name='" & cjcb & "') drop table " & cjcb '检查临时表是否存在
    
    strcnn.Execute "select top 0 " & sqlcjcb & " into " & cjcb & " from " & Tba '临时表不存在就创建
    
    With Adocjcb
        If .State = adStateOpen Then .Close
        .Open "select top 0 " & sqlcjcb & " from " & cjcb, strcnn, adOpenKeyset, adLockBatchOptimistic
    End With
    
    With Adocjcb
    
     For i = 1 To EGrid.Rows - 1
        
        .AddNew
            .Fields("记录编码") = Trim(EGrid.TextMatrix(i, 1))
            .Fields("本月成本") = Val(Trim(EGrid.TextMatrix(i, 12)))
     
        Next
       End With
    strcnn.BeginTrans
        Adocjcb.UpdateBatch
        strcnn.Execute "INSERT INTO " & Tba & "(" & sqlcjcb & ") select * from " & cjcb
    
    strcnn.CommitTrans
    
        Adocjcb.Close
        Set Adocjcb = Nothing
        strcnn.Execute "drop table " & cjcb
        Save = True错误提示是:不能更新查询,因为不含用作主键的搜索列!
请高手来帮帮忙