妙用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交流群 (群号:483923997) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access小作品】简单的待...(04.30)
- 【Access窗体导出PDF】...(04.08)
- 【Access窗体导出PDF】...(04.07)
- Access两种方式实现即时更...(03.01)
- Access隐藏与显示lacc...(01.12)
- 【Access高效办公】将每个...(12.23)
- Access21点游戏源代码(12.13)
- 【Access窗体导出Exce...(11.15)
- 【Access开发】Acces...(11.14)
学习心得
最新文章
- 【Access小作品】简单的待办任...(04.30)
- 从另一个ACCESS数据库批量导入...(04.29)
- Access日期格式的数据导出Ex...(04.28)
- ACCESS精华集锦资料.CHM(04.25)
- Access VBA语句If Me...(04.24)
- 【Access修改记录示例】编辑选...(04.22)
- 【Access表名称命名建议】将A...(04.20)
- Access学习笔记--用Acce...(04.19)
- 【Access重复项查询示例】将A...(04.17)
- Access快速开发平台企业版--...(04.16)