以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:动态编译函数中自定义代码的写法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85786)

--  作者:lzzhx
--  发布时间:2016/6/2 13:54:00
--  求助:动态编译函数中自定义代码的写法
请老师看看,下面的代码死活搞不定了,请老师改一下

Dim dt1 As DataTable = cmd.ExecuteReader
If dt1.DataRows.Count > 0 Then
    Functions.remove("菜单设置")  \'删除用Add方法增加的自定义函数
    Dim Code As String
    code = code & "For Each dr As DataRow" & "In" & dt1.DataRows & vbcrlf
       \' Functions.remove("菜单设置")  \'删除用Add方法增加的自定义函数
        code = code & "dim aaa = " & dr("引用") & vbcrlf
        code = code & "aaa.enabled = not aaa.enabled "  & vbcrlf
        \'Functions.Add("菜单设置",Code) \'增加自定义函数,code是用vbcrlf连起来的一段代码字符串
        \'Functions.Complie()  \'重新编译函数
        \'Functions.Execute("菜单设置")  \'调用函数
    code = code & "Next"
        Functions.Add("菜单设置",Code) \'增加自定义函数,code是用vbcrlf连起来的一段代码字符串
        Functions.Complie()  \'重新编译函数
        Functions.Execute("菜单设置")  \'调用函数

End If


--  作者:lzzhx
--  发布时间:2016/6/2 14:30:00
--  
Dim dt1 As DataTable = cmd.ExecuteReader
If dt1.DataRows.Count > 0 Then
    Functions.remove("菜单设置")  \'删除用Add方法增加的自定义函数
    Dim Code As String = "For Each dr As DataRow In dt1.DataRows" & vbcrlf
    code = code & "dim aaa = dr(\'引用\')" & vbcrlf
    code = code & "aaa.enabled = false"  & vbcrlf
    code = code & "Next"
    Functions.Add("菜单设置",Code) \'增加自定义函数,code是用vbcrlf连起来的一段代码字符串
    Functions.Complie()  \'重新编译函数
    Functions.Execute("菜单设置")  \'调用函数
End If
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/6/2 14:37:00
--  

Dim Code As String = "dim dt1 As DataTable = args(0)" & vbcrlf
code = code & "For Each dr As DataRow In dt1.DataRows " & vbcrlf
code = code & "dim aaa = " & dr("引用") & vbcrlf
code = code & "aaa.enabled = not aaa.enabled "  & vbcrlf

code = code & "Next"
msgbox(code)

 

Functions.Add("菜单设置",Code) \'增加自定义函数,code是用vbcrlf连起来的一段代码字符串
Functions.Complie()  \'重新编译函数
Functions.Execute("菜单设置", dt1)  \'调用函数


--  作者:lzzhx
--  发布时间:2016/6/2 14:51:00
--  
大红袍老师,代码运行后出错,请再看看
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/6/2 15:00:00
--  

Dim Code As String = "dim dt1 As DataTable = args(0)" & vbcrlf
code = code & "For Each dr As DataRow In dt1.DataRows " & vbcrlf
code = code & "dim aaa = dr(""引用"")" & vbcrlf
code = code & "aaa.enabled = not aaa.enabled "  & vbcrlf
code = code & "Next"
msgbox(code)

Functions.Add("菜单设置",Code) \'增加自定义函数,code是用vbcrlf连起来的一段代码字符串
Functions.Complie()  \'重新编译函数
Functions.Execute("菜单设置", dt1)  \'调用函数


--  作者:lzzhx
--  发布时间:2016/6/2 15:08:00
--  
谢谢大红袍老师,又出了新的问题
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:lzzhx
--  发布时间:2016/6/2 15:23:00
--  
请大红袍老师再看看
--  作者:大红袍
--  发布时间:2016/6/2 15:31:00
--  
For Each dr As DataRow In dt1.DataRows
    Functions.remove("菜单设置")
    Dim Code As String = ""
    code = code & "dim aaa = " & dr("引用") & vbcrlf
    code = code & "aaa.enabled = not aaa.enabled "  & vbcrlf
   
    Functions.Add("菜单设置",Code) \'增加自定义函数,code是用vbcrlf连起来的一段代码字符串
    Functions.Complie()  \'重新编译函数
    Functions.Execute("菜单设置")  \'调用函数
Next

--  作者:lzzhx
--  发布时间:2016/6/2 15:38:00
--  
时间太长,执行了将近5分钟
--  作者:大红袍
--  发布时间:2016/6/2 15:43:00
--  
Functions.remove("菜单设置")
Dim Code As String = ""
For Each dr As DataRow In dt1.DataRows
    Dim bl As String =  "aaa" & dr("_Identify")
    code = code & "dim " & bl & " = " & dr("引用") & vbcrlf
    code = code & bl & ".enabled = not " & bl & ".enabled "  & vbcrlf
Next
msgbox(code)
Functions.Add("菜单设置",Code) \'增加自定义函数,code是用vbcrlf连起来的一段代码字符串
Functions.Complie()  \'重新编译函数
Functions.Execute("菜单设置")  \'调用函数