如何在 Ms Access 2007 中使用 MySQL 视图,而不会出现字符串列的垃圾?

Posted

技术标签:

【中文标题】如何在 Ms Access 2007 中使用 MySQL 视图,而不会出现字符串列的垃圾?【英文标题】:How do I use MySQL Views with Ms Access 2007 without getting junk for string columns? 【发布时间】:2011-07-12 14:12:55 【问题描述】:

问题概述:

我有一个连接到 mysql 数据库的 Ms Access 2007 前端。我在 MySQL 中创建了一个视图,因为我无法在 Access 中生成相同的视图,它本身可以在 MySQL 的 Workbench 软件中正常工作,但是如果我在 MS Access 2007 db 中使用“Select * from myView”,我会从随机中文中获取所有内容字符到“长二进制数据”应该是字符串。

如何复制:

为了帮助您理解我的问题并希望复制它,我写了以下解释:

首先创建一个表并使用以下代码在 MySQL 中填充它:

--
-- Table structure for table `aTestTbl`
--

DROP TABLE IF EXISTS `aTestTbl`;
CREATE TABLE `aTestTbl` (
  `ID` int(10) unsigned NOT NULL,
  `ExternalID` int(10) NOT NULL,
  `SomeValue` varchar(25) NOT NULL
);

--
-- Dumping data for table `aTestTbl`
--

LOCK TABLES `aTestTbl` WRITE;
/*!40000 ALTER TABLE `aTestTbl` DISABLE KEYS */;
INSERT INTO `aTestTbl` VALUES (1,1,'Value1');
INSERT INTO `aTestTbl` VALUES (2,1,'Value2');
INSERT INTO `aTestTbl` VALUES (3,2,'Value3');
INSERT INTO `aTestTbl` VALUES (4,2,'Value4');
/*!40000 ALTER TABLE `aTestTbl` ENABLE KEYS */;
UNLOCK TABLES;

现在从以下 SQL 创建一个 MySQL 视图:

SELECT ExternalID,
    group_concat(distinct SomeValue order by SomeValue ASC separator ', ') AS `ExtVal`
FROM aTestTbl
GROUP BY ExternalID;

然后运行以下 SQL 以确保一切正常:

SELECT *
FROM new_view;

它应该产生类似的东西:

|外部ID |一些价值 | |1 |值 1,值 2 | |2 |值 3,值 4 |

如果您随后将该表连接到 MS Access 2007 DB 并放入相同的 SQL

SELECT *
FROM new_view;

进入一个新的查询,我希望(和我一样)你得到类似的东西:

|外部ID |一些价值 | |1 |长二进制数据 | |2 |长二进制数据 |

我尝试在值周围使用 CAST(val AS CHAR) 但这没有帮助

问题:

    这是为什么呢? 如何让 Access 显示正确的字符串?

【问题讨论】:

我已经设法在 MS Access 中使用 Pass-Though 查询解决了这个问题,但仍然想留下这个问题,看看是否有人知道为什么我不能在 MS Access 2007 中使用 MySQL 视图. 我还发现,只是一个表视图(带有字符串列)会为每个字符串列生成相同的“长二进制数据”! 您是否尝试过删除并重新创建链接表?也许来自 MySQL 表的先前版本的一些过时的元数据导致了这个问题。不幸的是,仅刷新链接并不能清除所有元数据。 感谢大卫,但事实并非如此。我的数据库在登录时删除并重新连接所有表等,该示例适用于为这个问题制作的全新数据库。 :) 【参考方案1】:

看来这不再是问题了。我刚刚用...进行了测试

Access_2010 使用“链接表”访问 MySQL 视图 new_view

通过 MySQL ODBC 5.2w 驱动程序

针对 MySQL 5.5.29-0ubuntu0.12.04.2

...视图在 Access 中正确显示:

【讨论】:

嘿嘿,你想用这个获得***.com/badges/17/necromancer 徽章吗? ;) 一年以上没有使用 Access,因此无法对其进行测试。如果您获得 5 次赞成票(和 d 徽章),我会认为它是正确的并将其标记为正确。 :) @GazB 我已经准备好了所有零碎的东西,所以我想“为什么不呢?” :) 我对旧版本的 MySQL ODBC 也有一些令人沮丧的经历,所以我想看看情况是否有所改善。

以上是关于如何在 Ms Access 2007 中使用 MySQL 视图,而不会出现字符串列的垃圾?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 2007 中使用值填充组合框

如何在 MS Access 2007 中获取 sql 查询

如何在 MS Access 2007 中使用查询作为报告源?

如何在 Ms Access 2007 中使用 MySQL 视图,而不会出现字符串列的垃圾?

如何在 Ms Access 2007 中执行 Mysql 查询

在运行 ASP.NET 的网站中,如何显示存储在 MS Access 2007 附件类型中的图像