Ms access 取消转义Access 2003中绑定到控件的记录集中存在的字符

Ms access 取消转义Access 2003中绑定到控件的记录集中存在的字符,ms-access,recordset,escaping,Ms Access,Recordset,Escaping,我在SQL Server中存储了一些包含撇号的数据。在SQL Server表中,撇号被转义。例如,短语“Roberts的论文”存储为“Roberts的论文”。我使用Access 2003作为应用程序的字体端,并使用ADO使用存储过程访问存储在SQL Server中的数据 我遇到的问题是,当使用记录集检索数据并绑定到控件时,如何“取消转义”双撇号。下面是一些示例代码 Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset Set

我在SQL Server中存储了一些包含撇号的数据。在SQL Server表中,撇号被转义。例如,短语“Roberts的论文”存储为“Roberts的论文”。我使用Access 2003作为应用程序的字体端,并使用ADO使用存储过程访问存储在SQL Server中的数据

我遇到的问题是,当使用记录集检索数据并绑定到控件时,如何“取消转义”双撇号。下面是一些示例代码

  Dim cnn As ADODB.Connection
  Dim rs As ADODB.Recordset


  Set cnn = New ADODB.Connection
  cnn.ConnectionString = myConnectionString
  cnn.Open

  Set rs = New ADODB.Recordset
  Set rs.ActiveConnection = cnn
  rs.Source = "EXEC uspMyStoredProcedureName"

  rs.LockType = adLockOptimistic
  rs.CursorType = adOpenStatic
  rs.CursorLocation = adUseClient
  rs.Open

  Set ListControl.Recordset = rs

  Set rs = Nothing
  Set cnn = Nothing

我必须手动“循环”记录集并取消撇号转义吗?谢谢。

你不必逃避任何事情。双撇号形式仅用于SQL语句中的字符串文本。通过
INSERT…”插入数据库的实际值罗伯特的论文
是罗伯特的论文,这是当你从一个从
选择
抓取的记录集中读取它时会得到的值


如果
uspMyStoredProcedureName
中的任何东西做了一些奇怪的事情,导致双撇号返回,那么它就坏了,需要修复;如果您在数据库中有罗伯特的论文作为实际值,那么您已经插入了损坏的数据,您应该考虑修复完成该操作的代码,并清理数据。

如果您无法更改uspMyStoredProcedureName,那么您将不得不在结果集中循环。 否则,将存储过程中的select语句从
col
更改为
Replace(col,“,”)
就可以了。 是的,在第二个参数中有六个单引号,在第三个参数中有四个单引号:两个单引号包含一个字符串,在这个字符串中,每个引号都被加倍以转义


顺便说一句:为什么要用双引号存储数据?

看起来我根本不需要在数据库中存储“转义”的数据。我想我已经习惯了通过直接SQL插入数据,并且必须转义某些字符。多亏了“博宾斯”和“弗兰克”!