Foxtable(狐表)用户栏目专家坐堂 → 代码修改


  共有1809人关注过本帖树形打印复制链接

主题:代码修改

美女呀,离线,留言给我吧!
longyanlin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:151 积分:1463 威望:0 精华:0 注册:2016/5/12 14:53:00
代码修改  发帖心情 Post By:2017/8/21 13:33:00 [只看该作者]

老师,我做了个“计件工资”表,里面有列“计件工资,计时工资,扣保险,扣房租”等列名称,再做个按钮,使用如下代码,想提取“计件明细表”里的计件工资,和“计时明细表”里面的计时工资,以及提取“其它明细表”里面的扣保险,扣房租等内容,求代码修改。(现在代码只能提取一个表的内容,其它的不知道怎样写了),感谢!

Dim dic As new Dictionary(of String,Integer)
DataTables("计件工资").DataRows.Clear()
For Each dr1 As Row In Tables("计件明细").Rows
    For Each dr2 As DataRow In DataTables("计件明细").Select("[姓名] = '" & dr1("姓名") & "'")
        Dim nm As String = dr2("姓名")
        Dim vl As Integer = dr1("计件工资")
        If dic.ContainsKey(nm) = False
            dic.Add(nm,vl)
        Else
            dic(nm) = dic(nm)+ vl
        End If
    Next
Next

For Each key As String In dic.keys
    Dim dr As DataRow = DataTables("计件工资").AddNew()
    dr("姓名") = key
    dr("计件工资") = dic(key)
Next

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/21 15:33:00 [只看该作者]

DataTables("计件工资").DataRows.Clear()

For Each xm As String In DataTables("计件明细").GetValues("姓名")
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("计件工资") = DataTables("计件明细").compute("sum(计件工资)", "姓名 = '" & xm & "'")
Next
For Each xm As String In DataTables("计时明细").GetValues("姓名")
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("计时工资") = DataTables("计时明细").compute("sum(计时工资)", "姓名 = '" & xm & "'")
Next
For Each xm As String In DataTables("其它明细").GetValues("姓名")
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("扣保险") = DataTables("其它明细").compute("sum(扣保险)", "姓名 = '" & xm & "'")
    fdr("扣房租") = DataTables("其它明细").compute("sum(扣房租)", "姓名 = '" & xm & "'")
Next


 


 回到顶部
美女呀,离线,留言给我吧!
longyanlin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:151 积分:1463 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2017/8/21 15:59:00 [只看该作者]

谢谢老师,以上代码能实现,但是是提取DATATABLE的数据,所以在单独计算某个人或者是某个时间段就会不方便,能否加一个ComboBox1,代表姓名,一个DateTimePicker1,代表工资的日期开始,和一个DateTimePicker2,代表工资日期的结束等三个控件,然后点击2楼按钮后,显示出某人或者是某月的工资


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/21 16:23:00 [只看该作者]

某人某月等等条件,那就修改红色代码

 

Dim filter1 As String = "姓名='张三' and 日期 >= #2017-08-01# and 日期 < #2017-09-01#"

Dim filter2 As String = "日期 >= #2017-08-01# and 日期 < #2017-09-01#"

For Each xm As String In DataTables("计件明细").GetValues("姓名", filter1)

    fdr("计件工资") = DataTables("计件明细").compute("sum(计件工资)", "姓名 = '" & xm & "' and " & filter2)

 

http://www.foxtable.com/webhelp/scr/1058.htm

 


 回到顶部
美女呀,离线,留言给我吧!
longyanlin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:151 积分:1463 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2017/8/21 20:11:00 [只看该作者]

老师,改了两小时都没有改好,小妹愚笨,请老师帮忙写下,后面对着正确的代码认真理解,谢谢甜老师

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/21 20:17:00 [只看该作者]

参考这里的设置条件方法:http://www.foxtable.com/webhelp/scr/1058.htm

 回到顶部
美女呀,离线,留言给我吧!
longyanlin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:151 积分:1463 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2017/8/21 20:54:00 [只看该作者]

这里是一个Table的查询,我要做的是提取3个DatatabLe的数据,不知道从那里着手,还有就是2楼代码是计件工资表里的姓名是来自DateTab1e,当某人某月没有工资记录时,计件工资表也会新增该员工工资,而一楼代码不会
[此贴子已经被作者于2017/8/21 21:10:20编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/21 21:16:00 [只看该作者]

不管多少表用法都一样的,你要学的是如何设置条件,这个和多少个表没有关系

贴出你的代码看看


 回到顶部
美女呀,离线,留言给我吧!
longyanlin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:151 积分:1463 威望:0 精华:0 注册:2016/5/12 14:53:00
  发帖心情 Post By:2017/8/21 21:36:00 [只看该作者]

Dim Filter As String
With e.Form.Controls("ComboBox4")
    If .Value IsNot Nothing Then
        Filter = "姓名 = '" & .Value & "'"
    End If
End With

With e.Form.Controls("DateTimePicker5")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("DateTimePicker6")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("计件明细").Filter = Filter
    Tables("计时明细").Filter = Filter
    Tables("其它工资").Filter = Filter
End If

DataTables("计件工资").DataRows.Clear()

For Each xm As String In DataTables("计件明细").GetValues("姓名")
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("计件工资") = Tables("计件明细").compute("sum(计件工资)", "姓名 = '" & xm & "'")
Next
For Each xm As String In DataTables("计时明细").GetValues("姓名")
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("其它工资") = Tables("计时明细").compute("sum(计时工资)", "姓名 = '" & xm & "'")
Next
For Each xm As String In DataTables("其它工资").GetValues("姓名")
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("奖励") = Tables("其它工资").compute("sum(奖励)", "姓名 = '" & xm & "'")
    fdr("罚款") = Tables("其它工资").compute("sum(罚款)", "姓名 = '" & xm & "'")
    fdr("房租") = Tables("其它工资").compute("sum(房租)", "姓名 = '" & xm & "'")
    fdr("扣水电") = Tables("其它工资").compute("sum(扣水电)", "姓名 = '" & xm & "'")
    fdr("保险") = Tables("其它工资").compute("sum(保险)", "姓名 = '" & xm & "'")
    fdr("扣其它") = Tables("其它工资").compute("sum(扣其它)", "姓名 = '" & xm & "'")
Next

该代码提取了三个table的数据,请老师帮忙改改,“计件工资”表只新增3个table出现的姓名,没有出现的不要新增

[此贴子已经被作者于2017/8/21 21:41:18编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/21 21:55:00 [只看该作者]

Dim Filter As String
With e.Form.Controls("ComboBox4")
    If .Value IsNot Nothing Then
        Filter = "姓名 = '" & .Value & "'"
    End If
End With
Dim filter2 As String = "1=1 "
With e.Form.Controls("DateTimePicker5")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
        filter2 = filter2 & " and 日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("DateTimePicker6")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
        filter2 = filter2 & " and 日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("计件明细").Filter = Filter
    Tables("计时明细").Filter = Filter
    Tables("其它工资").Filter = Filter
End If
DataTables("计件工资").DataRows.Clear()
For Each xm As String In DataTables("计件明细").GetValues("姓名",Filter)
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("计件工资") = Tables("计件明细").compute("sum(计件工资)", "姓名 = '" & xm & "' and " &  filter2 )
Next
For Each xm As String In DataTables("计时明细").GetValues("姓名",Filter)
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("其它工资") = Tables("计时明细").compute("sum(计时工资)", "姓名 = '" & xm & "' and " &  filter2)
Next
For Each xm As String In DataTables("其它工资").GetValues("姓名",Filter)
    Dim fdr As DataRow = DataTables("计件工资").find("[姓名] = '" & xm & "'")
    If fdr Is Nothing Then
        fdr = DataTables("计件工资").AddNew
        fdr("姓名") = xm
    End If
    fdr("奖励") = Tables("其它工资").compute("sum(奖励)", "姓名 = '" & xm & "' and " &  filter2)
    fdr("罚款") = Tables("其它工资").compute("sum(罚款)", "姓名 = '" & xm & "' and " &  filter2)
    fdr("房租") = Tables("其它工资").compute("sum(房租)", "姓名 = '" & xm & "' and " &  filter2)
    fdr("扣水电") = Tables("其它工资").compute("sum(扣水电)", "姓名 = '" & xm & "' and " &  filter2)
    fdr("保险") = Tables("其它工资").compute("sum(保险)", "姓名 = '" & xm & "' and " &  filter2)
    fdr("扣其它") = Tables("其它工资").compute("sum(扣其它)", "姓名 = '" & xm & "' and " &  filter2)
Next

 回到顶部
总数 11 1 2 下一页