列表框中填充了单独表格中的值。此列表框的值将作为新记录插入到事务表中。访问抛出错误“数据类型转换错误3421”当我尝试将列表框的值分配给我的sql参数时。列表框是txtMealType,它作为MealID插入,这是一个短文本字段。
Set dbs = CurrentDb
Dim vblMealType As String
txtMealType.SetFocus
vblMealType = txtMealType.Value
If (txtMealType & vbNullString) = vbNullString Then Exit Sub
Dim qdf As DAO.QueryDef
Set qdf = dbs.CreateQueryDef("", _
"PARAMETERS prmCustomerID Long, prmMealID Long, prmTransactionAmount Currency, prmTransactionDate DateTime;" & _
"INSERT INTO dbo_Transactions (CustomerID, MealID, TransactionAmount, TransactionDate) " & _
"VALUES ([prmCustomerID], [prmMealID], [prmTransactionAmount], [prmTransactionDate]) ")
qdf!prmCustomerID = txtCustomerID.Value
qdf!prmTransactionAmount = txtCharge.Value
txtCharge.SetFocus
qdf!prmTransactionDate = Format(Date, "yyyy-mm-dd")
qdf!prmMealID = vblMealType
qdf.Execute
MsgBox "Customer Charge Succesfull.", _
vbOKOnly + vbInformation
Set qdf = Nothing
Set dbs = Nothing
答案 0 :(得分:0)
您在查询定义中将prmMealId定义为long。
vblMeal是您所说的长文本字段还是短文本字段。使用CLNG()将字符串转换为long并修复数据类型转换错误。
答案 1 :(得分:0)
您没有在previous question中指定字段类型,因此我根据原始SQL字符串中的(缺少)引用进行了猜测。如果表中的[MealID]为Short Text
,则在上面的PARAMETERS语句中更改
prmMealID Long,
到
prmMealID Text(255),