以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]遍历如何做?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50520)

--  作者:lesliecheung912
--  发布时间:2014/5/8 10:33:00
--  [求助]遍历如何做?

[此贴子已经被作者于2014-5-28 18:00:02编辑过]

--  作者:lesliecheung912
--  发布时间:2014/5/8 10:34:00
--  

[此贴子已经被作者于2014-5-28 18:00:13编辑过]

--  作者:Bin
--  发布时间:2014/5/8 10:38:00
--  
for each r as row in Tables("档案管理总表.档案管理明细").rows
     r.Locked = True
next
DataTables("档案管理明细").Save()



--  作者:有点甜
--  发布时间:2014/5/8 10:39:00
--  

改一下

 

With Tables("档案管理总表")
    If .Current IsNot Nothing Then
        .Current.Save()
    End If
End With
Dim r As Row = Tables("档案管理总表.档案管理明细").Current
With Tables("档案管理总表.档案管理明细")
    If r("档案编号") = Nothing OrElse r("档案名称") = Nothing OrElse r("档案类型") = Nothing OrElse r("归档日期") = Nothing OrElse r("保管期限") = Nothing OrElse r("档案明细名称") = Nothing OrElse r("部门1") = Nothing OrElse r("部门2") = Nothing OrElse r("办事处") = Nothing OrElse r("档案移交人") = Nothing OrElse r("档案室") = Nothing OrElse r("档案柜") = Nothing OrElse r("档案明细名称") = Nothing OrElse r("档案明细日期") = Nothing OrElse r("档案明细编号") = Nothing
        Messagebox.show("档案明细录入不全,请录入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else     
        For i As Integer = 0 To .Rows.count - 1
            .Rows(i).Locked = True

            .Rows(i).Save
        Next
        Messagebox.show("档案明细已保存!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        DataTables("档案管理总表").AllowEdit = False
        DataTables("档案管理明细").AllowEdit = False
    End If
End If
End With

[此贴子已经被作者于2014-5-8 10:57:48编辑过]

--  作者:lesliecheung912
--  发布时间:2014/5/8 10:52:00
--  
谢谢甜姐,有时候这些问题你做出来看着就很简单,但是我自己想的时候就是想不到,底子太差了
--  作者:lesliecheung912
--  发布时间:2014/5/8 11:05:00
--  
还有一个问题甜姐:
这样保存档案以后,按钮上一条的代码是:
Dim hasSave As Boolean = True
For Each r As Row In Tables("档案管理总表.档案管理明细").Rows
    If r.DataRow.RowState <> DataRowState.Unchanged Then
        hasSave = False
    End If
Next
If hasSave Then
    With Tables("档案管理总表")
        If .Current IsNot Nothing AndAlso .Current.DataRow.RowState = DataRowState.Unchanged Then \'如果当前行未曾修改
            .Position = .Position - 1
        End If
    End With \'上一条
End If
这样的话只能在点击保存按钮两次以后才能操作上一条,我用messagebox.show试了一下,第一次保存后点按钮上一条hasSave为False,第二次保存后点按钮上一条hasSave就变成了True,这是怎么回事呢?


--  作者:有点甜
--  发布时间:2014/5/8 11:06:00
--  

 呵呵,写错了,你把4楼的代码再复制一次。

 

        For i As Integer = 0 To .Rows.count - 1
            .Rows(i).Locked = True

            .Rows(i).Save
        Next

[此贴子已经被作者于2014-5-8 11:06:53编辑过]

--  作者:Bin
--  发布时间:2014/5/8 11:07:00
--  
第一次保存,有未保存的行,所以进入这个代码段
 If r.DataRow.RowState <> DataRowState.Unchanged Then
        hasSave = False
    End If

保存过之后,就没有未保存的行,没有进入上面的代码段,自然就没有为它赋值为Flase.

--  作者:lesliecheung912
--  发布时间:2014/5/8 11:10:00
--  
果然如此,看来代码的顺序还是至关重要的,多谢甜姐!