0

我在 Access 2010 中创建了一个表单,用于将数据插入到现有表中。该表包含一个关键字字段、源组合框和一个代码文本框,我在其中编写要插入的数据,并且有一个用于执行查询的按钮。表格的代码是:

Private Sub cmd_go_Click()
Dim insertstring As String
insertstring = "INSERT INTO KWTable (KW, Source, Code) VALUES('" & text_key.Value & "','" & combo_source.Value & "','" & txt_code.Value & "');"
DoCmd.RunSQL insertstring
End Sub

代码很简单,它将数据输入到表中,以便我可以参考它以备将来使用。现在我遇到的问题是,当我尝试添加我在 SQL Server 中使用的长代码时,我得到一个语法缺失表达式错误,我假设它来自单引号,因为代码来自 SQL。我收到错误是因为当我尝试存储我在 SQL Server 中使用的代码时,它使用访问无法识别的单引号。我想如果我尝试在插入表单的代码中编写一些东西来帮助将单引号转换为双引号,然后将它们重新转换回单引号将有助于解决问题。我只是不知道该怎么做,真的可以使用一些帮助。

谢谢你

4

2 回答 2

3

通过使用参数查询,您可以避免插入文本中包含引号的问题。

考虑这样一种方法cmd_go_Click()

Dim strInsert As String
Dim db As DAO.database
Dim qdf As DAO.QueryDef

strInsert = "PARAMETERS pKW TEXT(255), pSource TEXT(255), pCode TEXT(255);" & vbCrLf & _
"INSERT INTO KWTable (KW, Source, Code) VALUES (pKW, pSource, pCode);"
'Debug.Print strInsert
Set db = CurrentDb
Set qdf = db.CreateQueryDef(vbNullString, strInsert)
qdf.Parameters("pKW") = Me.text_key.value
qdf.Parameters("pSource") = Me.combo_source.value
qdf.Parameters("pCode") = Me.txt_code.value
qdf.Execute dbFailOnError
Set qdf = Nothing
Set db = Nothing

但是,我不明白如何JoinCells()适应。

于 2013-04-02T19:32:33.857 回答
0

我使用一个函数来处理空值,并在直接创建 SQL 语句时转义单引号(通过将它们转换为两个单引号):

Function SafeSQL(ByVal pvarSQL As Variant) As String
    SafeSQL2 = Replace(Nz(pvarSQL, ""), "'", "''")
End Function

然后在您的日常工作中,您将拥有:

insertstring = "INSERT INTO KWTable (KW, Source, Code) VALUES('" & SafeSQL(text_key.Value) & "','" & SafeSQL(combo_source.Value) & "','" & SafeSQL(txt_code.Value) & "');"
于 2013-04-03T17:11:01.687 回答