Office中国论坛/Access中国论坛

标题: 如何才能做到取分号前面的和后面的值呢? [打印本页]

作者: yanwei82123300    时间: 2014-7-9 16:22
标题: 如何才能做到取分号前面的和后面的值呢?
请问各位老师我如何才能做到取分号前面的和后面的值呢?谢谢";"
字段:co_ln的值
WACO-140880;001
CO-141552;002

作者: tzh1600    时间: 2014-7-9 16:41
本帖最后由 tzh1600 于 2014-7-9 16:46 编辑

前:left(co_ln,Instr(1,co_ln,“;”)-1)

后:right(co_ln,len(co_ln)-Instr(1,co_ln,“;”))


InStr 函数可返回一个字符串在另一个字符串中首次出现的位置。
语法InStr([start,]string1,string2[,compare])
参数描述
start可选的。规定每次搜索的起始位置。默认是搜索起始位置是第一个字符。如果已规定 compare 参数,则必须有此参数。
string1必需的。需要被搜索的字符串。
string2必需的。需搜索的字符串。
compare必需的。规定要使用的字符串比较类型。默认是 0 。可采用下列值:
  • 0 = vbBinaryCompare - 执行二进制比较。
  • 1 = vbTextCompare - 执行文本比较。


作者: yanwei82123300    时间: 2014-7-9 20:48
谢谢帮助!
作者: wx0000888    时间: 2014-7-9 22:28
=split(co_ln,";")(1)
作者: yanwei82123300    时间: 2014-7-10 08:09
tzh1600 发表于 2014-7-9 16:41
前:left(co_ln,Instr(1,co_ln,“;”)-1)

后:right(co_ln,len(co_ln)-Instr(1,co_ln,“;”))

老师再问您一下如果值是这样的呢?
coln
WACO-140880;001;CI0002
CO-141552;002;CI0067
WACO-140880为订单号,001行号,CI0002客户代码,请问如何提取这三个数据,谢谢

作者: 盗梦    时间: 2014-7-10 09:32
用Split函数分组
作者: yanwei82123300    时间: 2014-7-10 12:18
盗梦 发表于 2014-7-10 09:32
用Split函数分组

盗梦老师我没用过,请您看看这个例子如何应用,谢谢
作者: 盗梦    时间: 2014-7-10 17:11
yanwei82123300 发表于 2014-7-10 12:18
盗梦老师我没用过,请您看看这个例子如何应用,谢谢

Split([co_ln],";")(0)  获取分号前面的值
Split([co_ln],";")(1)  获取分号后面的值

Split 函数 已第二个参数为标准,对第一个参数进行分组。相关的东西,你可以百度一下
作者: yanwei82123300    时间: 2014-7-11 07:22
zmt 发表于 2014-7-10 20:56
如WACO-140880为订单号,001行号,CI0002客户代码的长度固定,就好办理

老师:
coln
WACO-140880;001;CI0002
CO-141552;002;CI0067
WACO-140880为订单号,001行号,CI0002客户代码,
基本固定成这个格式
作者: yanwei82123300    时间: 2014-7-11 10:30
煮江老师做的自定义函数,用于提取;号数据,但是有错,请大家看看
public function GetArr(byval str as string)

      dim arr


arr=split(str,";")

GetArr=arr

end function


作者: cgsilicone    时间: 2014-7-11 10:44
不知道你最终如何使用,如果不是在查询中用,而是在窗体中用,提供一种思路,可以利用组合框控件,“;”越多,越简单。
作者: yanwei82123300    时间: 2014-7-11 11:29
我想用在查询中
作者: cgsilicone    时间: 2014-7-11 15:01
yanwei82123300 发表于 2014-7-11 11:29
我想用在查询中

煮江老师做的自定义函数没有问题,但查询中要这样用
public function GetArr(byval str as string,n as long)
      dim arr
      arr=split(str,";")
      GetArr=arr(n)
end function
作者: yanwei82123300    时间: 2014-7-11 15:06
cgsilicone 发表于 2014-7-11 15:01
煮江老师做的自定义函数没有问题,但查询中要这样用
public function GetArr(byval str as string,n as  ...

请问在查询做如何引用,谢谢
作者: cgsilicone    时间: 2014-7-11 15:13
select  GetArr(co_ln,0) as a0,GetArr(co_ln,1) as a0,GetArr(co_ln,2) as a2
from 表
作者: yanwei82123300    时间: 2014-7-11 15:23
谢谢楼上的各位老师了
分为:CO-XXXXXX
         WACO-XXXXXX
作者: yanwei82123300    时间: 2014-7-11 16:14
谢谢楼上的各位老师了
问题解决了!!谢谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3