Foxtable(狐表)用户栏目专家坐堂 → 共用窗口命令问题


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

主题:共用窗口命令问题

帅哥哟,离线,有人找我吗?
bestorange
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:514 积分:3247 威望:0 精华:0 注册:2015/4/22 16:20:00
共用窗口命令问题  发帖心情 Post By:2015/8/7 16:48:00 [只看该作者]


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

把之前的各种课程的签到和课时统计表按照大师说的

合并成为一个表,几个窗口也共用同一模板,那么我签到窗口的命令应该怎样修改,好想命令会很繁琐,因为在统一窗口("签到")里 要根据不同的课程,在“学员一览表”中减去相应课程的课时,目前已有4种课程,也许还会增加,该如何编写命令才好呢?

 

另外,既然在学员一览表中 每一位学员的教师和课程都已经记录,在签到中,如我选中该名教师后,学员的下拉菜单中,可否只出现该名教师所教学员的名字。

选中教师,学员后,该学员所学课程的内容,可以自动代入,不需要再选择了。

 

下面是现有签到按钮的事件命令,红色部分是我比较困惑的问题,这样写会不会出现问题??

Dim mr As Row =Tables("培训课时统计表").Current
Dim Result As DialogResult
Result = MessageBox.Show(mr("教师姓名") &" 要签到吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
   
    '找到对应的学员这一行,改怎么减就怎么减
    Dim dr1 As DataRow = DataTables("学员一览表").Find("辅导老师 = '" & mr("教师姓名") & "' And 课程 = '" & mr("授课内容") & "' and 姓名 = '" & mr("学员姓名") & "'")
    Dim dr2 As DataRow = DataTables("课类分类表").Find("科目 = '" & mr("授课内容") & "'")
     

    
    If dr1 Is Nothing OrElse dr2 Is Nothing Then
       
        messagebox.show("输入错误")
       
    End If
   
    mr.Save
   
    dr1("学费余额") = dr1("学费余额") - dr2("课时费")
    dr1("剩余课时") = dr1("剩余课时") - 1

  

    dr1("乐理余额") = dr1("乐理余额") - dr2("乐理费")
    dr1("乐理课时") = dr1("乐理课时") - 1

 

    dr1("陪练余额") = dr1("陪练余额") - dr2("陪练费")
    dr1("陪练课时") = dr1("陪练课时") - 1

 

 


    MessageBox.Show(mr("教师姓名") &" 签到成功","提示")
   
    mr.Save
   
End If


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


Dim nmd()As String = {"教师姓名","授课内容","学员姓名","签到时间","签到次数"}  'A表数据来源列
Dim nmc()As String = {"教师姓名","授课内容","学员姓名","签到时间","签到次数"}  'B表数据接收列

Dim dr6 As Row = Tables("培训课时统计表").Current
Dim dr5 As Row = Tables("教师签到记录").AddNew
For i As Integer = 0 To nmd.Length - 1
    dr5(nmc(i)) = dr6(nmc(i))
Next

forms("教师签到").close



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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/7 16:56:00 [只看该作者]

1、下拉的问题

 

http://www.foxtable.com/help/topics/1523.htm

 

2、课时问题。不能根据课程去判断上的是什么课吗?知道以后,就减去即可

 

If mr("授课内容") = "xxx" Then
    dr1("学费余额") = dr1("学费余额") - dr2("课时费")
    dr1("剩余课时") = dr1("剩余课时") - 1
Else If mr("授课内容") = "yyy"
    dr1("乐理余额") = dr1("乐理余额") - dr2("乐理费")
    dr1("乐理课时") = dr1("乐理课时") - 1
End If


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


加好友 发短信
等级:二尾狐 帖子:514 积分:3247 威望:0 精华:0 注册:2015/4/22 16:20:00
  发帖心情 Post By:2015/8/7 17:58:00 [只看该作者]

下拉菜单显示问题 不用按教师名称筛选的方式吗?

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


加好友 发短信
等级:二尾狐 帖子:514 积分:3247 威望:0 精华:0 注册:2015/4/22 16:20:00
  发帖心情 Post By:2015/8/7 18:02:00 [只看该作者]

以下是引用大红袍在2015/8/7 16:56:00的发言:

1、下拉的问题

 

http://www.foxtable.com/help/topics/1523.htm

 

2、课时问题。不能根据课程去判断上的是什么课吗?知道以后,就减去即可

 

If mr("授课内容") = "xxx" Then
    dr1("学费余额") = dr1("学费余额") - dr2("课时费")
    dr1("剩余课时") = dr1("剩余课时") - 1
Else If mr("授课内容") = "yyy"
    dr1("乐理余额") = dr1("乐理余额") - dr2("乐理费")
    dr1("乐理课时") = dr1("乐理课时") - 1
End If

 

 

因为培训课程中路多,如钢琴、吉他、古筝等等,另外附加乐理知识、陪练、听力。

我是把分类表分开建呢?还是在 If mr("授课内容") = "xxx" Then

的"xxx"这里用and 把所有内容加进去。

 

可这两种方式都会产生另一个问题,发布后的程序,用户使用,也许会增加新课程。总不能指望用户去修改事件命令吧


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


加好友 发短信
等级:二尾狐 帖子:514 积分:3247 威望:0 精华:0 注册:2015/4/22 16:20:00
  发帖心情 Post By:2015/8/7 18:10:00 [只看该作者]

 

If mr("授课内容") = "xxx" Then
    dr1("学费余额") = dr1("学费余额") - dr2("课时费")
    dr1("剩余课时") = dr1("剩余课时") - 1
Else If mr("授课内容") = "yyy"
    dr1("乐理学费余额") = dr1("乐理余额") - dr2("课时费")
    dr1("乐理课时") = dr1("乐理课时") - 1
End If
Else If mr("授课内容") = "zzz"
    dr1("陪练费余额") = dr1("陪练费余额") - dr2("课时费")
    dr1("乐理课时") = dr1("乐理课时") - 1
End If

 

dr2的表是这样的 ,


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150807180903.png
图片点击可在新窗口打开查看

 


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


加好友 发短信
等级:二尾狐 帖子:514 积分:3247 威望:0 精华:0 注册:2015/4/22 16:20:00
  发帖心情 Post By:2015/8/7 18:11:00 [只看该作者]

按照您之前说的,我把科目也加多一列 大类区分 

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/7 20:37:00 [只看该作者]

 每一门课程,对应什么扣费,你要在课程分类表那里体现出来。比如加一列 扣费列

 

 直接取扣费列的内容就行了。


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


加好友 发短信
等级:二尾狐 帖子:514 积分:3247 威望:0 精华:0 注册:2015/4/22 16:20:00
  发帖心情 Post By:2015/8/7 21:08:00 [只看该作者]

我把图1窗口签到命令改为:

Dim mr As Row =Tables("培训课时统计表").Current
Dim Result As DialogResult
Result = MessageBox.Show(mr("教师姓名") &" 是否确认签到?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    '找到对应的学员这一行,改怎么减就怎么减
    Dim dr1 As DataRow = DataTables("学员一览表").Find("辅导老师 = '" & mr("教师姓名") & "' And 课程 = '" & mr("授课内容") & "' and 姓名 = '" & mr("学员姓名") & "'")
    Dim dr2 As DataRow = DataTables("课类分类表").Find("科目 = '" & mr("授课内容") & "'")
   
    If dr1 Is Nothing OrElse dr2 Is Nothing Then
        messagebox.show("错误,请核对授课内容.")
    End If
   
    If mr("授课内容") = dr1("课程") Then
        dr1("学费余额") = dr1("学费余额") - dr2("课时费")
        dr1("剩余课时") = dr1("剩余课时") - 1
    Else If mr("授课内容") = dr1("乐理程度")
        dr1("乐理学费余额") = dr1("乐理学费余额") - dr2("课时费")
        dr1("乐理课时") = dr1("乐理课时") - 1
    Else If mr("授课内容") = dr1("陪练等级")
        dr1("陪练费余额") = dr1("陪练费余额") - dr2("课时费")
        dr1("陪练课时") = dr1("陪练课时") - 1
    End If
   
    MessageBox.Show(mr("教师姓名") &" 签到成功","提示")
    mr.Save
   
End If


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


Dim nmd()As String = {"教师姓名","授课内容","学员姓名","签到时间","签到次数"}  'A表数据来源列
Dim nmc()As String = {"教师姓名","授课内容","学员姓名","签到时间","签到次数"}  'B表数据接收列

Dim dr6 As Row = Tables("培训课时统计表").Current
Dim dr5 As Row = Tables("教师签到记录").AddNew
For i As Integer = 0 To nmd.Length - 1
    dr5(nmc(i)) = dr6(nmc(i))
Next

forms("签到").close

 

 

图2表事件命令:

If e.DataCol.Name = "学员姓名" Then
    If e.NewValue Is Nothing Then
        e.DataRow("授课内容") = Nothing
    Else
        Dim dr3  As  DataRow
        dr3 =  DataTables("学员一览表").Find("姓名 = '" & e.DataRow("学员姓名") & "'")
        If dr3 IsNot Nothing Then
            e.DataRow("授课内容") = dr3("课程")
           
        End If
    End If
End If


If e.DataCol.Name = "授课内容" Then
    If e.NewValue Is Nothing Then
        e.DataRow("培训科目") = Nothing
    Else
        Dim dr1  As  DataRow
        dr1 =  DataTables("课类分类表").Find("科目 = '" & e.DataRow("授课内容") & "'")
        If dr1 IsNot Nothing Then
            e.DataRow("培训科目") = dr1("培训科目")
            e.DataRow("签到时间") = Date.Today
            e.DataRow("签到次数") = 1
        End If
    End If
End If

 

 

是可以签到完成了,单另外一个问题 还是解决不了

图3学员一览表中,,有三种项目产生 课时 和课时费。。。。培训课程。陪练、乐理知识

要在这一个签到窗口中完成 是不是比较麻烦、?

还是我在做一个窗口完成其他两项?

 

 


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

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

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

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


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

一个做也行,另外做一个也是一样的方法啊,你根据你的项目查出对应的数据行,然后根据查询来修改这个表中的表达式就行了。
[此贴子已经被作者于2015/8/7 21:30:26编辑过]

 回到顶部