Обзор проблемы:
У меня есть внешний интерфейс Ms Access 2007, подключенный к базе данных MySQL. Я создал представление в MySQL, так как не смог сгенерировать такое же представление в самом Access, и оно отлично работает с программным обеспечением MySQL Workbench, но если я использую Select * from myView в базе данных MS Access 2007, я получаю все, от случайного китайского символа до Длинные двоичные данные для того, что должно быть строкой.
Как повторить:
Чтобы помочь вам понять мою проблему и, надеюсь, воспроизвести ее, я написал следующее объяснение:
Сначала создайте таблицу и заполните ее в 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;
Теперь создайте представление MySQL ИЗ следующего SQL:
SELECT ExternalID,
group_concat(distinct SomeValue order by SomeValue ASC separator ', ') AS `ExtVal`
FROM aTestTbl
GROUP BY ExternalID;
Затем запустите следующий SQL, чтобы убедиться, что все работает:
SELECT *
FROM new_view;
Должно получиться что-то вроде:
|ExternalID | SomeValue | |1 | Value1, Value2 | |2 | Value3, Value4 |
Если вы затем подключите эту таблицу к базе данных MS Access 2007 и поместите тот же SQL
SELECT *
FROM new_view;
в новый запрос, я надеюсь (как и я), вы получите что-то вроде:
|ExternalID | SomeValue | |1 | Long Binary Data | |2 | Long Binary Data |
Я пытался использовать CAST(val AS CHAR) вокруг значения, но это не помогло.
Вопросы):
- Почему это?
- Как я могу заставить Access показывать правильную строку?