以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码错误求修正  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74573)

--  作者:bestorange
--  发布时间:2015/9/14 14:37:00
--  代码错误求修正


此主题相关图片如下:123.png
按此在新窗口浏览图片

此主题相关图片如下:213.png
按此在新窗口浏览图片

在图一窗口中选择好教师姓名(如:张三),然后单击“统计”按钮,自动弹出图二的窗口,单击图二窗口中“工资发放”按钮后,图一窗口中所绑定的表“培训课时统计表”中 对应教师(张三)的“工资已发”列勾选并隐藏。

 

现在单击后会勾选全部教师的“工资发放”列,也不隐藏。是代码中出了错误吗??

 

 

下面是图二中“工资发放”按钮的代码,点击以后,图1中

Dim mr As Row =Tables("培训课时统计表").Current
Dim Result As DialogResult
Result = MessageBox.Show(mr("教师姓名") &" 您是否已核对过表格中各项统计及金额无误,确定领取工资?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
   
    For Each r As Row In Tables("教师课时统计表").Rows
        r("工资已发") = True
        r.Locked = True
        r.Save
    Next
   
    Dim nma()As String = {"教师姓名","教师工资","授课内容"}  \'A表数据来源列
    Dim nmb()As String = {"相关人员","账目金额","名目"}  \'B表数据接收列
    Dim dr3 As Row = Tables("教师课时统计表").Current
    Dim dr4 As Row = Tables("经营相关账目").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr4(nmb(i)) = dr3(nma(i))
    Next
   
    MessageBox.Show(mr("教师姓名") &" 您的工资已结算完毕,发放到您的手中!是不是要请客哦!O(∩_∩)O~","提示")
End If
e.Form.Controls("Button1").Enabled = False
e.Form.Controls("Button3").Enabled = False
e.Form.Controls("Button4").Enabled = False

DataTables("培训课时统计表").Save
DataTables("经营相关账目").Save

 

 


--  作者:大红袍
--  发布时间:2015/9/14 15:00:00
--  

 

Dim mr As Row =Tables("培训课时统计表").Current
Dim Result As DialogResult
Result = MessageBox.Show(mr("教师姓名") &" 您是否已核对过表格中各项统计及金额无误,确定领取工资?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
   
    For Each r As DataRow In DataTables("培训课时统计表").Select("教师姓名 = \'" & mr("教师姓名") & "\'")
        r("工资已发") = True
        r.Locked = True
        r.Save
    Next
   
    Dim nma()As String = {"教师姓名","教师工资","授课内容"}  \'A表数据来源列
    Dim nmb()As String = {"相关人员","账目金额","名目"}  \'B表数据接收列
    Dim dr3 As Row = Tables("教师课时统计表").Current
    Dim dr4 As Row = Tables("经营相关账目").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr4(nmb(i)) = dr3(nma(i))
    Next
    Tables("培训课时统计表").Filter = "工资已发 = false or 工资已发 is null"
    MessageBox.Show(mr("教师姓名") &" 您的工资已结算完毕,发放到您的手中!是不是要请客哦!O(∩_∩)O~","提示")
End If
e.Form.Controls("Button1").Enabled = False
e.Form.Controls("Button3").Enabled = False
e.Form.Controls("Button4").Enabled = False

DataTables("培训课时统计表").Save
DataTables("经营相关账目").Save


--  作者:bestorange
--  发布时间:2015/9/14 15:17:00
--  

还是不对,我在图1中选择了(张三),然后单击统计,课时还是全部教师后面都勾选。是不是我图1中 统计按钮的事件问题?

Dim g As New GroupTableBuilder("统计表1", DataTables("培训课时统计表"))
g.Groups.AddDef("教师姓名")
g.Groups.AddDef("授课内容")
g.Totals.AddDef("授课内容", AggregateEnum.Count,"签到次数")
g.Filter = "教师姓名 = \'" & e.Form.Controls("ComboBox1").Text & "\'and 已结算 = false"
g.Build(False)

DataTables("教师课时统计表").DataRows.Clear
Dim f As new Filler
f.SourceTable = DataTables("统计表1") \'指定数据来源
f.SourceCols = "教师姓名,授课内容,签到次数" \'指定数据来源列
f.DataTable = DataTables("教师课时统计表") \'指定数据接收表
f.DataCols = "教师姓名,授课内容,签到次数" \'指定数据接收列
f.Fill() \'填充数据

MainTable = Tables("教师课时统计表")
DataTables.Unload("统计表1")

For Each r As Row In Tables("培训课时统计表").Rows
    r("已结算") = True
    r.Save
Next
DataTables("培训课时统计表").Save
DataTables("教师课时统计表").Save
forms("培训课时统计表").close
forms("教师工资结算表").show


--  作者:大红袍
--  发布时间:2015/9/14 15:23:00
--  

2楼代码没有问题。

 

3楼代码

 

For Each r As Row In Tables("培训课时统计表").Rows
    r("已结算") = True
    r.Save
Next

 

改成

 

For Each r As DataRow In DataTable("培训课时统计表").Select("教师姓名 = \'" & e.Form.Controls("ComboBox1").Text & "\' and 已结算 = false")
    r("已结算") = True
    r.Save
Next


--  作者:bestorange
--  发布时间:2015/9/14 15:28:00
--  
以下是引用大红袍在2015/9/14 15:23:00的发言:

2楼代码没有问题。

 

3楼代码

 

For Each r As Row In Tables("培训课时统计表").Rows
    r("已结算") = True
    r.Save
Next

 

改成

 

For Each r As DataRow In DataTable("培训课时统计表").Select("教师姓名 = \'" & e.Form.Controls("ComboBox1").Text & "\' and 已结算 = false")
    r("已结算") = True
    r.Save
Next

修改后提示错误,DataTable是一个类型不能用做表达式


--  作者:大红袍
--  发布时间:2015/9/14 15:47:00
--  
DataTable 改成 DataTables
--  作者:bestorange
--  发布时间:2015/9/14 18:53:00
--  

大师啊 还是不对,图一中,张三,找四 两个老师,我选择张三,单击统计,然后 在图二中单击 工资发放 结果找四也勾选了。

 

是我哪段代码出错了?


--  作者:大红袍
--  发布时间:2015/9/14 19:15:00
--  

那这样写,还不行,就上传实例。

   

    Dim xm As String = mr("教师姓名")

    For Each r As DataRow In DataTables("培训课时统计表").Select("教师姓名 = \'" & xm & "\'")
        r("工资已发") = True
        r.Locked = True
        r.Save
    Next