以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 全局代码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133381) |
-- 作者:giulioli -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/4/13 10:46:00 -- 错误所在事件:窗口,learning,AfterLoad 写了什么代码?贴出来看看
|
-- 作者:giulioli -- 发布时间: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 = "付款" |
-- 作者:有点蓝 -- 发布时间:2019/4/13 11:20:00 -- 全局代码只是定义了record这么一个变量,有什么地方给这个变量赋值了吗?赋值了才能使用 |
-- 作者:giulioli -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2019/4/13 11:39:00 -- 不算。这个是在循环里重新定义了一个局部变量,和全局变量没有半毛钱的关系 |
-- 作者:giulioli -- 发布时间:2019/4/13 12:06:00 -- 我在全局代码里写了 PUBLIC RECORD AS DATAROW 呀 |
-- 作者:有点蓝 -- 发布时间:2019/4/13 13:43:00 -- 代码块里重新定义的变量名会覆盖全局的变量名。这个是代码作用域的问题。 这样改改就可以了 For Each record In crecords 但是这样的用法看不出使用全局变量的意义在哪里
|
-- 作者:giulioli -- 发布时间:2019/4/13 16:18:00 -- 明白了,谢谢 |