Office中国论坛/Access中国论坛

标题: 一个关于截取的问题 [打印本页]

作者: 慎物勿语    时间: 2006-7-1 04:36
标题: 一个关于截取的问题
一个关于截取的问题:假如一张表中其中一个字段都是数字,我要这样截取:假如这个字段的第一个数字是1,那么就截取前7位数,假如这个字段的第一个数字是0,那么就截取前4个数字。请教高手了。例子:[attach]18819[/attach]

作者: andymark    时间: 2006-7-1 04:47
Dim Rsc As New ADODB.Recordset
Rsc.Open "select * from 表1", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
Do While Not Rsc.EOF
   If Left(Rsc.Fields("字段1"), 1) = 1 Then
      MsgBox Left(Rsc.Fields("字段1"), 7)
    End If
   If Left(Rsc.Fields("字段1"), 1) = 0 Then
      MsgBox Left(Rsc.Fields("字段1"), 4)
    End If
    Rsc.MoveNext
   
    Loop

Set Rsc = Nothing
作者: 一点通    时间: 2006-7-1 04:56
用查询的方法可轻易获得

SELECT IIf(Left([字段1],1)=0,Left([字段1],4),Left([字段1],7)) AS 提取字符
FROM 表1;



作者: 慎物勿语    时间: 2006-7-1 05:20
“一点通”的方法我已经看懂了,同样的道理如果用在excel 里,那个“IIF”是不是就是相当于“if”?
作者: 慎物勿语    时间: 2006-7-1 05:36
假如我要这样截取:如果第一个数字是1,那么就截取前2位,如果第一个数字是2那么就截取前3位,如果第一个数字是3,那么就截取前4位。请再指教。谢谢。

我刚才这样写了一句,但是不对,请帮我看看。nm是字段名

iif(left([nm],1)=1,left([nm],2),left([nm],1)=2,left([nm],3),left([nm],1)=3,left([nm],4),left([nm],1)=4,left([nm],5))

[此贴子已经被作者于2006-6-30 21:37:15编辑过]


作者: lanchong    时间: 2006-7-1 05:54
以下是引用慎物勿语在2006-6-30 21:36:00的发言:


假如我要这样截取:如果第一个数字是1,那么就截取前2位,如果第一个数字是2那么就截取前3位,如果第一个数字是3,那么就截取前4位。请再指教。谢谢。

我刚才这样写了一句,但是不对,请帮我看看。nm是字段名

iif(left([nm],1)=1,left([nm],2),left([nm],1)=2,left([nm],3),left([nm],1)=3,left([nm],4),left([nm],1)=4,left([nm],5))

IIf(Left([nm],1)>0 And Left([nm],1)<5,Left([nm],Left([nm],1)+1))
作者: 慎物勿语    时间: 2006-7-1 06:06
楼上的用了+1,如果,我要的查询没有这样的规律,比如,第一个数字是1,就截取前7位,假如第一个数字是0,就截取4位,假如第一个数字是5就截取前3位。呵呵,麻烦了。
作者: lanchong    时间: 2006-7-1 06:40
Left([nm],IIf(Left([nm],1)=1,7,0)+IIf(Left([nm],1)=0,4,0)+IIf(Left([nm],1)=4,5,0))
作者: 慎物勿语    时间: 2006-7-1 06:55
呵呵,谢谢了。这种公式,你们都是怎么记住的?
作者: lanchong    时间: 2006-7-1 07:04
查help

关键是思路要灵活,比如

Left([nm],-7*(Left([nm],1)=1)-4*(Left([nm],1)=0)-3*(Left([nm],1)=5))也可以

[此贴子已经被作者于2006-6-30 23:11:53编辑过]


作者: 慎物勿语    时间: 2006-7-3 05:07
谢谢了,可惜我平时只在设计视图中作一些简单的查询,还说不上灵活。
作者: brad2005    时间: 2006-7-5 07:29
原来你也在研究这个问题,呵呵.




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