如何在 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 中使用 MySQL 视图,而不会出现字符串列的垃圾?