以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何在保存数据时先判断该行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69590)

--  作者:yongxuanchen
--  发布时间:2015/6/7 21:10:00
--  如何在保存数据时先判断该行
    如果一行之前被锁定,修改时保存会提示错误。如何在保存数据前先判断该行是否被锁定。最好的状态是如何实现一个被锁定的行在窗口中也不能修改数据(在保存之前就发现该行被锁定了)。
--  作者:大红袍
--  发布时间:2015/6/7 21:15:00
--  

 什么意思,报什么错?在什么事件写代码?


--  作者:yongxuanchen
--  发布时间:2015/6/7 21:42:00
--  锁定行
    我在锁定某行后在对应窗口中对该行对应的TXBOX进行修改,然后保存该表。提示“1信息表已经关闭,不能调用其中的空间“textbox2””
--  作者:yongxuanchen
--  发布时间:2015/6/7 21:43:00
--  

继续提示

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2014.11.11.1
错误所在事件:菜单,保存信息,Click
详细错误信息:
未设置对象变量或 With 块变量。


--  作者:大红袍
--  发布时间:2015/6/7 21:44:00
--  

 跟锁定不锁定没什么关系,代码写得有问题。


--  作者:yongxuanchen
--  发布时间:2015/6/7 22:00:00
--  

代码是这样的,当“竣工日期”为空是按保存,提示上面的错误。

With Tables("电梯信息表")
Dim drx1 As Row=Tables("电梯信息表").Current
If drx1.isnull("竣工日期") Then
        messagebox.show("必须输入竣工日期")
        Forms("电梯信息表").Controls("DateTimePicker1").Select()
        Return
End If
If drx1.isnull("合同编号") Then
        messagebox.show("必须输入合同编号")
        Forms("电梯信息表").Controls("TextBox42").Select()
        Return
End If
。。。。。

If .Current.DataRow.RowState = DataRowState.Unchanged Then \'如果当前行未曾修改
          MessageBox.Show("该记录未被修改,不需要进行保存操作")
   
    Else
        
         Tables("电梯信息表").Current.Save()  
         Tables("电梯信息表").Current.Locked = True
        MessageBox.Show("当前行已经被保存,若想撤销,请<撤销修改>! ")
       
    End If
   
End With


--  作者:大红袍
--  发布时间:2015/6/7 22:03:00
--  
With Tables("电梯信息表")
    Dim drx1 As Row=Tables("电梯信息表").Current
    If drx1 IsNot Nothing Then
        If drx1.isnull("竣工日期") Then
            messagebox.show("必须输入竣工日期")
            Forms("电梯信息表").Controls("DateTimePicker1").Select()
            Return
        End If
        If drx1.isnull("合同编号") Then
            messagebox.show("必须输入合同编号")
            Forms("电梯信息表").Controls("TextBox42").Select()
            Return
        End If
        .....
       
        If .Current.DataRow.RowState = DataRowState.Unchanged Then \'如果当前行未曾修改
            MessageBox.Show("该记录未被修改,不需要进行保存操作")
           
        Else
           
            Tables("电梯信息表").Current.Save()
            Tables("电梯信息表").Current.Locked = True
            MessageBox.Show("当前行已经被保存,若想撤销,请<撤销修改>! ")
           
        End If
    End If
End With

--  作者:yongxuanchen
--  发布时间:2015/6/7 22:08:00
--  还是不行
   版主,还是不行,提示同样的错误。谢谢。
--  作者:yongxuanchen
--  发布时间:2015/6/7 22:09:00
--  补充
    上述的程序建立在菜单上。在窗口中用同样的程序不会提示错误。
--  作者:大红袍
--  发布时间:2015/6/7 22:26:00
--  

 If drx1 IsNot Nothing Then

 

改成

 

 If drx1 IsNot Nothing AndAlso Forms("电梯信息表").Opened Then

[此贴子已经被作者于2015/6/7 22:26:11编辑过]