以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  e.cancle在内部函数中要如何用?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38367)

--  作者:晕了快扶我
--  发布时间:2013/7/27 10:24:00
--  e.cancle在内部函数中要如何用?

Dim tbn As String = Args(0)
Dim key As String = Args(1)
Dim Result As DialogResult
Result = MessageBox.Show("确定要删除[ " & Tables(tbn).Current(key) & " ]的所有资料吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    MessageBox.Show("[ " & Tables(tbn).Current(key) & " ]的所有资料已经删除成功!","提示")
    Tables(tbn).Current.Delete
Else
e.Cancel =True
End If
Return Nothing


--  作者:Bin
--  发布时间:2013/7/27 10:25:00
--  
内部函数没办法这也使用的.

你可以返回一个值.  TRUE 或者False

然后调用函数的地方再根据返回值 设置e.cancel

--  作者:晕了快扶我
--  发布时间:2013/7/27 10:26:00
--  
以下是引用Bin在2013-7-27 10:25:00的发言:
内部函数没办法这也使用的.

你可以返回一个值.  TRUE 或者False

然后调用函数的地方再根据返回值 设置e.cancel

不太明白,能不能就上面这段给我写下代码呢?


--  作者:Bin
--  发布时间:2013/7/27 10:28:00
--  

Dim tbn As String = Args(0)
Dim key As String = Args(1)
Dim Result As DialogResult
Result = MessageBox.Show("确定要删除[ " & Tables(tbn).Current(key) & " ]的所有资料吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    MessageBox.Show("[ " & Tables(tbn).Current(key) & " ]的所有资料已经删除成功!","提示")
    Tables(tbn).Current.Delete
Else
Return true
End If
Return false


调用的时候根据如果返回true 那么再设置e.cancel=true


--  作者:晕了快扶我
--  发布时间:2013/7/27 10:33:00
--  
以下是引用Bin在2013-7-27 10:28:00的发言:

Dim tbn As String = Args(0)
Dim key As String = Args(1)
Dim Result As DialogResult
Result = MessageBox.Show("确定要删除[ " & Tables(tbn).Current(key) & " ]的所有资料吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    MessageBox.Show("[ " & Tables(tbn).Current(key) & " ]的所有资料已经删除成功!","提示")
    Tables(tbn).Current.Delete
Else
Return true
End If
Return false


调用的时候根据如果返回true 那么再设置e.cancel=true

调用的时候代码怎么判断呢?用这样的方式?

Dim s As Boolean = Functions.Execute("ceshi","供应商资料主表","简称")

if s = true

....

else

...

end if

这样?

 


--  作者:晕了快扶我
--  发布时间:2013/7/27 10:35:00
--  
我感觉这样还是不方便,如果我在内部函数中判断完了还要执行其他的代码呢?有没有其他的办法可以把这个e参数传递进去内部函数里呢?
--  作者:Bin
--  发布时间:2013/7/27 10:36:00
--  
恩  简化点的写法应该可以这么写

e.cancel=Functions.Execute("ceshi","供应商资料主表","简称")

--  作者:晕了快扶我
--  发布时间:2013/7/27 10:37:00
--  

比如改造SQL数据库的自动编号

Dim djsj As String = Args(0)
Dim bh As String  =Args(1)
Dim qz As String =Args(2)
Dim dr As DataRow = Args(3)
Dim pf As String
If dr.RowState <> DataRowState.Added Then \'如果不是新增行
    Return Nothing \'那么返回
ElseIf dr.IsNull(djsj) Then \'如果没有输入日期
    \'e.Cancel = True \'取消保存此行
    MessageBox.Show("必须输入日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return Nothing
Else
    pf = Format(dr(djsj),"yyMMdd") \'否则获得编号的前缀,两位年,两位月
End If
Dim cmd1 As New SQLCommand
Dim cmd2 As New SQLCommand
Dim Key As Integer
Dim nm As String = Args(4)
cmd1.C \'设置数据源名称
cmd2.C
cmd1.commandText = "Select Count(*) From [编码规则] Where [前缀] = \'" & pf & "\' And 表名 = \'" & nm & "\'"
If cmd1.ExecuteScalar = 0 Then \'如果编号表不存在前缀的行,那么增加一行
    cmd1.commandtext = "Insert Into 编码规则 (表名, 前缀, 序号) Values(\'" & nm & "\',\'" & pf & "\',1)"
    cmd1.ExecuteNonQuery
End If
cmd1.commandText = "Select [序号] From [编码规则] Where [前缀] = \'" & pf & "\' And 表名 = \'" & nm & "\'"
Do
    Key = cmd1.ExecuteScalar() \'从后台获得顺序号
    cmd2.commandText = "Update [编码规则] Set [序号] = " & (Key + 1) & " Where [序号] = " & Key & " And [前缀] = \'" & pf & "\' And 表名 = \'" & nm & "\'"
    If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号
        Exit Do \'更新成功则退出循环
    End If
Loop
dr(bh) =  qz & pf & Format(Key,"00")

 

我卡在这里卡了一天了图片点击可在新窗口打开查看


--  作者:Bin
--  发布时间:2013/7/27 10:38:00
--  
就使用我刚才说得方法即可.
--  作者:jspta
--  发布时间:2013/7/27 10:50:00
--  

用bin的方法就可以了或者你把e当参数传递进去就可以使用了