Foxtable(狐表)用户栏目专家坐堂 → 全局代码


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

主题:全局代码

帅哥哟,离线,有人找我吗?
giulioli
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
全局代码  发帖心情 Post By:2019/4/13 10:10:00 [只看该作者]

老师,我问下全局代码我写了
PUBLIC RECORD AS DATAROW

然后我从一个窗口给这个RECORD赋值,到另一个窗口调用RECORD(列名)好像不行,报错,不知道为何?

.NET Framework 版本:2.0.50727.8937
Foxtable 版本:2018.3.9.1
错误所在事件:窗口,learning,AfterLoad
详细错误信息:
未将对象引用设置到对象的实例。

[此贴子已经被作者于2019/4/13 10:15:32编辑过]

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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/13 10:46:00 [只看该作者]

错误所在事件:窗口,learning,AfterLoad

写了什么代码?贴出来看看

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
  发帖心情 Post By:2019/4/13 10:53:00 [只看该作者]

Dim cbx As WinForm.ComboBox = e.Form.controls("ComboBox1")
Dim binfo As WinForm.Label = e.Form.controls("label5")
Dim lbldate As WinForm.Label = e.Form.controls("datelabel")
Dim a As String
cbx.AllowEditValue = False
cbx.combolist = DataTables("client").GetComboListString("name")
leibie = 1

messagebox.show(riqi) '全局代码riqi,是一个列名赋值给riqi这个string,这里调试没有问题
a = record(riqi) ‘估计这一行出错,record找不到

messagebox.show(a)
lbldate.text = "日期" & a

If shoufu = True Then
    binfo.text = "收款"
Else
    binfo.text = "付款"


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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/13 11:20:00 [只看该作者]

全局代码只是定义了record这么一个变量,有什么地方给这个变量赋值了吗?赋值了才能使用

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
  发帖心情 Post By:2019/4/13 11:23:00 [只看该作者]

有赋值,在主窗口里面有段代码, for each record as datarow in crecords 循环,这样算赋值吗?

   For Each record As DataRow In crecords
        shoufu = True
        dr = DataTables("receipt").addnew()
        acode = DataTables("infolearn").Find("[baccount] = '" & record(counteracc) & "' And [inout] = True")
        
        If acode Is Nothing Then
            newdr = DataTables("infolearn").AddNew()
            newdr("baccount") = record(counteracc)
            newdr("bbank") = record(counterbnk)
            newdr("bname") = record(counter)
            
            dr("counterparty") = newdr("bname")
            dr("payercategory") = newdr("type")
            
        Else
            
            dr("counterparty") = acode("code")
            dr("payercategory") = acode("type")
            
        End If
        
        dr("date") = CDate(record(riqi))
        dr("amount") = val(record(credit))
        dr("ouraccountID") = accdr("accountID")
        dr("note") = record(zhaiyao)
        
    Next


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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/13 11:39:00 [只看该作者]

不算。这个是在循环里重新定义了一个局部变量,和全局变量没有半毛钱的关系

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
  发帖心情 Post By:2019/4/13 12:06:00 [只看该作者]

我在全局代码里写了 PUBLIC RECORD AS DATAROW 呀

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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/13 13:43:00 [只看该作者]

代码块里重新定义的变量名会覆盖全局的变量名。这个是代码作用域的问题。

这样改改就可以了

For Each record  In crecords

但是这样的用法看不出使用全局变量的意义在哪里

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
  发帖心情 Post By:2019/4/13 16:18:00 [只看该作者]

明白了,谢谢

 回到顶部