设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2449|回复: 11
打印 上一主题 下一主题

[其它] 一个关于截取的问题

[复制链接]
跳转到指定楼层
1#
发表于 2006-7-1 04:36:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个关于截取的问题:假如一张表中其中一个字段都是数字,我要这样截取:假如这个字段的第一个数字是1,那么就截取前7位数,假如这个字段的第一个数字是0,那么就截取前4个数字。请教高手了。例子:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-7-1 04:47:00 | 只看该作者
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
3#
发表于 2006-7-1 04:56:00 | 只看该作者
用查询的方法可轻易获得

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


4#
 楼主| 发表于 2006-7-1 05:20:00 | 只看该作者
“一点通”的方法我已经看懂了,同样的道理如果用在excel 里,那个“IIF”是不是就是相当于“if”?
5#
 楼主| 发表于 2006-7-1 05: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))

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

6#
发表于 2006-7-1 05:54:00 | 只看该作者
以下是引用慎物勿语在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))
7#
 楼主| 发表于 2006-7-1 06:06:00 | 只看该作者
楼上的用了+1,如果,我要的查询没有这样的规律,比如,第一个数字是1,就截取前7位,假如第一个数字是0,就截取4位,假如第一个数字是5就截取前3位。呵呵,麻烦了。
8#
发表于 2006-7-1 06:40:00 | 只看该作者
Left([nm],IIf(Left([nm],1)=1,7,0)+IIf(Left([nm],1)=0,4,0)+IIf(Left([nm],1)=4,5,0))
9#
 楼主| 发表于 2006-7-1 06:55:00 | 只看该作者
呵呵,谢谢了。这种公式,你们都是怎么记住的?
10#
发表于 2006-7-1 07:04:00 | 只看该作者
查help

关键是思路要灵活,比如

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

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-26 03:26 , Processed in 0.092260 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表