Office中国论坛/Access中国论坛

标题: 如何进行字段分割?求助高手。 [打印本页]

作者: szhgwec    时间: 2009-2-11 11:38
标题: 如何进行字段分割?求助高手。
工作单位公司部(处、分公司)组(科)
沙头角公司.销售一组沙头角公司 销售一组
深圳湾公司.销售五组深圳湾公司 销售五组
文锦渡公司.财务组   
蛇口公司.采购部.采购一组蛇口公司采购部采购一组
文锦渡公司.销售二组文锦渡公司 销售二组
盐田公司.财务组盐田公司 财务组
罗湖公司.监督组罗湖公司 监督组
机场公司.快件组机场公司 快件组
文锦渡公司.技术组文锦渡公司 技术组
皇岗公司.销售部.销售三组皇岗公司销售部销售三组
蛇口公司.广告部.三组蛇口公司广告部三组
皇岗公司.规划部.设计科皇岗公司规划部设计科
深圳湾公司.接待科深圳湾公司 接待科
蛇口公司.赤湾分公司.综合组蛇口公司赤湾分公司综合组
即:把左表的一个字段,分割成右表的3个字段。
说明:左表的3级单位之间是用一个点来分隔的,有的有二级单位(部),
    有的没有二级单位,直接就是三级单位(组、科)。
作者: koutx    时间: 2009-2-11 11:58
当工作单位只有两个点时,根据什么判断第二个是二级部还是三级科组?
作者: tz-chf    时间: 2009-2-11 12:26
当工作单位只有两个点时,根据什么判断第二个是二级部还是三级科组?
koutx 发表于 2009-2-11 11:58


问题很清楚。你没看清题意
作者: Trynew    时间: 2009-2-11 13:47
[attach]34998[/attach]
Public Function GetDep(strIn As String, i As Integer) As Variant
Select Case i
Case 1
    GetDep = Split(strIn, ".")(0)
Case 2
    GetDep = IIf(UBound(Split(strIn, ".")) = 1, Null, Split(strIn, ".")(1))
Case 3
    GetDep = Split(strIn, ".")(UBound(Split(strIn, ".")))
End Select
End Function
建一个自定义函数就行了
作者: koutx    时间: 2009-2-11 13:56
SELECT 表5.工作单位, Left([工作单位],InStr([工作单位],".")-1) AS 公司, IIf(InStr(Right([工作单位],Len([工作单位])-InStr([工作单位],".")),".")>0,Left(Right([工作单位],Len([工作单位])-InStr([工作单位],".")),InStr(Right([工作单位],Len([工作单位])-InStr([工作单位],".")),".")-1),Right([工作单位],Len([工作单位])-InStr([工作单位],"."))) AS 部处, IIf(InStr(Right([工作单位],Len([工作单位])-InStr([工作单位],".")),".")>0,Right(Right([工作单位],Len([工作单位])-InStr([工作单位],".")),Len(Right([工作单位],Len([工作单位])-InStr([工作单位],".")))-InStr(Right([工作单位],Len([工作单位])-InStr([工作单位],".")),"."))) AS 组科
FROM 表5;
作者: koutx    时间: 2009-2-11 14:25
4# Trynew
又学了一招,但是否还有点美中不足如下图:假若工作单位是“一公司.三部”则二级单位就到了三级单位去了。有请4楼续示。谢了
[attach]34999[/attach]
作者: ly    时间: 2009-2-11 18:59
4# Trynew  
又学了一招,但是否还有点美中不足如下图:假若工作单位是“一公司.三部”则二级单位就到了三级单位去了。有请4楼续示。谢了
34999
koutx 发表于 2009-2-11 14:25


我的建议,不足之处请笑纳:
窃以为,使用数据库应精于设计规划,而非用程序代码来解决。若我设计此表,就以“。”来区分三级单位,如一级单位。二级单位。三级单位表示,若某级单位没有就空着。如‘一级单位。。三级单位’,表示没有二级单位,或‘一级单位。二级单位。’表示没有三级单位,但是“。”不能少。这样直接可用函数取值。
作者: chaojianan    时间: 2009-2-11 21:04
虽然不会,但赞同7楼,数据库设计时,精力应在规划上。
最初的表没有搞好,用代码解救,一个字[累]
作者: koutx    时间: 2009-2-11 21:05
本帖最后由 koutx 于 2009-2-11 21:09 编辑

7# ly
赞成,建议楼主可将一个.replace成。。
作者: 蓝天8390    时间: 2009-2-11 21:46
象我附件中这种结构该怎样分割呢,请赐教.
作者: todaynew    时间: 2009-2-12 17:53
本帖最后由 todaynew 于 2009-2-12 17:56 编辑
象我附件中这种结构该怎样分割呢,请赐教.
蓝天8390 发表于 2009-2-11 21:46


SELECT 表1.编号, 表1.工作单位, IIf(Mid([工作单位],1,InStr(1,[工作单位],"镇"))="",Mid([工作单位],1,InStr(1,[工作单位],"乡")),Mid([工作单位],1,InStr(1,[工作单位],"镇"))) AS 乡镇, IIf(Mid([工作单位],1,InStr(1,[工作单位],"镇"))="",Mid([工作单位],InStr(1,[工作单位],"乡")+1,InStr(1,[工作单位],"村")),Mid([工作单位],InStr(1,[工作单位],"镇")+1,InStr(1,[工作单位],"村"))) AS 村
FROM 表1;

[attach]35017[/attach]
作者: Henry D. Sy    时间: 2009-2-13 08:14
10# 蓝天8390
你想如何分割
作者: Henry D. Sy    时间: 2009-2-13 08:15
4# Trynew  
又学了一招,但是否还有点美中不足如下图:假若工作单位是“一公司.三部”则二级单位就到了三级单位去了。有请4楼续示。谢了
34999
koutx 发表于 2009-2-11 14:25

4楼的不是解决了吗
作者: 蓝天8390    时间: 2009-2-13 14:36
谢谢诸位指教!
作者: Benjamin_luk    时间: 2009-2-13 16:21
直接放到EXCEL里, 用工具上面的分列,按“.”分列,快多了。
处理好后,再导回ACCESS里




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