Foxtable(狐表)用户栏目专家坐堂 → e.cancle在内部函数中要如何用?


  共有4063人关注过本帖树形打印复制链接

主题:e.cancle在内部函数中要如何用?

帅哥,在线噢!
晕了快扶我
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1199 积分:7102 威望:0 精华:0 注册:2013/3/4 18:02:00
e.cancle在内部函数中要如何用?  发帖心情 Post By:2013/7/27 10:24: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
e.Cancel =True
End If
Return Nothing


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/27 10:25:00 [只看该作者]

内部函数没办法这也使用的.

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

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

 回到顶部
帅哥,在线噢!
晕了快扶我
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1199 积分:7102 威望:0 精华:0 注册:2013/3/4 18:02:00
  发帖心情 Post By:2013/7/27 10:26:00 [只看该作者]

以下是引用Bin在2013-7-27 10:25:00的发言:
内部函数没办法这也使用的.

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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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


 回到顶部
帅哥,在线噢!
晕了快扶我
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1199 积分:7102 威望:0 精华:0 注册:2013/3/4 18:02:00
  发帖心情 Post By: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

这样?

 


 回到顶部
帅哥,在线噢!
晕了快扶我
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1199 积分:7102 威望:0 精华:0 注册:2013/3/4 18:02:00
  发帖心情 Post By:2013/7/27 10:35:00 [只看该作者]

我感觉这样还是不方便,如果我在内部函数中判断完了还要执行其他的代码呢?有没有其他的办法可以把这个e参数传递进去内部函数里呢?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/27 10:36:00 [只看该作者]

恩  简化点的写法应该可以这么写

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

 回到顶部
帅哥,在线噢!
晕了快扶我
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1199 积分:7102 威望:0 精华:0 注册:2013/3/4 18:02:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/27 10:38:00 [只看该作者]

就使用我刚才说得方法即可.

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/7/27 10:50:00 [只看该作者]

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


 回到顶部
总数 11 1 2 下一页