以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  编译函数不执行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157546)

--  作者:lihe60
--  发布时间:2020/10/20 13:59:00
--  编译函数不执行
第一段代码
    Case webaddress
        bbbh=webaddress.replace("bb_","")
        e.AppendCookie("bbbh",bbbh)       
        wb = New WeUI
        wb.AddForm("","form1","fc_table")        
        filter="se/lect * from {bscode} where code=\'bb_" & bbbh & "\'"
        cmd.commandtext=filter
        lsdt=cmd.ExecuteReader()
        Dim s As String=decrypttext(lsdt.dataRows(0)("web"),key1,key2)
        Functions.Add("test",s)
        Functions.Complie
        Functions.Execute("test")
        Functions.Remove("test")
                With wb.AddButtonGroup("form1","btg1",False)
            If e.cookies("terminal")="手机"
                .Add("btn0","首页").attribute=""
            Else
                .Add("btn0", "首页","","/default")
            End If
            .Add("btn1", "确定", "submit")
        End With
        e.WriteString(wb.Build) \'生成网页
        If pause="是"
            e.Handled = True \'通知系统异步函数执行完毕,可以关闭信道
        End If

下面是第二段代码
    Case webaddress
        bbbh=webaddress.replace("bb_","")
        e.AppendCookie("bbbh",bbbh)        
        wb = New WeUI
        wb.AddForm("","form1","fc_table")        
With wb.AddInputGroup("form1","ipg1","筛选条件")
    .AddInput("startdate","开始日期","date")
    .AddInput("enddate","结束时间","date")
    .AddInput("单位名称1","单位名称","text")
    .AddInput("合同编号1","合同编号","text")
End With 
With wb.AddCheckGroup("form1","偏好","分组统计")
  \'  .Add("小区名称","小区名称")
    .Add("单位名称","单位名称")
    .Add("合同编号","合同编号")
End With
        With wb.AddButtonGroup("form1","btg1",False)
            If e.cookies("terminal")="手机"
                .Add("btn0","首页").attribute=""
            Else
                .Add("btn0", "首页","","/default")
            End If
            .Add("btn1", "确定", "submit")
        End With
        e.WriteString(wb.Build) \'生成网页
        If pause="是"
            e.Handled = True \'通知系统异步函数执行完毕,可以关闭信道
        End If


本来第一段代码执行的效果同第二段代码,现在第一段代码不执行了,第二段代码才会执行。

[此贴子已经被作者于2020/10/20 14:01:58编辑过]

--  作者:lihe60
--  发布时间:2020/10/20 14:03:00
--  
原来是可以用的,现在突然不能用了。
--  作者:有点蓝
--  发布时间:2020/10/20 14:09:00
--  
函数里面是什么内容?

        filter="se/lect * from {bscode} where code=\'bb_" & bbbh & "\'"
        cmd.commandtext=filter
        lsdt=cmd.ExecuteReader()
        Dim s As String=decrypttext(lsdt.dataRows(0)("web"),key1,key2)
msgbox(s)
        Functions.Remove("test") 先删除再添加
        Functions.Add("test",s)
        Functions.Complie
        Functions.Execute("test")
        Functions.Remove("test")

--  作者:lihe60
--  发布时间:2020/10/20 14:15:00
--  
messagebox.show(s)
输出的就是下面这段代码
With wb.AddInputGroup("form1","ipg1","筛选条件")
    .AddInput("startdate","开始日期","date")
    .AddInput("enddate","结束时间","date")
    .AddInput("单位名称1","单位名称","text")
    .AddInput("合同编号1","合同编号","text")
End With 
With wb.AddCheckGroup("form1","偏好","分组统计")
  \'  .Add("小区名称","小区名称")
    .Add("单位名称","单位名称")
    .Add("合同编号","合同编号")
End With
[此贴子已经被作者于2020/10/20 14:15:52编辑过]

--  作者:lihe60
--  发布时间:2020/10/20 14:15:00
--  
  Functions.Remove("test") 先删除再添加也不能执行。
[此贴子已经被作者于2020/10/20 14:22:54编辑过]

--  作者:lihe60
--  发布时间:2020/10/20 14:16:00
--  
删除bin也没有用。
--  作者:有点蓝
--  发布时间:2020/10/20 14:30:00
--  
这种代码编译为函数是根本不可能执行的!

函数里的代码都是独立的,和外部的调用程序完全是没有任何关系的。比如wb变量,函数里面即没有定义这个变量,也没有从外部传入这个变量,因此这个变量是根本不存在的。

函数需要改为这样

dim wb as WeUI = args(0)
With wb.AddInputGroup("form1","ipg1","筛选条件")
    .AddInput("startdate","开始日期","date")
    .AddInput("enddate","结束时间","date")
    .AddInput("单位名称1","单位名称","text")
    .AddInput("合同编号1","合同编号","text")
End With 
With wb.AddCheckGroup("form1","偏好","分组统计")
  \'  .Add("小区名称","小区名称")
    .Add("单位名称","单位名称")
    .Add("合同编号","合同编号")
End With

调用:
Dim s As String=decrypttext(lsdt.dataRows(0)("web"),key1,key2)
        Functions.Add("test",s)
        Functions.Complie
        Functions.Execute("test",wb)
        Functions.Remove("test")

--  作者:lihe60
--  发布时间:2020/10/20 14:52:00
--  
web是全局变量,可以调用的。

[此贴子已经被作者于2020/10/20 14:53:04编辑过]

--  作者:有点蓝
--  发布时间:2020/10/20 15:02:00
--  
wb定义为全局变量,然后不同网页都使用这个变量?强大的脑洞!!然后给自己挖了一个强大的坑!!

网页对象都应该是互相独立的,如果使用全局变量,会导致不同网页的内容互相纠缠。

--  作者:lihe60
--  发布时间:2020/10/20 15:07:00
--  
网页不能设置全局变量吗?求惑