以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于遍历保存的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=55133)

--  作者:lesliecheung912
--  发布时间:2014/8/11 15:30:00
--  [求助]关于遍历保存的问题
对于窗口中的表A,可以一次性增加几条明细,然后将每一条明细的内容填入,最后点保存按钮,遍历录入的几条明细,对于应该录入而没有录入的字段,报个Message,并退出For循环,然后保存并锁定行。代码如下:
With Tables("表A")
    If .Rows.count > 0 Then
        Dim Result As DialogResult
        Result = MessageBox.Show("是否确定保存表A?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
            For Each r As Row In Tables("表A")
                If r("字段1") = Nothing  Then
                    Messagebox.show("请选择字段1!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                    Exit For
                ElseIf r("字段2") = Nothing  Then
                    Messagebox.show("请选择字段2!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                    Exit For
                Else
                    
                    For i As Integer = 0 To .Rows.count - 1
                    .Rows(i).Locked = True
                    .Rows(i).Save
                    Next
                    Messagebox.show("表A已保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                End If
            Next
        Else
            Messagebox.show("请继续!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
    Else
        Messagebox.show("当前表无数据,保存无效!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
End With

但对于以上代码,保存部分不正确,如果每条明细都正常录入的话,“表A已保存”的Message会重复报几次,应该如何更改才能完成:如果明细中有没有录入的字段则报个Message并退出整个保存里的代码;在完全遍历完所有明细后再去判断是否保存,只要明细中有没有录入的字段就不予保存,否则则保存并报Message

--  作者:有点甜
--  发布时间:2014/8/11 15:41:00
--  
Dim flag As Boolean = True
With Tables("表A")
    If .Rows.count > 0 Then
        Dim Result As DialogResult
        Result = MessageBox.Show("是否确定保存表A?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
            For Each r As Row In Tables("表A")
                If r("字段1") = Nothing  Then
                    Messagebox.show("请选择字段1!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                    flag = False
                    Exit For
                ElseIf r("字段2") = Nothing  Then
                    Messagebox.show("请选择字段2!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                    flag = False
                    Exit For
                End If
            Next
            If flag Then
                For i As Integer = 0 To .Rows.count - 1
                    .Rows(i).Locked = True
                    .Rows(i).Save
                Next
                Messagebox.show("表A已保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)               
            End If
        Else
            Messagebox.show("请继续!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
    Else
        Messagebox.show("当前表无数据,保存无效!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
End With

--  作者:lesliecheung912
--  发布时间:2014/8/11 15:50:00
--  
谢谢您甜姐,忘记用Flag了图片点击可在新窗口打开查看