妙用split将字段分成多列案例
时 间:2019-08-30 15:34:59
作 者:yihui ID:45044 城市:上海
摘 要:用自定义函数将单字段分成多字段
正 文:
刚在群里看一个网友案例,要将一个多文本的字段分解成多个字段,效果如下:
他使用的方式是 用right left mid 来取文本,生成字段:
Select tbl钣金发货单.ID, tbl钣金发货单.录入日期, tbl钣金发货单.条码, left(条码,Instr(2,[条码],"/")-1) AS 下单日期, MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1) AS 客户编号, MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,instr(2,MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,50),"/")-1) AS 主订单编号, MID(条码,len(left(条码,Instr(2,[条码],"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,instr(2,MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,50),"/")-1))+4,Instr(2,MID(条码,len(left(条码,Instr(2,[条码],"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,instr(2,MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,50),"/")-1))+4,50),"/")-1) AS 副订单编号, mid(条码,len(left(条码,Instr(2,[条码],"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,instr(2,MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,50),"/")-1))+len(MID(条码,len(left(条码,Instr(2,[条码],"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,instr(2,MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,50),"/")-1))+4,Instr(2,MID(条码,len(left(条码,Instr(2,[条码],"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,instr(2,MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+Len(MID(条码,Len(left(条码,Instr(2,[条码],"/")-1))+2,Instr(2,MID(条码,Instr(2,[条码],"/")+1,50),"/")-1))+3,50),"/")-1))+4,50),"/")-1))+5,50) AS 金额 FROM tbl钣金发货单;
看起来是不是很吓人? 密密麻麻的。 其实如果学会用自定义函数,可以很简单的生成。
上面这种是很规范用/连成的字符,在vba里 用split很容易就可 以分成数组。
所以 我的方式是1先生成自定义函数,2前端直接调用
先在vbe插入一个模块,生成自定义函数 cut
Function cut(x, y) cut = Split(x, "/")(y - 1) '-1原因是数字是以0开始编号的 End Function然后在查询中,直接使用cut(字段,序列)取对应序列。
最终代码为:
Select 测试.条码, CDate(cut([条码],1)) AS 客户日期, cut([条码],2) AS 客户编号, cut([条码],3) AS 主订单编号, cut([条码],4) AS 副订单编号, cut([条码],5) AS 金额 FROM 测试;下
附件下载:
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access制作的RGB转CM...(09.22)
- Access制作的RGB调色板...(09.15)
- Access制作的快速车牌输入...(09.13)
- 【Access高效办公】统计当...(06.30)
- 【Access高效办公】用复选...(06.24)
- 根据变化的日期来自动编号的示例...(06.20)
- 【Access高效办公】按日期...(06.12)
- 合并列数据到一个文本框的示例;...(05.06)
- 通过命令按钮让Access列表...(04.24)

学习心得
最新文章
- Access快速开发平台--多行文...(09.28)
- 关于从Excel导入长文本数据到A...(09.24)
- Access制作的RGB转CMYK...(09.22)
- 关于重装系统后Access开发的软...(09.17)
- Access制作的RGB调色板示例(09.15)
- Access制作的快速车牌输入改进...(09.13)
- Access颜色编号管理数据库--...(09.10)
- 分享一个Access报表最后一页始...(09.03)
- 64位操作系统引用DAO出现加载D...(08.26)
- Access设置试用期截止日期默认...(08.15)