首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Access SQL查询中的汉字

Access SQL查询中的汉字
EN

Stack Overflow用户
提问于 2021-08-19 13:00:57
回答 1查看 252关注 0票数 0

填充记录源后,下一个操作是单击一个填充的字段,以“激活”记录。单击此命令时,目标是将SEC_ID (A GUID,Number数据类型)存储为tempvar,并在未来的查询中使用。此GUID还被放置在文本框中,仅用于可视化调试。但是它不放GUID,它放的是随机汉字。我试着把它放到一个MsgBox中,只是为了看,它喷出了“?”。

填充行源的代码:

代码语言:javascript
复制
Dim componentListSQL As String
If FCSUtilities.AssessmentUoM = "Metric" Then
    componentListSQL = "SELECT DISTINCT [100b_Working].SEC_SYS_COMP_ID, [100b_Working].SEC_ID, [110b_RO_Material_Category].MAT_CAT_DESC, [110b_RO_Component_Type].COMP_TYPE_DESC, [110b_RO_Material_Category].MAT_CAT_ID, [110b_RO_Component_Type].COMP_TYPE_ID, [100b_Working].ID_Number, [100b_Working].Model, [100b_Working].Serial_Number, [100b_Working].Capacity, [100b_Working].Manufacturer, [100b_Working].SEC_YEAR_BUILT, ROUND([100b_Working].SEC_QTY, 0) AS SEC_QTY, [100b_Working].UOM_MET_UNIT_ABBR, [100b_Working].UOM_ENG_UNIT_ABBR, [100b_Working].Equipment_Make, [100b_Working].UOM_CONV " _
                     & "FROM (110b_RO_Units_Conversion INNER JOIN (110b_RO_Component_Type INNER JOIN (110b_RO_Material_Category INNER JOIN 110b_RO_CMC ON [110b_RO_Material_Category].MAT_CAT_ID = [110b_RO_CMC].CMC_MCAT_LINK) ON [110b_RO_Component_Type].COMP_TYPE_ID = [110b_RO_CMC].CMC_CTYPE_LINK) ON [110b_RO_Units_Conversion].UOM_ID = [110b_RO_CMC].CMC_UoM) INNER JOIN 100b_Working ON [110b_RO_CMC].CMC_ID = [100b_Working].SEC_CMC_LINK " _
                     & "WHERE ((([100b_Working].SEC_SYS_COMP_ID) = [Forms]![200a_MainWindow]![txtDebugCompSysID]) And (([100b_Working].SEC_ID) Is Not Null)) " _
                     & "ORDER BY [110b_RO_Component_Type].COMP_TYPE_DESC;"
                     
    Me![210_ComponentList].Form.RecordSource = componentListSQL
End If

OnClick事件:

代码语言:javascript
复制
Private Sub txtMaterialCategory_Click()
Me.txtActiveSecID.Value = Me.txtSecID.Value
End Sub

txtSecID看起来像它应该的那样是一个GUID,但是在txtActiveSecID中它变成了汉字,即使我试图把它作为一个tempvar,然后将它设置为txtActiveSecID。

我不太清楚到底是怎么回事。查看不同的堆栈,它指出这是由于long/memo字段,但正如我前面所说的,SEC_ID字段数据类型是Number。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-19 16:05:55

每个MS文档https://learn.microsoft.com/en-us/office/vba/api/Access.Application.StringFromGUID

Microsoft数据库引擎将GUID存储为Byte类型的数组。但是,Access不能从窗体或报表上的控件返回Byte数据。若要从控件返回GUID的值,必须将其转换为字符串。若要将GUID转换为字符串,请使用StringFromGUID函数。若要将字符串转换回GUID,请使用GUIDFromString函数。

StringFromGUID(Me.txtSecID.Value)

但是,这将导致输出,如:{guid {2786C27B-CB7C-4DEA-8340-1338532742DE}}

这仍然可以作为筛选标准,但是可以做进一步的处理,从该字符串中提取GUID。使用字符串操作函数移除{guid头和尾随}。回顾Access - GUID value stored in textbox, can't be used in SELECT statements

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68848371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档