以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跨表数据引用和计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81415)

--  作者:33chyh
--  发布时间:2016/2/27 9:34:00
--  跨表数据引用和计算
向专家请教这样一个问题:现有四个表——成绩表、客观题答案、答题数据1和答题数据2。成绩表中的成绩1是根据答题数据1和客观题答案比较以及主观题答案计算得出。如果答题数据1中的答案与客观题答案中的第一行一致,得1分;如果主观题答案是t,得1分。两者相加就是该学生的成绩,将此成绩写到成绩表中的成绩1相应行中。同理答题数据2与上述要求一致。我的问题是:这样的要求可不可以用e事件编程完成。如果可以用应该怎样做呢?如果不能这样做,应该怎样做才行呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多表数据引用和计算.foxdb

[此贴子已经被作者于2016/2/27 14:17:34编辑过]

--  作者:Hyphen
--  发布时间:2016/2/27 10:33:00
--  
参考:


--  作者:33chyh
--  发布时间:2016/2/27 16:09:00
--  衷心感谢
谢谢Hyphen老师提供的示例链接非常有用,尤其对我这个初学者帮助很大!!!图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:33chyh
--  发布时间:2016/2/27 17:01:00
--  
为什么我在答题数据1写入下列代码后,成绩表中成绩1列只有主观题2得相应分值呢?
Dim zgt As Integer    \'声明储值变量
Dim zgt1 As Integer    \'声明储值变量
Dim zgt2 As Integer    \'声明储值变量
Dim Filter As String = "学号 = \'" & e.DataRow("学号") & "\'"  \'声明关联列
Dim drs As List(of DataRow) = DataTables("成绩表").Select(Filter)  \'声明关联列变量集合
Dim dr As DataRow \'搜索变量集合每一个成员
Select Case e.DataCol.Name
    Case "主观题1"   \'确定主表改变列
        For Each dr In drs
            If e.NewValue = "t" Then
                zgt1 = 1
            End If
            If e.NewValue = "f" Then
                zgt1 = 0
            End If      \'给相关列赋值
        Next
    Case "主观题2"   \'确定主表改变列
        For Each dr In drs
            If e.NewValue = "t" Then
                zgt2 = 1
            End If
            If e.NewValue = "f" Then
                zgt2 = 0
            End If      \'给相关列赋值
        Next
        zgt=zgt1+zgt2
        dr("成绩1") = zgt   \'将相关值写入从表相关列
end select
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多表数据引用和计算.foxdb


--  作者:Hyphen
--  发布时间:2016/2/27 17:31:00
--  
Dim zgt As Integer    \'声明储值变量
Dim zgt1 As Integer    \'声明储值变量
Dim zgt2 As Integer    \'声明储值变量
Dim Filter As String = "学号 = \'" & e.DataRow("学号") & "\'"  \'声明关联列
Dim drs As List(of DataRow) = DataTables("成绩表").Select(Filter)  \'声明关联列变量集合
Dim dr As DataRow \'搜索变量集合每一个成员
Select Case e.DataCol.Name
    Case "主观题1","主观题2"
        If e.DataRow("主观题1") = "t" Then
            zgt1 = 1
        End If
        If e.DataRow("主观题2") = "t" Then
            zgt2 = 1
        End If      \'给相关列赋值
        zgt=zgt1+zgt2
        For Each dr In drs
            dr("成绩1") = zgt   \'将相关值写入从表相关列
        Next
End Select

--  作者:33chyh
--  发布时间:2016/2/27 17:54:00
--  
谢谢您的帮助图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:33chyh
--  发布时间:2016/2/27 18:24:00
--  
Hyphen 老师:我想将答题数据1中的客观题列内容与客观题答案中的第一行第一列内容比较,如果一致,则将变量kgt赋值为1。请问看帮助中的哪部分呢?