一直试图将街道,郊区和邮政编码插入表中,但一直在努力
运行时错误'13'类型不匹配
这是代码:
Sub arrayData()
Dim CustomerNames() As Variant
Dim num As Long, dbs As Database, InsertReocrd As String
Dim CustomerID As Long, num1 As Long
Dim CustomerName As String
Dim Street As String, Suburb As String, Postcode As Integer
Set dbs = CurrentDb()
CustomerID = 0
For num1 = 0 To 50000
CustomerID = CustomerID + 1
CustomerNames = Array(...)
Street = Array("Short", "Lygon", "Flinders", "Elizabeth", "King") //ERROR OCURRS HERE
Suburb = Array("Sandringham", "Brighton", "St Kilda", "Melbourne", "Carlton") //ERROR OCURRS HERE
Postcode = Array("3165", "3298", "3145", "3144", "3000") //ERROR OCURRS HERE
num = Int((250 - 0 + 1) * Rnd + 0)
CustomerName = CustomerNames(num)
InsertRecord = "INSERT INTO CUSTOMER (CustomerID , CustomerName, StreetName, Suburb) VALUES (" & "'" & CustomerID & "'" & "," _
& "'" & CustomerName & "'" & "'" & StreetName & "'" & ")"
dbs.Execute InsertRecord
Debug.Print CustomerID, CustomerName, Street, Suburb
Next
End Sub
应该保存数组的变量需要声明为Variant,而不是String。
所以:
Dim Street As Variant, Suburb As Variant, Postcode As Variant
请注意,您的INSERT语句缺少Suburb的值。
使用DAO.Recordset.AddNew
等可能会更快,更好阅读。
作为shown yesterday,简化你的连接,你还需要和CustomerID和循环数组:
For n = 1 To 5
InsertRecord = "INSERT INTO CUSTOMER (CustomerID , CustomerName, StreetName, Suburb) VALUES (" & CustomerID(n) & ",'" & CustomerName(n) & "','" & StreetName(n) & "','" & Suburb(n) & "')"
如果您真的希望以这种方式插入50000个客户(?)(您不会),请遵循André的建议并使用DAO。
很抱歉,如果这不完全符合主题。为了防止任何其他可怜的傻瓜花费数小时试图弄清楚为什么他们在VBA recordset.addnew上得到'Type Mismatch',请检查表中字段/列的[Default Values]。我将TEXT字段更改为DATE字段,但忽略了删除[Default Value]中的“”。 (尝试将任何文本值设置为日期字段是禁止的)。