以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]用for each语句简化代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89191)

--  作者:33chyh
--  发布时间:2016/8/17 7:28:00
--  [求助]用for each语句简化代码
老师您好!帮助中for each语句的例子已经看过多次,在解决下面问题时还不会运用。下面是自己编写一段代码,也能实现相应功能。但是代码太多。如何用for each语句简化用荧光笔标注的代码?请您给予指导。
具体想法:通过比较“卷1答”表和“客观题答案”表中对应项比较,完全一致,在成绩表中计得分1。
疑惑:如何用for each语句实现寻找对应列?

图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看
Dim kgt1,kgt2,kgt3 As Integer
Dim fkgdr1 As DataRow = DataTables("客观题答案").find("客观题1 = \'" & e.DataRow("客观题1") & "\' And 试卷号 = \'" & DataTables("卷1答").name.Chars(1) & "\'")
Dim fkgdr2 As DataRow = DataTables("客观题答案").find("客观题2 = \'" & e.DataRow("客观题2") & "\' And 试卷号 = \'" & DataTables("卷1答").name.Chars(1) & "\'")
Dim fkgdr3 As DataRow = DataTables("客观题答案").find("客观题3 = \'" & e.DataRow("客观题3") & "\' And 试卷号 = \'" & DataTables("卷1答").name.Chars(1) & "\'")
Dim ndr1 As DataRow = DataTables("成绩").Find("学号 = \'" & e.DataRow("学号") & "\'")
Dim ndr2 As DataRow = DataTables("卷1问").Find("学号 = \'" & e.DataRow("学号") & "\'")
If ndr1 Is Nothing OrElse ndr2 Is Nothing Then  \'这是一个将相关表格进行同时增加行的条件代码
    ndr1 = DataTables("成绩").AddNew
    ndr1("学号") = e.DataRow("学号")
    ndr2 = DataTables("卷1问").AddNew
    ndr2("学号") = e.DataRow("学号")
End If
I
f fkgdr1 Is Nothing Then 
    kgt1 = 0
Else
    kgt1 = 1
End If
If fkgdr2 Is Nothing Then
    kgt2 = 0
Else
    kgt2 = 1
End If
If fkgdr3 Is Nothing Then
    kgt3 = 0
Else
    kgt3 = 1
End If
ndr1("卷1") = kgt1 + kgt2 + kgt3
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.foxdb


--  作者:y2287958
--  发布时间:2016/8/17 8:20:00
--  
Dim kgt As Integer
For i As Integer = 1 To 3
    Dim fkgdr As DataRow = DataTables("客观题答案").find("客观题" & i " = \'" & e.DataRow("客观题" & i) & "\' And 试卷号 = \'" & DataTables("卷1答").name.Chars(1) & "\'")
    If fkgdr Is Nothing Then
        kgt += 1
    End If
Next
ndr1("卷1") = kgt

--  作者:33chyh
--  发布时间:2016/8/17 19:03:00
--  
老师您好!在您的代码中,我学到了如何设置一些动态表达式的方法。在阅读中有一处代码含义不清楚,请问“kgt += 1”的含义是什么?它和“kgt = kgt + 1”的含义一样吗? 经过试验两者效果一样。
[此贴子已经被作者于2016/8/17 19:18:31编辑过]

--  作者:大红袍
--  发布时间:2016/8/17 20:24:00
--  

 a += 1 等同于 a = a + 1

 

 a &= 1 等同于 a = a & 1


--  作者:33chyh
--  发布时间:2016/8/17 21:41:00
--  
谢谢大红袍老师