Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

再次请教煮版

chinasa  发表于:2015-06-08 10:00:58  
复制

煮版,您好!

在您的指点下,我把代码调整好了,但现在有一个小问题:UPDATETABLE代码中两表需要颠倒一下,我需要根据“"tb_奖金_部门”表来更改“tb_奖金_总表”,而现在是相反的。

 

系统功能说明:

1.读取部门奖金_Click():从人力资源部门把公司计划发给本部门的工资读取到本地。
2.上传部门奖金_Click():在本地把需要调整的奖金进行调整,调整后再把人力资源部门的总表按照本地数据更新掉。

 

Private Sub 上传部门奖金_Click()

Call UpdateTable("tb_奖金_总表", "tb_奖金_部门", "F:\jjtb.mdb", "zhuang0731")

End Sub


Sub UpdateTable(ByVal targetTable As String, ByVal sourceTable As String, ByVal sourceFile As String, ByVal password As String)
    '功能:同结构表导入
    '参数:targetTable -- 本地目标表表名
           targetTable = "tb_奖金_部门"
    '      sourceTable -- 源表表名
           sourceTable = "tb_奖金_总表"
    '      sourceFile  -- 源数据库文件地址
    '      password    -- 源数据库密码
    '示例:call UpdateTable("tb2","tb1","F:\jjtb.mdb","A123456")
    Dim ssql As String
    Dim strConn As String
    Dim rs1 As New ADODB.Recordset, rs2 As New ADODB.Recordset, rs3 As ADODB.Recordset
    Dim i As Long, j As Long
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "F:" & "\jjtb.mdb;Persist Security Info=False;Jet OLEDB:database Password=zhuang0731;"
    ssql = "select * from " & sourceTable
    rs2.Open ssql, strConn, adOpenKeyset, adLockOptimistic
    ssql = "select * from " & targetTable

    rs1.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    For i = 1 To rs1.RecordCount
        Set rs3 = rs2.Clone

         rs3.Filter = "工号= '" & rs1!工号.Value & "'"

        If rs3.EOF = False Then
            For j = 0 To rs1.Fields.Count - 1
                If rs1.Fields(j).Name <> "工号" Then
                    rs1.Fields(j).Value = rs3.Fields(j).Value
                End If
            Next
            rs1.Update
        End If
        rs1.MoveNext
    Next
    rs1.Close: Set rs1 = Nothing
    rs2.Close: Set rs2 = Nothing
    Set rs3 = Nothing

 End Sub

 

 

 

Private Sub 读取部门奖金_Click()
Dim strConn As String
Dim Rs As New ADODB.Recordset

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "F:" & "\jjtb.mdb;Persist Security Info=False;Jet OLEDB:database Password=zhuang0731;"
'strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "\\10.16.47.80\备份 (F)" & "\jjtb.mdb;Persist Security Info=False;Jet OLEDB:database Password=zhuang0731;"
Rs.Open "Select * from tb_奖金_总表", strConn, adOpenKeyset, adLockOptimistic

Rs.MoveFirst
Do Until Rs.EOF
DoCmd.RunSQL "INSERT INTO tb_奖金_部门( 所在部门,工号,姓名,工资级别,奖金标准,系数,[100%标准],[40%标准],[40%实发],特殊岗位津贴,调整奖金,应发合计,备注) values(" & Chr(34) & Rs("所在部门") & Chr(34) & "," & Chr(34) & Rs("工号") & Chr(34) & "," & Chr(34) & Rs("姓名") & Chr(34) & "," & Chr(34) & Rs("工资级别") & Chr(34) & "," & Chr(34) & Nz(Rs("奖金标准"), 0) & Chr(34) & "," & Chr(34) & Nz(Rs("系数"), 0) & Chr(34) & "," & Chr(34) & Nz(Rs("100%标准"), 0) & Chr(34) & "," & Chr(34) & Nz(Rs("40%标准"), 0) & Chr(34) & "," & Chr(34) & Nz(Rs("40%实发"), 0) & Chr(34) & "," & Chr(34) & Nz(Rs("特殊岗位津贴"), 0) & Chr(34) & "," & Chr(34) & Nz(Rs("调整奖金"), 0) & Chr(34) & "," & Chr(34) & Nz(Rs("应发合计"), 0) & Chr(34) & "," & Chr(34) & Rs("备注") & Chr(34) & ")"
Rs.MoveNext
Loop

Rs.Close
Set Rs = Nothing

 End Sub

 

 

Top
煮江品茶 发表于:2015-06-08 12:26:35
以下循环中的rs1改为rs2,rs2改为rs1,其他代码不变。
.....
    For i = 1 To rs1.RecordCount
        Set rs3 = rs2.Clone
        rs3.Filter = "员工ID=" & rs1!员工ID.Value
        If rs3.EOF = False Then
            For j = 0 To rs1.Fields.Count - 1
                If rs1.Fields(j).name <> "员工ID" Then
                    rs1.Fields(j).Value = rs3.Fields(j).Value
                End If
            Next
            rs1.Update
        End If
        rs1.MoveNext
    Next
.....


chinasa 发表于:2015-06-08 13:08:16

完美解决,感谢~~~



总记录:2篇  页次:1/1 9 1 :