我有一个可以在许多地方调用的表格。所以我正在使用openargs将值拉到我需要的值之上。该值是一个GUID。发出open form命令时,我使用stringfromguid(parameter)
来传递GUID。我没有使用stringfromguid()进行尝试,但这对任何事情都不起作用。该值存储在窗体上的隐藏控件中。它最终具有一个像{guid {753DA23E-D9B5-4570-BFD8-30F7B9B4F450}}
这样的值,它是正确的GUID。
但是,当我尝试在任何其他select语句中使用该值(在这种情况下,在子窗体上设置记录源)时,它将不起作用。我知道select语句有效,我可以手动将其复制并粘贴到其中,但可以使用'xxx'
的{{1}}部分(在值的xxx
部分中),它可以工作。所以,我知道:
753...F450
拉我想要的东西。但是不管我做什么,各种stringfromguid()或guidfromstring()尝试都行不通。最终尝试使用
SELECT ... FROM ... WHERE IDcol = '753DA23E-D9B5-4570-BFD8-30F7B9B4F450'
没有什么评价。
数据托管在SQL 2012服务器上。访问只是前端。
答案 0 :(得分:0)
这对我有用-使用Access表:
SELECT
GuidField As GuidKey,
GuidField As GuidText,
[Code]
FROM
tblGuid
WHERE
GuidField = {guid {D8A01BE9-2387-452A-9CF4-30A970E0F078}}
AND
GuidField = GUIDFromString("{D8A01BE9-2387-452A-9CF4-30A970E0F078}")
所以任何一种过滤方法都应该起作用。不管您使用哪种ODBC驱动程序,因为自版本95起Access都能够处理GUID。
要剥离文本Guid:
' Private constants.
'
' Length of GUID string per definition.
Private Const GuidLength As Integer = 38
' Converted Access Guid header.
Private Const GuidHeader As String = "{guid "
' Lenght of Access Guid header.
Private Const HeaderLength As Integer = 6
Public Sub StripTextGuidHeader(ByRef TextGuid As String)
Const Start As Integer = 1 + HeaderLength
If InStr(TextGuid, GuidHeader) = 1 Then
' This is a converted byte Guid:
' "{guid {00000000-0000-0000-0000-000000000000}}"
' Strip the header and the trailing curly bracket.
TextGuid = Mid(TextGuid, Start, GuidLength)
End If
End Sub