以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表属性代码引用表达式列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151859)

--  作者:爱相随
--  发布时间:2020/7/6 9:57:00
--  表属性代码引用表达式列
老师,在表属性的代码里不能引用列属性为表达式的列吗?用什么方法可以引用呢!!
If e.DataCol.Name = "zwbm" Then  
    Dim filter1 As String = "zwbm = \'" & e.DataRow("zwbm")  & "\' And nd = \'" & e.DataRow("nd") & "\'And yf = \'" & e.DataRow("yf") & "\'"
    e.DataRow("byxz") = DataTables("xzxymxb").Compute("sum(byxz)",filter1 ) 
    e.DataRow("byfk") = DataTables("xzfkmxb").Compute("sum(byfk)",filter1 ) 
    e.DataRow("byzh") = DataTables("hbmxb").Compute("sum(hkje)",filter1 ) + DataTables("gckzfmxb").Compute("sum(zfje)",filter1 )
    e.DataRow("byzf") = DataTables("lxmxb").Compute("sum(zfje)",filter1 ) 
End If
(byxz)、(byfk)、(hkje)、(zfje)这些列都是表达式列,在项目打开时,提示这些列无效!!
[此贴子已经被作者于2020/7/6 9:58:36编辑过]

--  作者:有点蓝
--  发布时间:2020/7/6 9:58:00
--  
可以引用。请举例说明具体问题
--  作者:爱相随
--  发布时间:2020/7/6 9:59:00
--  
If e.DataCol.Name = "zwbm" Then  
    Dim filter1 As String = "zwbm = \'" & e.DataRow("zwbm")  & "\' And nd = \'" & e.DataRow("nd") & "\'And yf = \'" & e.DataRow("yf") & "\'"
    e.DataRow("byxz") = DataTables("xzxymxb").Compute("sum(byxz)",filter1 ) 
    e.DataRow("byfk") = DataTables("xzfkmxb").Compute("sum(byfk)",filter1 ) 
    e.DataRow("byzh") = DataTables("hbmxb").Compute("sum(hkje)",filter1 ) + DataTables("gckzfmxb").Compute("sum(zfje)",filter1 )
    e.DataRow("byzf") = DataTables("lxmxb").Compute("sum(zfje)",filter1 ) 
End If
(byxz)、(byfk)、(hkje)、(zfje)这些列在其他表都是表达式列,在项目打开时,提示这些列无效!!(最开始是数据列,后面更改为表达式列后打开项目就提示列无效)
[此贴子已经被作者于2020/7/6 10:00:47编辑过]

--  作者:有点蓝
--  发布时间:2020/7/6 10:12:00
--  
在项目打开时,提示这些列无效这这个代码没有什么关系,上面代码肯定是可以使用的。

在项目打开时,检查项目事件、加载树、外部表设置等等

--  作者:爱相随
--  发布时间:2020/7/6 11:30:00
--  

老师,窗口的AfterLoad事件中涉及上述表达式列,是否影 响,因为项目 事件中没有代码涉及到。


--  作者:爱相随
--  发布时间:2020/7/6 11:35:00
--  
.NET Framework 版本:2.0.50727.8806
Foxtable 版本:2017.6.12.1
错误所在事件:
详细错误信息:
列名 \'byfk\' 无效。
没有说明是哪个事件的代码引起的无效

--  作者:有点蓝
--  发布时间:2020/7/6 11:35:00
--  
代码?
--  作者:爱相随
--  发布时间:2020/7/7 10:27:00
--  
窗口的AfterLoad事件中的代码,只截了一部分用到的(byfk)就是引用表的表达式列
Dim dt7 As New Date(y, 1, 1)
Dim dt8 As New Date(y, 12, 31)
Dim Filter3 As String
Dim Filter4 As String
Filter3 = "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'"
Filter4 = "rq < \'" & dt7 & "\'"

Dim cnt1 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt1 & "\' And rq <= \'" & dt2 & "\'And zwlx = \'公益性项目债务\'")
Dim cnt2 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt1 & "\' And rq <= \'" & dt2 & "\'And zwlx = \'非项目债务\'") + DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt1 & "\' And rq <= \'" & dt2 & "\'And zwlx = \'经营性项目债务\'") 
Dim cnt3 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt1 & "\' And rq <= \'" & dt2 & "\'And zwlx = \'棚改项目\'")
Dim cnt4 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt1 & "\' And rq <= \'" & dt2 & "\'")
Dim cnt5 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt3 & "\' And rq <= \'" & dt4 & "\'And zwlx = \'公益性项目债务\'")
Dim cnt6 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt3 & "\' And rq <= \'" & dt4 & "\'And zwlx = \'非项目债务\'") + DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt3 & "\' And rq <= \'" & dt4 & "\'And zwlx = \'经营性项目债务\'")  
Dim cnt7 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt3 & "\' And rq <= \'" & dt4 & "\'And zwlx = \'棚改项目\'")
Dim cnt8 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt3 & "\' And rq <= \'" & dt4 & "\'")
Dim cnt9 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt5 & "\' And rq <= \'" & dt6 & "\'")
Dim cnt10 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt5 & "\' And rq <= \'" & dt6 & "\'And zwlx = \'公益性项目债务\'")
Dim cnt11 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt5 & "\' And rq <= \'" & dt6 & "\'And zwlx = \'非项目债务\'") + DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt5 & "\' And rq <= \'" & dt6 & "\'And zwlx = \'经营性项目债务\'")  
Dim cnt12 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt5 & "\' And rq <= \'" & dt6 & "\'And zwlx = \'棚改项目\'")
Dim cnt13 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'")
Dim cnt14 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'公益性项目债务\'")
Dim cnt55 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'公益性项目债务\'And zwlb = \'贷款融资\'")
Dim cnt56 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'公益性项目债务\'And zwlb = \'应付工程款\'") 
Dim cnt15 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'非项目债务\'") + DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'经营性项目债务\'") 
Dim cnt57 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'非项目债务\'And zwlb = \'贷款融资\'") + DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'经营性项目债务\'And zwlb = \'贷款融资\'") 
Dim cnt58 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'非项目债务\'And zwlb = \'应付工程款\'") + DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'经营性项目债务\'And zwlb = \'应付工程款\'")  
Dim cnt16 As Integer = DataTables("xzfkmxb").sqlCompute("sum(byfk)/10000" , "rq >= \'" & dt7 & "\' And rq <= \'" & dt8 & "\'And zwlx = \'棚改项目\'")

[此贴子已经被作者于2020/7/7 10:27:40编辑过]

--  作者:爱相随
--  发布时间:2020/7/7 10:30:00
--  
就是将原来是数据列的列改为表达式列后,打开项目就会提示“XX”列无效,又没指定是哪个事件的代码导致的
--  作者:有点蓝
--  发布时间:2020/7/7 10:54:00
--  
Compute可以使用表达式列。sqlCompute不可以使用表达式列,因为sqlCompute是直接查询数据库的,数据库不存在表达式列