Foxtable(狐表)用户栏目专家坐堂 → 加载条件处理


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

主题:加载条件处理

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


加好友 发短信
等级:小狐 帖子:311 积分:2294 威望:0 精华:0 注册:2023/1/11 7:15:00
加载条件处理  发帖心情 Post By:2024/11/3 9:17:00 [只看该作者]

我有一个问题,想请给与帮助,谢谢!

图片点击可在新窗口打开查看
该窗口中,左侧为加载树定义的客户列表, 中间上方为客户订单,下方则为订单明细, 根据需要定义中间 PN的下拉列表:
enter 事件:
e.Sender.ComboList = "(All)|" & DataTables("INI_MasterSales").sqlGetComboListString("PartNumber", "ISOLine In (S elect ISOLine From {CustomerPO})","PartNumber")

运行后发现中间的客户订单虽然加载树仅显示需要的订单行, 但PN的下拉列表实际却显示了隐藏的所有订单的PartNumber, 而我实际只想用 被显示出来的订单行对应的零件号.
我用datatables("CustomerPO").LoadFilter = ""  ; datatables("CustomerPO").Load 验证了确实被隐藏了, 而不是仅加载了加载树点击的客户名称


我将语句改为下面的方式进行:
Dim SOs As String = DataTables("CustomerPO").GetComboListString("ISOLine")
If SOs > "" Then
    SOs = "('" & SOs & "')"
End If
MessageBox.Show(SOs)
e.Sender.ComboList = "(All)|" & DataTables("INI_MasterSales").sqlGetComboListString("PartNumber", "ISOLine In " & SOs , "PartNumber") 
运行能正常, 但在点击PN 下拉列表后却很慢
所以想了解一下如何处理, 谢谢!
[此贴子已经被作者于2024/11/3 9:29:37编辑过]

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


加好友 发短信
等级:小狐 帖子:311 积分:2294 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2024/11/3 9:29:00 [只看该作者]

这个是运行结果
图片点击可在新窗口打开查看此主题相关图片如下:question12.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111389 积分:567009 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/3 19:28:00 [只看该作者]

enter 事件:
Dim f as string = "ISOLine In (Select ISOLine From {CustomerPO} 【0】)"
if DataTables("CustomerPO").LoadFilter > "" then
f = f.replace("【0】"," where " & DataTables("CustomerPO").LoadFilter)
else
f = f.replace("【0】","")
end if
e.Sender.ComboList = "(All)|" & DataTables("INI_MasterSales").sqlGetComboListString("PartNumber",f ,"PartNumber")

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


加好友 发短信
等级:小狐 帖子:311 积分:2294 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2024/11/30 8:24:00 [只看该作者]

虽然我动手晚了些,但在老师的帮助下完美解决,谢谢

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


加好友 发短信
等级:小狐 帖子:311 积分:2294 威望:0 精华:0 注册:2023/1/11 7:15:00
  发帖心情 Post By:2024/11/30 9:51:00 [只看该作者]

老师, 我尝试将该条件置于 查询筛选 中结果发现就是无法完成

Dim f As String = DataTables("CustomerPO").LoadFilter
FL = "ISOLine in (se Lect ISOLine from {CustomerPO} where " & f & ")"
DataTables("INI_MasterSales").LoadFilter = FL
DataTables("INI_MasterSales").Load

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2024.11.1.1
错误所在事件:
详细错误信息:
Syntax error: Missing operand after 'ISOLine' operator.

但如果我将其在命令窗口中运行就正常

先是直接按您提供的方式采用 replace 的, 但发现不正常,就改成了这个, 还是有异常, 排查了2个小时了, 实在没有办法了, 请再帮我看一下, 谢谢!


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111389 积分:567009 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/30 10:03:00 [只看该作者]

学会调试

Dim f As String = DataTables("CustomerPO").LoadFilter
msgbox(f)
FL = "ISOLine in (seLect ISOLine from {CustomerPO} where " & f & ")"
msgbox(FL)

 回到顶部