以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  报错提示  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=184425)

--  作者:lisangyu
--  发布时间:2022/12/6 22:24:00
--  报错提示
蓝总:晚上好!
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2022.8.18.1
错误所在事件:
详细错误信息:
无法在 System.Int32 和 System.String 上执行“=”操作。

图片点击可在新窗口打开查看
我在窗口里加了两个ComboBox控件,都在valuechanged加入相同的代码:
Dim Filter1 As String
Filter1 = "年度 = \'" & e.Form.Controls("ComboBox1").Value & "\' And 月份 =\'" & e.Form.Controls("ComboBox2").Value & "\'"
Tables("数据报表_table1").Filter = filter1
打开窗口就乳开头报错,把And 月份 =\'" & e.Form.Controls("ComboBox2").Value & "\'删掉就正常了,这是为什么呢



--  作者:有点蓝
--  发布时间:2022/12/6 22:27:00
--  
Filter1 = "年度 = \'" & e.Form.Controls("ComboBox1").Value & "\' And 月份 =" & e.Form.Controls("ComboBox2").Value

http://www.foxtable.com/webhelp/topics/1284.htm

表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

例如:

Tables("订单").Filter = "[产品] = \'PD01\'"  \'字符用单引号括起来
Tables("订单").Filter = "[日期] = #3/17/1999#"  \'日期用#括起来
Tables("订单").Filter = "[折扣] = 0.1"  \'数值直接使用


建议使用这种方式生成条件:http://www.foxtable.com/webhelp/topics/1058.htm,否则如果控件没有内容就会出错


--  作者:lisangyu
--  发布时间:2022/12/6 22:47:00
--  
Filter1 = "年度 = \'" & e.Form.Controls("ComboBox1").Value & "\' And 月份 =" & e.Form.Controls("ComboBox2").Value
提示:语法错误:“=”运算符后缺少操作数。
[此贴子已经被作者于2022/12/6 22:47:42编辑过]

--  作者:有点蓝
--  发布时间:2022/12/6 23:00:00
--  
msgbox(Filter1 )显示什么内容


--  作者:lisangyu
--  发布时间:2022/12/6 23:15:00
--  
显示月份为空,但是我在afterload里已经加入e.Form.Controls("ComboBox2").Value = Date.Today.month - 1,好像是月份没有获取到值,现在多试聊几次又可以了,哎
--  作者:有点蓝
--  发布时间:2022/12/6 23:28:00
--  
用text
Filter1 = "年度 = \'" & e.Form.Controls("ComboBox1").text & "\' And 月份 =" & e.Form.Controls("ComboBox2").text 
--  作者:lisangyu
--  发布时间:2022/12/8 17:54:00
--  

textchanged代码:
MessageBox.Show(e.Form.Controls("ComboBox1").value)
MessageBox.Show(e.Form.Controls("ComboBox2").value)
Dim g As New GroupTableBuilder("统计表5", DataTables("部门分解指标完成情况"), " 年度 = \'" & e.Form.Controls("ComboBox1").text & "\'And 月份 =" & e.Form.Controls("ComboBox2").text)
MessageBox.Show(e.Form.Controls("ComboBox2").value)
g.Groups.AddDef("年度")
g.Groups.AddDef("月份")
g.Groups.AddDef("分解后指标", "指标")
g.Groups.AddDef("单位")
g.Totals.AddDef("目标值")
g.Totals.AddDef("完成情况")
g.Build()
Dim t As Table = e.Form.Controls("Table1").Table
t.DataSource = g.BuildDataSource
\'\'\'\'\'
\'\'\' 
DataTables("数据报表_table1").DataCols.Add("进度", GetType(Double))
DataTables("数据报表_table1").DataCols.Add("序号", GetType(Integer))
Tables("数据报表_Table1").SetColVisibleWidth("序号|40|年度|60|月份|40|指标|200|单位|60|目标值|120|完成情况|120|进度|150")
For Each dr1 As DataRow In DataTables("指标排序").DataRows
    Dim dr2 As DataRow = DataTables("数据报表_Table1").Find("指标=\'" & dr1("指标") & "\'")
    If dr2 IsNot Nothing Then 
    dr2("序号") = dr1("序号")
End If
Next
\'‘填充排列序号

Tables ("数据报表_Table1").Sort = ("序号")\'排序
afterload代码?:
e.Form.Controls("ComboBox1").text = Date.Today.Year 
e.Form.Controls("ComboBox2").text = Date.Today.month -1

蓝总“:
还是不行,同样的错误。但是要把月份删掉,改成:Dim g As New GroupTableBuilder("统计表5", DataTables("部门分解指标完成情况"), " 年度 = " & e.Form.Controls("ComboBox1").text),没错,
而且,e.Form.Controls("ComboBox1").text 有数值,e.Form.Controls("ComboBox2").text 为空

--  作者:有点蓝
--  发布时间:2022/12/8 20:11:00
--  
请上传实例说明
--  作者:lisangyu
--  发布时间:2022/12/8 20:57:00
--  
将afterload:
e.Form.Controls("ComboBox1").text = Date.Today.Year
e.Form.Controls("ComboBox2").text = Date.Today.month -1
这样写,e.Form.Controls("ComboBox2").text 没有获取到值
但是上下调过来写,e.Form.Controls("ComboBox2").text又能获取到值,哈,不知道为什么,感觉有BUG
e.Form.Controls("ComboBox2").text = Date.Today.month -1
e.Form.Controls("ComboBox1").text = Date.Today.Year


--  作者:有点蓝
--  发布时间:2022/12/8 21:15:00
--  
7楼代码在那个控件的事件?