以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何实现保存以后输入密码才能修改  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=64544)

--  作者:youngling
--  发布时间:2015/2/21 22:09:00
--  如何实现保存以后输入密码才能修改

我有两个表订单主表和订单明细表,订单主表和订单明细表是关联表。

在订单主表输入数据时根据订单主表输入的订单行数在订单明细表中新增相应的行数,并且把订单主表里的客户,客户订单号和下单日期填写到订单明细表中。

 

我现在需要实现的功能是,新增以后如果已经保存了,那么必须输入密码才可以修改,但是在新增的时候是允许修改的。但是我的代码改来改去都不行,请帮我看下,谢谢。 

 


此主题相关图片如下:a.jpg
按此在新窗口浏览图片

 

订单主表 Prepareedit 代码:

 

Dim dr As DataRow = Tables("订单主表").Current.DataRow \'取行状态
If  dr.RowState <> DataRowState.Added Then
\'If e.Row.IsNull("订单行数") = False And dr.RowState <> DataRowState.Added Then

    e.Cancel = True
Else
    e.cancel=False
End If

 

 

订单主表 Doubleclick 代码:

 

Dim dr As DataRow = Tables("订单主表").Current.DataRow \'取行状态

Select Case E.Col.NAME
    Case "客户","客户订单号","是否核销","下单日期","内部订单号","订单行数"
       
        If  dr.RowState <> DataRowState.Added Then
           
            Dim psd As String
           
            InputValue(psd,"修改允许验证","请输入修改密码,如无需修改请点击取消按钮") \'输入密码
            If psd = "123123" Then \'如果密码正确
                e.Table.StartEditing \'强行进入编辑状态
            Else
                Messagebox.Show("密码错误,不允许修改","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            End If
           
        Else
            e.Cancel = True
        End If
End Select

 

 

 

订单明细表 Prepareedit 代码:希望可以同时用表事件和窗口事件。窗口用的是订单主表以及订单主表和订单明细表的关联表

 

 
此主题相关图片如下:b.jpg
按此在新窗口浏览图片

 

 

Select Case e.Table.Name
    Case "订单明细表" \'主表
        e.Cancel = True

    Case "订单主表.订单明细表" \'关联表
        Dim dr As DataRow = Tables("订单明细表").Current.DataRow \'取行状态
       \' If e.Row.IsNull("未税总价") = False And dr.RowState = DataRowState.unchanged Then
        If dr.RowState <> DataRowState.added Then

            \'Added Or dr.RowState = DataRowState.modified Then
            e.Cancel = True
        Else
            e.cancel=False
        End If
        
End Select

 

订单明细表 doubleclick 代码

 

Select Case e.Table.Name
    Case "订单明细表" \'主表
        Dim dr As DataRow = Tables("订单明细表").Current.DataRow \'取行状态
       
        Select Case E.Col.NAME
            Case "客户产品号","交货日期","订货数量","含税单价","未税单价"
                If  dr.RowState = DataRowState.Modified Then
                   
                    e.Cancel = False
                   
                   
                Else
                    Dim psd As String
                   
                    InputValue(psd,"修改允许验证","请输入修改密码,如无需修改请点击取消按钮") \'输入密码
                    If psd = "123123" Then \'如果密码正确
                        e.Table.StartEditing \'强行进入编辑状态
                    Else
                        Messagebox.Show("密码错误,不允许修改","提示!!",MessageBoxButtons.OK,MessageBoxIcon.Information)
                    End If
                   
                End If
               
        End Select
       
       
    Case "订单主表.订单明细表" \'关联表
       
        Dim dr As DataRow = Tables("订单主表.订单明细表").Current.DataRow \'取行状态
       
        Select Case E.Col.NAME
            Case "客户产品号","交货日期","订货数量","含税单价","未税单价"
                If  dr.RowState <> DataRowState.added Then
                    Dim psd As String
                   
                    InputValue(psd,"修改允许验证","请输入修改密码,如无需修改请点击取消按钮") \'输入密码
                    If psd = "123123" Then \'如果密码正确
                        e.Table.StartEditing \'强行进入编辑状态
                    Else
                        Messagebox.Show("密码错误,不允许修改","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                    End If
                   
                Else
                    e.Cancel = True
                End If
               
        End Select
       
End Select

 



 

[此贴子已经被作者于2015/2/21 22:12:05编辑过]

--  作者:youngling
--  发布时间:2015/2/22 21:34:00
--  
为什么没有人帮忙看看呀
--  作者:有点甜
--  发布时间:2015/2/23 9:18:00
--  

加一个变量判断。

 

在prepareEdit加入类似代码

 

If vars("允许") = True Then

    e.Cancel = Faflse

End If

 

在DoubleClick加入代码

 

vars("允许") = True


--  作者:youngling
--  发布时间:2015/2/23 10:33:00
--  

So easy!

 

我为什么没想到呢?太好了,谢谢。