设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[与其它组件] 请问如何在VBA中判断某一字段值的数据类型?

[复制链接]
跳转到指定楼层
1#
发表于 2006-10-14 22:07:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问如何在VBA中判断某一字段值的数据类型?用什么函数?

多谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-10-14 22:21:00 | 只看该作者
都以is打头的,isdate isnumeric  isnull isempty....
3#
 楼主| 发表于 2006-10-14 22:42:00 | 只看该作者
isnumeric("32")

如果字段是文本属性,但值为32,结果也判断不对
4#
发表于 2006-10-14 23:55:00 | 只看该作者
Dim Rs As New ADODB.Recordset
Rs.Open "select * from 表1", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
For I = 0 To Rs.Fields.Count - 1
Debug.Print Rs.Fields(I).Name
Debug.Print Rs.Fields(I).Type
Next I
Set Rs = Nothing

代码202表示文本类型

5#
 楼主| 发表于 2006-10-16 01:09:00 | 只看该作者
[em17][em17][em17]

andymark,真是太感谢你了!
6#
 楼主| 发表于 2006-10-16 01:13:00 | 只看该作者
为解决我原来的问题,我设计了下面的函数,只能把数字和其它类型分开.

拿出来让大家看看:



'如果是数字类型,就返回true,字符及日期类型等返回false
Function myIsNum(str As Variant) As Boolean
Dim aa As Long
Dim bb As String

On Error GoTo 是字符
aa = str + 1
On Error GoTo 是数字
bb = str + "d"
GoTo 是字符
Exit Function


是字符:
myIsNum = False
Exit Function

是数字:
myIsNum = True

End Function
7#
发表于 2006-10-16 01:31:00 | 只看该作者
有现成的不用。

IsNumeric 函数

返回 Boolean 值,指出表达式的运算结果是否为数。

语法

IsNumeric(expression)




必要的 expression 参数是一个 Variant,包含数值表达式或字符串表达式。

说明

如果整个 expression 的运算结果为数字,则 IsNumeric 返回 True;否则返回 False

如果 expression 是日期表达式,则 IsNumeric 返回 False

IsNumeric 函数示例

本示例使用 IsNumeric 函数判断变量的值是否可为数值。
  1. Dim MyVar, MyCheck
    MyVar = "53"    '
复制代码
指定值。
  1. MyCheck = IsNumeric(MyVar)
复制代码
  
  1. '
复制代码
返回
  1. True
复制代码

  1. MyVar = "459.95"    '
复制代码
指定值。
  1. MyCheck = IsNumeric(MyVar)
复制代码
  
  1. '
复制代码
返回
  1. True
复制代码

  1. MyVar = "45 Help"    '
复制代码
指定值。
  1. MyCheck = IsNumeric(MyVar)
复制代码
  
  1. '
复制代码
返回
  1. False
复制代码





[此贴子已经被作者于2006-10-15 17:31:01编辑过]

8#
 楼主| 发表于 2006-10-20 07:47:00 | 只看该作者
以下是引用fan0217在2006-10-15 17:31:00的发言:


有现成的不用。

IsNumeric 函数

返回 Boolean 值,指出表达式的运算结果是否为数。

语法

IsNumeric(expression)




必要的 expression 参数是一个 Variant,包含数值表达式或字符串表达式。

说明

如果整个 expression 的运算结果为数字,则 IsNumeric 返回 True;否则返回 False

如果 expression 是日期表达式,则 IsNumeric 返回 False

IsNumeric 函数示例

本示例使用 IsNumeric 函数判断变量的值是否可为数值。
  1. Dim MyVar, MyCheck
    MyVar = "53"    '
复制代码
指定值。
  1. MyCheck = IsNumeric(MyVar)
复制代码
  
  1. '
复制代码
返回
  1. True
复制代码

  1. MyVar = "459.95"    '
复制代码
指定值。
  1. MyCheck = IsNumeric(MyVar)
复制代码
  
  1. '
复制代码
返回
  1. True
复制代码

  1. MyVar = "45 Help"    '
复制代码
指定值。
  1. MyCheck = IsNumeric(MyVar)
复制代码
  
  1. '
复制代码
返回
  1. False
复制代码

MyCheck = IsNumeric("35")  返回的是true,但我希望它是字符型,例如某字段是文本类型,但它的值可能是纯数字。


如果用IsNumeric,会判断该值为数字。但我希望它能判断出该值是文本。

我设计的函数:

myIsNum(32)返回true

myIsNum("32")返回false

但IsNumeric(32)和IsNumeric("32")返回的都是true














[此贴子已经被作者于2006-10-19 23:50:43编辑过]

9#
发表于 2006-10-20 10:15:00 | 只看该作者
Function myfun(fedie) As String
Dim typ As Integer
Set rst = CurrentDb.OpenRecordset("表1")
    typ = rst("ole").Type
        Select Case typ
    Case 8
        myfun = "日期型"
    Case 11
        myfun = "对象型"
    Case 10 To 12
        myfun = "文本型"
    Case Else
        myfun = "数字型"
    End Select
End Function



[此贴子已经被作者于2006-10-20 2:27:07编辑过]

10#
 楼主| 发表于 2006-10-21 04:26:00 | 只看该作者
以下是引用情比金坚在2006-10-20 2:15:00的发言:


Function myfun(fedie) As String
Dim typ As Integer
Set rst = CurrentDb.OpenRecordset("表1")
    typ = rst("ole").Type
        Select Case typ
    Case 8
        myfun = "日期型"
    Case 11
        myfun = "对象型"
    Case 10 To 12
        myfun = "文本型"
    Case Else
        myfun = "数字型"
    End Select
End Function



不错!谢谢!

把日期型及对象型也加进来,这样好象更全面了。

我主要是用于在动态查询中判断是否需要加引号或#等到符号,需要解决这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-1 19:48 , Processed in 0.110158 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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