注册 登录
编程论坛 VFP论坛

set filter to 命令复杂筛选条件如何设置

wabc327 发布于 2021-05-27 17:40, 1665 次点击
表中有一个字段,数据是年月,该字段是历史已形成的数据,不是很规范,包括的数据有2002-2003(解释:2002年至2003年),2002.1-3.5.6.8-10.12(解释:2002年1月至3月.5月.6月.8月至10月.12月),2002.5-2003.9(解释:2002年5月至2003年9月),2002.8(解释:2002年8月),2002.5-12(解释:2002年5月至12月),2001.11-2002.10(解释:2001年11月至2002年10月)。。。。请问各位高手大哥,假如我用set filter to 想筛选包含2002.8(解释:2002年8月)这个时间的所有数据(也就是把上面包含这个年月的所有记录都筛选出来),如何设置这个筛选条件呢,程序代码如何实现呢???
7 回复
#2
吹水佬2021-05-28 08:32
数据格式转换的问题
先确定一个标准可靠的格式
#3
wabc3272021-05-28 09:11
回复 2楼 吹水佬
格式已形成 几十万条数据 无法转换啊
#4
sdta2021-05-28 09:24
如吹版所说,转换年月字段的格式
a = "2002.1"
? STRTRAN(a, ".", IIF(LEN(a) = 6, "0", ""))
#5
sdta2021-05-28 09:31
以下是引用wabc327在2021-5-27 17:40:25的发言:

表中有一个字段,数据是年月,该字段是历史已形成的数据,不是很规范,包括的数据有2002-2003(解释:2002年至2003年),2002.1-3.5.6.8-10.12(解释:2002年1月至3月.5月.6月.8月至10月.12月),2002.5-2003.9(解释:2002年5月至2003年9月),2002.8(解释:2002年8月),2002.5-12(解释:2002年5月至12月),2001.11-2002.10(解释:2001年11月至2002年10月)。。。。请问各位高手大哥,假如我用set filter to 想筛选包含2002.8(解释:2002年8月)这个时间的所有数据(也就是把上面包含这个年月的所有记录都筛选出来),如何设置这个筛选条件呢,程序代码如何实现呢???



标准化 年月 字段数据后
设置条件的表达式
ALLTRIM(年月) == "200208"
#6
sdta2021-05-28 09:34
2002.1-3.5.6.8-10.12
设置条件表达式

BETWEEN(ALLTRIM(年月), "200201", "200203") OR BETWEEN(ALLTRIM(年月), "200205", "200206") OR BETWEEN(ALLTRIM(年月), "200208", "200210") OR ALLTRIM(年月) == "200212"

其它设置方法类推
#7
sdta2021-05-28 09:38
2001.11-2002.10
BETWEEN(ALLTRIM(年月), "200111", "200210")
#8
厨师王德榜2021-05-28 10:56
可以在表中新增一个日期型列,把历史形成的日期转换为标准格式,这样只需一次转换,以后设置筛选时,以新列来筛选就不必纠结怎么设置筛选语句了.
1