以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 动态加载数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114241)

--  作者:kinglw110
--  发布时间:2018/2/1 13:54:00
--  [求助] 动态加载数据
ComboBox 中输入了4个列表项目:  “显示全部”,“2016” “2017”  “2018”  想通过切除列表的不同年份来加载产品信息的数据内容
TextChanged 事件中写代码

Dim cz As WinForm.ComboBox = e.sender
Dim nr As String =cz.text
If nr <>"显示全部" Then
    DataTables("产品信息").LoadFilter = "年 =\'" & nr & "\' "
    DataTables("产品信息").Load
End If

提示错误信息
错误所在事件:加载[产品信息]失败!
详细错误信息:
至少一个参数没有被指定值。
不知道哪里错了,
图片附件上传了3个,一个都无法显示 

--  作者:kinglw110
--  发布时间:2018/2/1 14:01:00
--  
好像动态加载设定,其它的关联表无法正常显示了, 如果关联表很多如何操作,(帮助文件中只举例了单个关联表),还是以后表间不适合采用关联操作
--  作者:有点甜
--  发布时间:2018/2/1 14:17:00
--  

列名写错了吧?你表格由【年】列吗?是表达式列吗?

 

Dim cz As WinForm.ComboBox = e.sender
Dim nr As String =cz.text
If nr > "" andalso nr <>"显示全部" Then
    Dim d As Date = new Date(nr, 1, 1)
    DataTables("产品信息").LoadFilter = "日期 >= #" & d & "# and 日期 < #" & d.addyears(1) & "#"
    DataTables("产品信息").Load
else
    DataTables("产品信息").LoadFilter = ""
    DataTables("产品信息").Load
End If

--  作者:kinglw110
--  发布时间:2018/2/1 14:35:00
--  
是的,这个年是由编号的前4位生成的
--  作者:kinglw110
--  发布时间:2018/2/1 15:06:00
--  
由于动态加载还不太熟悉,还是采用筛选功能,在筛选中如何使用 这个呢,我的列名没有 日期 列    如何才能实现呢   动态表达列就不能作为筛选内容
[此贴子已经被作者于2018/2/1 15:07:16编辑过]

--  作者:有点甜
--  发布时间:2018/2/1 15:13:00
--  
Dim cz As WinForm.ComboBox = e.sender
Dim nr As String =cz.text
If nr > "" andalso nr <>"显示全部" Then
    DataTables("产品信息").LoadFilter = "mid(某列,1,4) = \'" & nr & "\'" \'如果是sqlserver,就mid改成substring函数
    DataTables("产品信息").Load
else
    DataTables("产品信息").LoadFilter = ""
    DataTables("产品信息").Load
End If

--  作者:kinglw110
--  发布时间:2018/2/1 15:26:00
--  
Dim cz As WinForm.ComboBox = e.sender
Dim nr As String =cz.text
If nr > "" AndAlso nr <>"显示全部" Then
Dim Page As WinForm.TopicPage
Page = Forms("左侧导航栏").Controls("TopicBar1").Pages("组长")
For Each nm As String In DataTables("基本设定").GetValues("名称","类别=\'模具负责人\' and 显隐=false and mid([产品编号],1,4) = \'" & nr & "\'")
    Dim link As WinForm.TopicLink = Page.Links.Add(nm,nm)
    Dim cnt As Integer = DataTables("产品信息").Compute("count([_Identify])","模具负责人= \'" & nm & "\'")
    \'通过主健来统计数量
    link.text=link.text & "    " & "(" & cnt & ")" & "付"
Next
end if 

提示未定义MID 函数是什么情况
使用的是内部表
[此贴子已经被作者于2018/2/1 15:27:24编辑过]

--  作者:有点甜
--  发布时间:2018/2/1 15:36:00
--  
For Each nm As String In DataTables("基本设定").GetValues("名称","类别=\'模具负责人\' and 显隐=false and substring([产品编号],1,4) = \'" & nr & "\'")
--  作者:kinglw110
--  发布时间:2018/2/2 15:25:00
--  
代码已经调整并优化,可以正常使用了,想再请教下,我想提取编号的前4号数  作为combobox  的下拉列表内容  这个如何写  还有如何把日期列的(2017-10-10)提取年份作为年的combobox 下拉列表内容  及提取月份作为月的combobox 下拉列表内容
--  作者:有点甜
--  发布时间:2018/2/2 15:52:00
--  

可以用 SQLGetComboListString 函数,比如

 

http://www.foxtable.com/webhelp/scr/2910.htm

 

SQLGetComboListString("substring([产品编号],1,4)")

 

SQLGetComboListString("year(日期)")

SQLGetComboListString("month(日期)")