我在將一個十進制數從一個訪問字段(使用DAO記錄集)傳遞給一個vba變量時遇到了一些麻煩。我嘗試更改access和vba(single/currency)中的數據類型,但同一行在調試器中一直保持突出顯示,運行時錯誤94「無效使用null」。 讓我困惑的是,當我將光標放在調試器中的變量上時, quickinfo顯示該變量保持正確的值,但記錄集字段爲空。這隻發生在Decimal字段中,其他字段(字符串/整數)不會突出顯示。將小數傳遞給vba的問題
調試器中被高亮顯示的行是'Start Loop'塊中的rs!Field4。奇怪的是,rs.Field3設置numField3變量罰款。兩者之間的唯一區別是字段3包含整數,字段4包含小數。這兩個都是msAccess數字,但在問題解決期間我已更改爲貨幣。 當您將光標放在它尚未賦值的變量的任何反饋將是一件好事 感謝
Private Sub Command1_Click()
'Set Database and Recordset variables
Dim thisDB As DAO.Database
Dim rs As DAO.Recordset
Set thisDB = CurrentDb
Set rs = thisDB.OpenRecordset("tblTable1")
'Declare and set recordset variables variables
Dim strField1 As String
Dim strField2 As String
Dim numField3 As Currency
Dim numField4 As Currency
Dim dtField5 As Date
Dim dtField6 As Date
'Declare dynamic variables
Dim dtVar1 As Date
Dim intVar2 As Integer
Dim dtVar3 As Date
'DecalreSQL Variables
Dim num1 As Currency
Dim num2 As Currency
Dim num3 As Currency
Dim StrSQL As String
Dim strValues As String
'Start Loop
Do While Not rs.EOF
strField1 = rs!Field1
strField2 = rs!Field2
numField3 = rs!Field3
numField4 = rs!Field4
dtField5 = rs!Field5
dtField6 = rs!Field6
If strField1 = "This" And strField2 = "That" Then
'Perform calculations
dtVar1 = 0
dtVar3 = 0
num3 = 0
Do While dtVar3 < dtField6
If ’Something’ Then
This calculation sets variables
ElseIf ‘SomethingElse’ Then
This calculation sets variables
Else
This calculation sets variables
End If
'Build SQL Query and apprend to table
strValues = dtVar1& "," & num1 & "," &num2 & "," & num3
StrSQL = "INSERT INTO tblTable2 (Field1, Field2, Field3, Field4);"
StrSQL = StrSQL & "VALUES ('" & strValues & "')"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSQL
DoCmd.SetWarnings True
dtVar3 = dtVar1
Loop
End If
rs.MoveNext
Loop
rs.Close
End Sub
如果我們看一些代碼,它可能會幫助http://stackoverflow.com/help/mcve –
存儲十進制你需要使用'Variant'數據類型。 –
Remi, 我在 以上添加了一些代碼Ryan Wildry, 我嘗試了變體數據類型,代碼什麼都沒做。 – damnthing