1

我对我在 VBA 中的转换有疑问。我在表单中创建了一个按钮,当我按下它时,它应该在我的数据库表中进行更新,但我得到一个错误:

arithmetic overflow error converting numeric to data type numeric

如何解决这个问题?这是我的代码:

Private Sub Inserare_Click()
  Dim strSQL As String
  Dim rst As New ADODB.Recordset

  strSQL = "UPDATE dbo.Soferi_test SET number= '" &  
           Me![subform_soferi].Form!certificat_cipti & _
           "',drivers= '" & Me![subform_soferi].Form!categorii_permis & _
           "' WHERE IDNO = " & Forms!Forma_redactare_soferi!IDNO

  Call AttServ(strSQL, rst)
  MsgBox ("Datele au fost introduse cu success")
End Sub
4

2 回答 2

1

number是一个保留字。在您的UPDATE语句中将该名称括起来,以便数据库引擎知道它应该是一个字段名称。

strSQL = "UPDATE dbo.Soferi_test SET [number]= '" &  

如果该更改不能解决问题,请检查已完成的 SQL 语句。在将字符串存储到 后插入此行strSQL

Debug.Print strSQL

您可以在“立即”窗口中查看该输出(使用Ctrl+去那里g)。然后,您可以将该语句文本复制到新 Access 查询的 SQL 视图中以进行测试。如果您无法使其正常工作,请将该语句添加到您的问题中,并告诉我们您是否收到相同或不同的错误消息。

向我们展示您的AttServ程序中使用strSQL.

于 2013-05-03T18:53:36.793 回答
0

我认为问题出在您尝试更新的表的字段类型中。

示例:如果您尝试将small integer字段的值设置为long integer, 值,Access 将引发错误。

检查字段的类型并将它们设置为适当的类型。


其他认为可能错误的是文本框的值。可以肯定的是,尝试转换这些值。

示例: Cdbl(Me![subform_soferi].Form!certificat_cipti)将文本字段中的字符串转换为double值。

另外,我建议您使用value文本框的属性:

Me![subform_soferi].Form!certificat_cipti.Value

或者

CDbl(Me![subform_soferi].Form!certificat_cipti.Value)

请注意,如果您使用“转换”函数(CDblCIntCDate等),如果转换失败(例如,尝试转换12abc为整数将失败) ,则会引发错误

于 2013-05-03T18:21:16.100 回答