Office中国论坛/Access中国论坛

标题: 如何在查询中将基础表中的人员名后缀去掉? [打印本页]

作者: szgyyqty999    时间: 2016-9-19 11:50
标题: 如何在查询中将基础表中的人员名后缀去掉?
本帖最后由 szgyyqty999 于 2016-9-19 12:04 编辑

如何在查询中将基础表中的人员名后缀去掉?比如人员名后的1、2、w、h等在查询中去除。

作者: Henry D. Sy    时间: 2016-9-19 20:21
首先应该放上你的示例,而不是图片或PDF文件
其次,要把问题说清楚,比如本问题后缀的规律没有完全说明白
暂且认为不是数字就是字母.

  1. Public Function GetName(myName As String)
  2.     Dim iCount As Integer
  3.     Dim j As Integer
  4.     Dim k As String
  5.     iCount = Len(myName)
  6.     For j = 1 To iCount
  7.         k = Asc(Mid(myName, j, 1))
  8.         If (k >= 48 And k <= 57) Or (k >= 65 And k <= 90) Or (k >= 97 And k <= 122) Then
  9.             GetName = Left(myName, j - 1)
  10.             Exit For
  11.         End If
  12.     Next
  13. End Function
复制代码
试试在查询中引用
GetName(人员)


作者: Henry D. Sy    时间: 2016-9-19 20:32
忘了汉字keycode常数是不是都少于0
可以换成
if k>0 then
-----------
----
end if
作者: ganlinlao    时间: 2016-9-19 21:54
本帖最后由 ganlinlao 于 2016-9-19 22:15 编辑

select iif(lenB[人员]<>len[人员],left([人员],lenB([人员])-len([人员])),[人员])
代码有误,不可用,sorry
作者: szgyyqty999    时间: 2016-9-21 13:36
先谢谢了,access的示例附件没法上传,我想达到的效果是,在查询里如何实现把access表里人员中的字母和数字(既有数字也有字母)去掉,我是新手,还停留在表、查询、窗体、和报表阶段,能说详细点吗?
作者: wzl8007    时间: 2016-9-22 10:42
更新查询中使用replace即可
作者: Henry D. Sy    时间: 2016-9-22 11:00
szgyyqty999 发表于 2016-9-21 13:36
先谢谢了,access的示例附件没法上传,我想达到的效果是,在查询里如何实现把access表里人员中的字母和数字 ...

1.新建模块
2.把二楼的代码复制到模块里保存
3.新建查询,
           SELECT 序号,GetName(人员) AS 姓名,领取材料 FROM 表名


作者: Henry D. Sy    时间: 2016-9-22 16:19
szgyyqty999 发表于 2016-9-21 13:36
先谢谢了,access的示例附件没法上传,我想达到的效果是,在查询里如何实现把access表里人员中的字母和数字 ...

附件用WinRAR打包就可以上传
作者: szgyyqty999    时间: 2016-9-23 14:02
函数未定义?我把附件传上来,帮我看看,谢谢!
作者: szgyyqty999    时间: 2016-9-23 14:08
Henry D. Sy 发表于 2016-9-22 16:19
附件用WinRAR打包就可以上传

已上传附件,谢谢指教,
作者: Henry D. Sy    时间: 2016-9-23 20:12
szgyyqty999 发表于 2016-9-23 14:08
已上传附件,谢谢指教,

模块名称不可以与函数名称一样!
[attach]59997[/attach]

作者: szgyyqty999    时间: 2016-9-24 12:35
谢谢!




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