访问VBA - 如何将记录集中的值从文本转换为数字?

时间:2013-09-25 14:29:45

标签: vba ms-access access-vba

所以我在Access中有以下代码:

Dim db As DAO.Database
Dim qdEPH As DAO.QueryDef    
Dim rsEPH As DAO.Recordset  

Set qdEPH = DBEngine(0)(0).QueryDefs("MyQuery")  

qdEPH.Parameters(0) = Text10.Value

Set db = CurrentDb

Set rsEPH = qdEPH.OpenRecordset

Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
Set oSheet = oBook.Worksheets("Sheet1")
oSheet.Activate

Dim Count as Long
Count = 1

Do While Not rsEPH.EOF

    oSheet.Range("A" & Count).Value = rsEPH("Value1")
    Count = Count + 1
    rsEPH.MoveNext

Loop

用户在表单上的文本框Text10中放置一个值,然后单击按钮以运行上面的代码。它运行查询MyQuery并将结果转储到名为rsEPH的记录集中。其中一个字段Value1作为文本值存储在要查询的表中。但是,它实际上是一个数字。如何将rsEPH("Value1")转换为数字(如果失败则返回Null或其他内容)然后将其除以100?

2 个答案:

答案 0 :(得分:3)

在应用数字转换函数之前,使用Nz在文本字段中转换Null。我选择CDbl作为转换函数。

oSheet.Range("A" & Count).Value = CDbl(Nz(rsEPH("Value1"), "0"))

但你提到除以100,所以也许你想要这个......

oSheet.Range("A" & Count).Value = CDbl(Nz(rsEPH("Value1"), "0")) / 100

答案 1 :(得分:0)

尝试以下代码

Do While Not rsEPH.EOF

  oSheet.Range("A" & Count).Value = IIf(IsNull(rsEPH("Value1")), 0, CDbl(rsEPH("Value1")))
    Count = Count + 1
    rsEPH.MoveNext

Loop