【发布时间】:2018-08-06 10:18:55
【问题描述】:
我正在将在 Windows XP 下运行的旧系统升级到 Windows 10。
其中一个应用程序是在 MS Access XP 中开发的,链接到 Oracle 数据库(Oracle 9i - 即时客户端 ODBC 驱动程序 32 位)。
我的电脑是法语的,MS Access 是法语的。
当我运行一条 SQL 行时:
SELECT LIST_NAME FROM WZ_LISTS_HD WHERE LIST_REL1 = 'Produit'
我得到以下结果: Summary Access vs SQL Explorer Windows 10 vs Windows XP
在 Windows 10(访问)中,我会为每个带有特殊字符(在本例中为“è”或“é”)的记录获得一个 #Deleted。我尝试使用自制的 SQL Explorer 并没有得到 #Deleted 但我没有特殊字符。
在我的旧系统 (Windows XP) 和我的 SQL 资源管理器中,我得到了带有特殊字符的完整记录集。
有人知道如何解决这个问题吗?大多数关于#Deleted 的帖子都建议每个数据库损坏或“需要进行数据库压缩”。就我而言,我可以毫无问题地使用旧系统获取记录。每天都有用户使用数据库。因此,数据库是好的。
“压缩数据库”没有意义,因为我不使用 mdb(访问主数据库文件)。
我尝试更改我的 Windows 键盘和语言功能。没用。
最后一件事,我已经为 Windows 7 下的某些用户进行了相同的升级(Windows XP -> Windows 7)。效果很好。没有#Deleted 记录。这似乎与 Windows 10 处理语言的方式有关。
这是 TNSNAMES.ORA 文件内容。
SYNDATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = serveur-oracle)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle6)
)
)
ODBC 信息如下:
这是调用 SQL 请求的代码部分:
欢迎任何想法。
【问题讨论】:
-
听起来像是 ODBC 驱动程序的问题。当访问实际值出现问题时,Access 往往会显示 #Deleted。您是通过直通查询还是通过 Access 访问?你的连接字符串是什么(服务器/密码被审查)?
-
我编辑了原始帖子以添加您要求的信息。你似乎是对的。我创建了一个包含一个表和 2 个字段的 MDB 文件。我填充了一些带有特殊字符的单词和一些没有特殊字符的单词。我在桌子上做了一个请求,Access 显示一切都没有问题。因此,问题似乎来自 ODBC 驱动程序。
-
我不确定“通过”还是“通过访问”。我没有正确的 VBA 代码。但这是代码的失败位(抱歉格式化):
-
那是通过Access(你使用Access SQL,并让Access将其翻译成Oracle SQL)。它很容易出错。使用 ADO 和直接连接到 Oracle 数据库可能可以解决这个问题。
-
最后将代码发布为图片,我无法正确格式化。请看下文。
标签: sql vba ms-access windows-10 oracle9i