【问题标题】:VB6 ADO recordset fieldname case sensitivity depends on Windows language settingsVB6 ADO 记录集字段名是否区分大小写取决于 Windows 语言设置
【发布时间】:2018-03-09 19:49:48
【问题描述】:

我有一个连接到 access 数据库的 ado 记录集。我有一个 SELECT * 查询。我以如下方式访问这些字段:

rs!ROMRightMinX

rs!ROMRightMaxX

rs!ROMRightMinY

rs!ROMRightMaxY

当我将 Windows 切换到匈牙利语时,rs!ROMRightMinY 中的 nY 组合变得区分大小写。意义

rs!ROMRightMinY      Displays value

rs!ROMRightMInY      Displays value

rs!ROMRigHTMinY      Displays value

rs!ROMRightMiny      Field not found

rs!ROMRightMiNy      Field not found

rs!ROMRightMiNY      Field not found

其他字段正常工作。同样rs!ROMLeftMinY 也有同样的问题。我已将该字段重命名为rs!ROMRightMiYY,并且不再区分大小写。

所有字段在其他 Windows 语言中都能正常工作。

有什么想法吗?

【问题讨论】:

    标签: ms-access vb6 field case-sensitive


    【解决方案1】:

    表和字段名称的大小写敏感性因数据库系统而异。 SQL92 规范说不带引号的标识符应该不区分大小写。但是,带引号的标识符应该区分大小写。

    如果您无法控制基础记录源中字段名称的大小写,请将您的 SELECT 查询更改为以下内容:

    SELECT ROMRightMinX AS [ROMRightMinX], ROMRightMaxX AS [ROMRightMaxX], 
        ROMRightMinY AS [ROMRightMinY], ROMRightMaxY AS [ROMRightMaxY] ...
    

    (报价可能因系统而异,我在这里使用[])

    这样,底层列得到一个不区分大小写的匹配,但返回的列是区分大小写的,所以它们应该在所有语言环境中匹配您的代码。

    【讨论】:

    • 但这并不能解释为什么 ROMRightMinY 和 ROMLeftMinY 末尾的 nY 区分大小写,而这些字段名称中的其他字符和其他字段名称中的 nY 不区分大小写。我可以在断点处编辑字段名称,当我将鼠标悬停在它上面时,当我编辑 nY 的情况时,它要么显示值,要么显示“未找到字段”。
    • 是的,我没有试图解释这一点。我认为这是你无法控制的。我只是向您展示了一种正确区分列名的方法,以便您的代码无论区域设置如何都能正常工作。
    • 看我的回答,这可能是匈牙利二合字母NY的特例。
    【解决方案2】:

    我猜这是因为匈牙利语中的NYdigraph。它与您描述的行为相对应。 NynyNY 被理解为一个字母(腭鼻音 [ɲ])。 NX 不是匈牙利语的二合字母,所以它可以按您的预期工作。

    只是为了好玩,试试其他匈牙利二合字母:cszsgylynytydzsz,以及三合字母dzs.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2020-11-06
      • 2023-03-17
      相关资源
      最近更新 更多