以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 自定义函数第一次调用出错以后的就正常了 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107933) |
-- 作者:李小胖 -- 发布时间:2017/10/12 21:07:00 -- 自定义函数第一次调用出错以后的就正常了 自定义函数权限判断 (他只在第一次调用的时候弹出这个错误窗口是为什么呢? 下面就是自定义函数的全部代码) 调用的目标发生了异常。 System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Runtime.InteropServices.ExternalException: 所请求的剪贴板操作失败。 在 System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr) 在 System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay) 在 System.Windows.Forms.Clipboard.SetText(String text, TextDataFormat format) 在 System.Windows.Forms.Clipboard.SetText(String text) 在 UserCode.AJMi5keGe3em3rR4X(Object[] Args) --- 内部异常堆栈跟踪的结尾 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.UserFunctions.Execute(String Name, Object[] Args) 下面的内容是自定义函数 \'Args(0) TmpModuleID \'传入模块名称 \'Args(1) QX \'传入需要判断的权限(读取,编辑,删除,增加,分享...等等) \'可传入的参数有,addon assign audit back deleteon editon printon readon Share \' 插件 指派分配 审计 返回 删除? 编辑? 打印? 只读? 分享 \'---------------------------------------下面是 人员ID 和部门ID 的判断参数(判断是否本人是否本部门) \'Args(2) SalesManID2 \'传入销售员ID(判断参数) \'修改数据的时候才传入这个参数作为判断,(用来判断以前的数据的人员是不是本人) \'Args(3) DepartmentID2 \'传入部门ID(判断参数) \'用作数据对比的部门ID(旧数据中的) Dim ModuleID2 As String = Args(0) Dim QX As String = Args(1) Dim SalesManID2 As String = Args(2) Dim DepartmentID2 As String = Args(3) Dim cmd As New SQLCommand cmd.C cmd.CommandText = "Select " & QX & " f rom {QX_roleDetail} where RoleID = \'" & TmpRoleID & "\' And ModuleNO = \'" & ModuleID2 & "\'" Dim Res As String = cmd.ExecuteScalar Select Case Res Case "0" Return("无权限") \'返回 Case "1" If SalesManID2 <> "" Then \'销售员ID 如果不等于是空 If SalesManID2 <> TmpUserID Then \'销售员ID 不等于用户ID Return("无权限") End If End If Case "2" If DepartmentID2 <> "" Then \'如果部门本表ID 不等于空 If DepartmentID2 <> TmpDepartmentID Then \'如果部门本表ID 不等于 全局变量的部门ID Return("无权限") End If End If Case "3" \' 这个判断是是不是本部门的,如果不是就不能修改 If TmpDepartmentID.SubString(0,TmpDepartmentID.length-2) <> DepartmentID2.SubString(0,TmpDepartmentID.length-2) Then Return("无权限") End If Case "4" \' 如果 8866.substring(0.2) 不等于 887766.substring(0,2) If DepartmentID2.SubString(0,2) <> TmpDepartmentID.SubString(0,2) Then \'同上 (主要是判断相等就能编辑) Return("无权限") End If Case Else Return Nothing End Select Return Nothing [此贴子已经被作者于2017/10/12 21:08:02编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/10/12 22:36:00 -- 调用函数之前,有调用剪切板的代码?Clipboard?
做个例子看看。 |
-- 作者:李小胖 -- 发布时间:2017/10/13 11:20:00 -- 以下是引用有点甜在2017/10/12 22:36:00的发言:
调用函数之前,有调用 ?Clipboard?
做个例子看看。 cmd.CommandText = "Select " & QX & " fr om {QX_roleDetail} where RoleID = \'" & TmpRoleID & "\' And ModuleNO = \'" & ModuleID2 & "\'" ClipBoard.SetText(cmd.CommandText) Dim Res As String = cmd.ExecuteScalar 上面的代码 我删除了调用 剪切板 这段 |
-- 作者:有点甜 -- 发布时间:2017/10/13 11:25:00 -- 1、bin文件夹删除,重新测试。
2、加入msgbox,定位出错位置。 |