找回密码
 立即注册

QQ登录

只需一步,快速开始

小土 悬赏达人认证

初级会员

12

主题

233

帖子

433

积分

初级会员

积分
433

悬赏达人

小土 悬赏达人认证
初级会员   /  发表于:2021-12-1 15:25  /   查看:3881  /  回复:12
1金币
众所周知, 表格的查询条件策略,类似如下:
字段  等于(或者其他条件)  单元格;

此时如果单元格为空时,默认查询所有数据。
------------------------------------------------------------------------
但是 odata公式并不是如此,其查询条件,类似如下

字段 等于(或者其他条件) 单元格 , 然后生成odata公式

此时如果单元格为空时,则查询不到任何数据。
------------------------------------------------------------------------
现在我可以通过加,if/ifisblank等语句,将 表格查询策略 变和 odata公式查询 类似。

目的/需求:
现在想找办法,使ODATA公式查询策略变得类似于 表格查询的策略。
-------------------------------------------------------------------------
具体实现场景:
外部视图,拉入活字格,根据页面查询条件(9个文本框), 查询 数值,之后用=sum(odata())求和,
9个查询条件可填可不填。
-------------------------------------------------------------------------
目前尝试: 尝试修改ODATA中,IFISBLANK()部分,没改成功。
用SQL语句倒是挺简单的,只是有点  杀鸡焉用宰牛刀  的感觉。暂不考虑吧。
请求大佬们 想想办法. ‘
-------------------------------------------------------------------------
odata公式如下,demo已传
=ODATA("表1/$count?$filter=ID gt "&IF(ISBLANK(I2),"null",I2))



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

大佬,突然想到我们可以直接用这个odata鸭~ 既然用null是查不出来数据,那我们把null改成0不就行了~

12 个回复

倒序浏览
最佳答案
最佳答案
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-12-1 15:26:00
来自 4#
大佬,突然想到我们可以直接用这个odata鸭~
  1. =ODATA("表1/$count?$filter=ID gt "&IF(ISBLANK(I2),0,I2))
复制代码

既然用null是查不出来数据,那我们把null改成0不就行了~
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-12-1 17:39:57
2#
大佬,先用isblank判断是否为空,然后再执行不同的odata可以吗?
  1. =IF(ISBLANK(I2),ODATA("表1/$count?$filter=ID gt 0"),ODATA("表1/$count?$filter=ID gt "&IF(ISBLANK(I2),"null",I2)))
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
小土悬赏达人认证
初级会员   /  发表于:2021-12-1 17:53:26
3#
这个方案,我想过,可以实现,但是可行性不是很高,一共有9个文本框需要判断,组合下来一共有512种情况。
回复 使用道具 举报
小土悬赏达人认证
初级会员   /  发表于:2021-12-1 18:17:04
5#
这个我倒是没试过。这样可以查到吗?字符串包含也可以吗?
回复 使用道具 举报
小土悬赏达人认证
初级会员   /  发表于:2021-12-1 18:17:34
6#
现在不在公司,没有工具尝试。
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-12-1 18:54:13
7#
小土 发表于 2021-12-1 18:17
这个我倒是没试过。这样可以查到吗?字符串包含也可以吗?

得具体看下逻辑  ,大概是这个思路~
回复 使用道具 举报
小土悬赏达人认证
初级会员   /  发表于:2021-12-2 08:40:45
8#
本帖最后由 小土 于 2021-12-2 08:41 编辑

显然不行,我先把  数值字段 类型改成文本,
=ODATA("表1/$count?$filter=contains(数值,"&IF(ISBLANK(I2),0,"'"&I2&"'")&")")
尝试包含关系,但是并不能行,ifisblank()中间为空时的  ,值不管填 0,填""都是不行
恕在下见识短浅

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-12-2 15:07:14
9#
包含肯定不是直接换成0鸭。大佬,你要不按照实际场景做个demo,我看能不能针对具体场景想想办法。不要问一句说一句鸭。不然大家怎么帮你分析呢~
回复 使用道具 举报
小土悬赏达人认证
初级会员   /  发表于:2021-12-2 15:17:10
10#
本帖最后由 小土 于 2021-12-2 15:19 编辑

demo就是这个demo啊,具体场景?
我根据查询条件,查询表格,对其中某列进行汇总(因为是表格是动态加载,用sum()不行)
所以专用odata 根据条件进行求和。转化成解决方法,就是
就是ODATA公式的查询条件在文本框,如果文本框有值就查该条件,没有就忽略条件。我很想吐槽 你把demo里面的等于 换成 包含 再探索就这么困难吗- -,
难道就因为我没用公司的金牌会员号吗
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部