以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]datatables  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175844)

--  作者:crazyfengyu
--  发布时间:2022/3/21 17:44:00
--  [求助]datatables
请问使用 datatables().select 每次选择数据,数据是每次都在后台获取的,还是只是本地数据,没有同步后台其他人修改?
--  作者:有点蓝
--  发布时间:2022/3/21 20:06:00
--  
select的只是本地数据,sqlselect 才是在后台获取的:http://www.foxtable.com/webhelp/topics/2900.htm
--  作者:crazyfengyu
--  发布时间:2022/3/22 8:37:00
--  
使用sqlSelect获取到的数据取表达式列的值会报错
--  作者:有点蓝
--  发布时间:2022/3/22 8:45:00
--  
信息太少无法判断问题:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626
--  作者:crazyfengyu
--  发布时间:2022/3/22 8:54:00
--  
dim ls as (of datarow) = datatables("订单").sqlSelect("id=\'12\'")

for each a as datarow in ls
Message.show(a("总数量"))   
next


上面取总数量的值就会报错,提示 “列‘总数量’不属于表”,实际上总数量是表达式列,用select查询到的可以正常取到,用sqlSelect可能是通过后台查询所以没有取到,请问有什么办法解决?


--  作者:有点蓝
--  发布时间:2022/3/22 9:17:00
--  
sqlselect是直接取数据库的,而数据库是不存在表达式列的。
应该这样用

假设"总数量"表达式为:第一列 + 第二列,那么代码改为:
for each a as datarow in ls
Message.show(a("第一列") + a("第二列"))   
next

--  作者:crazyfengyu
--  发布时间:2022/3/22 9:25:00
--  
还有其他的解决而办法吗?我的这个 总数量列 是根据子表计算的。子表自己又根据另一个父表的列进行计算,嵌套太深了。
--  作者:有点蓝
--  发布时间:2022/3/22 9:32:00
--  
加载数据,然后使用select

datatables("订单").removefor("id=\'12\'")
datatables("订单").appendload("id=\'12\'")

dim ls as (of datarow) = datatables("订单").Select("id=\'12\'")

for each a as datarow in ls
Message.show(a("总数量"))   
next

--  作者:crazyfengyu
--  发布时间:2022/3/22 10:02:00
--  
多个子表数据重新加载操作起来还是有点复杂,请问如果在计划管理里面设置一段时间进行数据表(4-5个)重新加载,会不会造成系统卡死?
--  作者:有点蓝
--  发布时间:2022/3/22 10:18:00
--  
会,也不建议这样做。

或者不要使用表达式列,改为使用数据列,使用代码计算