Office中国论坛/Access中国论坛

标题: 相同数字如何检测 [打印本页]

作者: ycxchen    时间: 2008-10-6 07:55
标题: 相同数字如何检测
为便于管理,我在一些记录的手机号码字段用相同的数字作标记,例如,0000000000等。请问,如何用代码或函数检测手机号码里的11位数字都是相同的?
作者: Henry D. Sy    时间: 2008-10-6 10:02
不明白你在说什么
作者: ycxchen    时间: 2008-10-6 10:13
举个例子,有如下两条记录:
姓名            手机号码
小陈            13509980001
小王            00000000000
我想用代码或函数将手机号码里的11位数字都是相同数字的记录检测出来,即将小王的记录检测出来,如何办呢?
作者: Henry D. Sy    时间: 2008-10-6 11:18
try
定义一个数组来保存经过分割出来的11个数字,然后比较。
作者: ycxchen    时间: 2008-10-6 14:28
谢谢大家!4楼的办法较好,有例子吗?
对于5楼的,目的达到但不实际。因为,手机号码是00000000000的只是一个例子,我的目的是想手机号码是类似00000000000、11111111111等相同数字的如何检测。盼指教
作者: andymark    时间: 2008-10-6 14:50
select * from 表 where  mid(手机号码,1,5)=mid(手机号码,6,5) and  mid(手机号码,1,1)=mid(手机号码,2,1) and mid(手机号码,1,1)=mid(手机号码,3,1) and mid(手机号码,1,1)=mid(手机号码,4,1) and mid(手机号码,1,1)=mid(手机号码,5,1) and mid(手机号码,1,1)=mid(手机号码,11,1)
作者: Henry D. Sy    时间: 2008-10-6 23:55
Public Function CompareField(strField As String) As Boolean
    Dim str, strTemp As String
    Dim I As Integer
    str = Mid(strField, 1, 1)
    CompareField = True
    For I = 1 To Len(strField)
        strTemp = Mid(strField, I, 1)
        If strTemp <> str Then
            CompareField = False
            Exit Function
        End If
    Next
End Function

SELECT A.姓名, A.号码
FROM A
WHERE (((CompareField([号码]))=True));

[ 本帖最后由 dddddd 于 2008-10-7 00:00 编辑 ]
作者: ACMAIN_CHM    时间: 2008-10-7 00:03
很简单,直接除11111111111取模为0的就行了
=mod(a1,11111111111)=0

把为TRUE的筛选出来就行了。
作者: Henry D. Sy    时间: 2008-10-7 00:18
如果保证都是11位,则9楼的方法可行。
作者: ycxchen    时间: 2008-10-7 08:14
十分感谢各位的热心指教!真的很感谢大家!
作者: ycxchen    时间: 2008-10-7 08:26
我认为7、8楼的方法较好,9楼的方法对固定的11111111111号码才有用,不灵活。
作者: ycxchen    时间: 2008-10-7 19:51
7楼及8楼的办法我都应用了,但运行时RUNSQL操作需要参数,如何解决?盼指教.
[attach]32552[/attach]
作者: ycxchen    时间: 2008-10-7 19:53
不好意思,13楼所说的是指但运行时提示出错,说RUNSQL操作需要参数。如何解决?盼指教.
作者: Henry D. Sy    时间: 2008-10-7 20:09
RunSQL
只能是,操作查询,并不返回记录集。
作者: ycxchen    时间: 2008-10-7 20:16
dddddd大哥,我想打开查询查看检测结果,哪如何修改SQL语句呢?请指点。
作者: Henry D. Sy    时间: 2008-10-7 20:40
最简单的办法就是
作个查询(也就是上面我给你的查询),然后在按钮事件中打开他。
docmd.OpenQuery
作者: ycxchen    时间: 2008-10-7 22:59
十分感谢dddddd大哥!两个问题请教:
1、你说“的RunSQL操作查询不返回记录集”是什么意思?能举个例子说明一下吗?
2、对14楼的问题我真的弄不明,请你帮我在我的例子中修改一下吧,先感谢了!
作者: Henry D. Sy    时间: 2008-10-8 01:23
在 Visual Basic 中,RunSQL 方法执行 RunSQL 操作。

expression.RunSQL(SQLStatement, UseTransaction)

expression   必需。返回“Applies To”列表中的一个对象的表达式。

SQLStatement  必需 Variant 型。字符串表达式,表示操作查询或数据定义查询的有效 SQL 语句。它使用 INSERT INTO、DELETE、SELECT...INTO、UPDATE、CREATE TABLE、ALTER TABLE、DROP TABLE、CREATE INDEX 或 DROP INDEX 语句。如果要访问其他数据库,则应包含 IN 子句。

UseTransaction  可选 Variant 型。使用 True (-1) 可以在事务处理中包含该查询。如果不想使用事务处理,则应将该参数设为 False (0)。如果将该参数留空,则采用默认值 (True)。

[ 本帖最后由 dddddd 于 2008-10-8 01:24 编辑 ]
作者: Henry D. Sy    时间: 2008-10-8 01:40
1
将下面的查询保存为 A
SELECT 游客表.姓名, 游客表.地址, 游客表.手机, 游客表.固定电话
FROM 游客表
WHERE (((CompareField([手机]))=True));
2
然后,在输入下面的代码
Private Sub Command9_Click()
    DoCmd.OpenQuery "A"
End Sub
作者: ycxchen    时间: 2008-10-8 09:55
万分感谢dddddd,你真是大哥级的高手!
作者: ycxchen    时间: 2008-10-8 10:06
19楼的解释太抽象了,举个例子说明一下好吗?
作者: Henry D. Sy    时间: 2008-10-8 10:55
就是说
runsql方法只能是动作查询或数据定义查询,也就是以INSERT INTO、DELETE、SELECT...INTO、UPDATE、CREATE TABLE、ALTER TABLE、DROP TABLE、CREATE INDEX 或 DROP INDEX这些语法为语句的查询,而不能用一般的选择查询(select 。。。from 。。。。where。。。。。)
因为,runsql不会返回记录集,而选择查询需要返回记录集。
例子:
docmd.runsql "insert into ..........."
作者: ycxchen    时间: 2008-10-8 11:04
万分感谢dddddd大哥!你真是一位一级的好人加高手,向您学习!




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