Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

for 循环嵌套问题

顺心  发表于:2012-03-25 23:27:23  
复制

我写了一段代码,在调试的时候提示第二个next没有for,请老师们指点,我检查过几遍没有发现有什么问题呀。

 

For itemp1 = 0 To rs1.RecordCount - 1
           rs.MoveFirst
           Xtong = False
           For itemp = 0 To rs.RecordCount - 1
               If rs("学号") = rs1("学号") And rs("课程编号") = rs1("课程编号") Then
                  Xtong = True
                  a = rs("学号")
                  b = rs("课程编号")
                  MsgBox "学号为'a'的学生已经选过编号为'b'的课程", vbOKOnly, "选课重复"
                  itemp = rs.RecordCount + 1
                End If
            Next itemp
            If Xtong = False Then
               '将选课信息添加到选课表中
               rs.AddNew
               rs("学号") = rs1("学号")
               rs("姓名") = rs1("姓名")
               rs("班级编号") = rs1("班级编号")
               rs("课程编号") = rs1("课程编号")
               rs("课程名称") = rs1("课程名称")
               rs("开课学期") = rs1("开课学期")
               rs.Update
        Next itemp1

 

Access书籍精选,Access答疑,AccessQQ群(41208985

 

Top
学习者 发表于:2012-03-25 23:41:59

你的意思是判断当前的输入不能等于表中按条件已有的记录,其实不需要2个循环,你用到了AddNew,说明判断前,数据不直接在表中看到(即无数据源连接,如果可以看到,说明你都从0开始循环,这表示第一次你拿自己与自己表了),其实只用一个for循环就够了

Dim Xtong = False
For itemp = 0 To rs.RecordCount - 1
If rs("学号") = rs1("学号") And rs("课程编号") = rs1("课程编号") Then
Xtong = True
a = rs("学号")
b = rs("课程编号")
MsgBox "学号为'a'的学生已经选过编号为'b'的课程", vbOKOnly, "选课重复"
itemp = rs.RecordCount + 1
Else

'将选课信息添加到选课表中
rs.AddNew
rs("学号") = rs1("学号")
rs("姓名") = rs1("姓名")
rs("班级编号") = rs1("班级编号")
rs("课程编号") = rs1("课程编号")
rs("课程名称") = rs1("课程名称")
rs("开课学期") = rs1("开课学期")
rs.Update
End If



学习者 发表于:2012-03-25 23:45:47
上面的代码需要改下,改成rs("学号") = me!学号     代码是复制你的  不好意思

顺心 发表于:2012-03-26 00:15:49

我是将一个表中的数据逐个与另一个表中的数据进行比较,一个是rs,一个是rs1.不过现在问题已经解决了,是我少写了一个end if。不过我还有一个问题要请教。

MsgBox "学号为'a'的学生已经选过编号为'b'的课程", vbOKOnly, "选课重复"
这句显示不对。我想在查找到有相同的记录时想在提示框中直接指出来,比如说学号为09130101的学生已经选过编号为2001的课程。如何实现?谢谢



学习者 发表于:2012-03-26 18:37:36

你的列子我没有做,但是我自己随便弄了一个,原理一样

Private Sub Command0_Click()
 
 Dim a As String
 Dim b As String
 a = "张三"
 b = "课程1"
 MsgBox a & "   同学已经选过了  " & b & "  ,请重新选择"
 
End Sub



顺心 发表于:2012-03-26 21:15:02

非常感谢!问题已经解决!



总记录:5篇  页次:1/1 9 1 :