Невозможно определить поле более одного раза при открытии таблицы Pervasive в MS Access

Несколько месяцев назад я обновил систему, использующую Pervasive v11. Только после этого обновления у меня начались проблемы с MS Access (проверено в 2003 и 2016 годах), когда я не мог связать или импортировать определенные таблицы Pervasive через ODBC с ошибкой «Невозможно определить поле более одного раза». Ни в одной из сбойных таблиц нет полей с повторяющимися именами. Раньше у меня не было проблем, а теперь вдруг появились. Единственные изменения, о которых я знаю, касаются структуры таблиц. Я даже создал новую, очень простую таблицу и все еще получаю эту ошибку.

Продавец системы сообщил мне, что это больше не проблема, начиная с Pervasive v13. Как обойти эту проблему без обновления?


person AJK    schedule 16.07.2018    source источник


Ответы (2)


Я не уверен точно, каков абсолютный ответ, помимо обновления, но я нашел обходной путь, который может быть приемлемым (это для меня). Несмотря на то, что раньше это не было проблемой, основная проблема, по-видимому, связана с именами таблиц (и, возможно, полей). MS Access недоволен символами подчеркивания иногда. Честно говоря, я только что открыл другую таблицу с двумя символами подчеркивания в имени, и это удалось, но MS Access по-прежнему не может открыть мою пользовательскую таблицу с двумя символами подчеркивания.

Мой обходной путь заключается в создании новых таблиц (или представлений для старых таблиц), которые не содержат ничего, кроме простых буквенных символов в имени таблицы. Если представление достаточно простое (например: select * from tablename), то оно может разрешить доступ для записи, что также позволяет MS Access записывать данные в эту таблицу через представление.

Я предполагаю, что эта проблема может распространяться на имена полей с подчеркиванием в некоторых обстоятельствах. Тестирование в PCC показывает, что присвоение полю псевдонима разрешает доступ для записи в таблицу. Я упоминаю об этом, потому что я видел, как некоторые представления заставляют таблицу иметь доступ только для чтения, когда на нее ссылаются через это представление. Я считаю, что это происходит, когда представление меняет типы данных или базовую структуру поля. Например, в системе есть таблица с датами, хранящимися в виде 6 символов (060118), но в представлении это отображается как SQL_Date (20180601). Это представление не позволяет добавлять или обновлять строки.

Я уверен, что кое-что из того, что я только что сказал, является простыми вещами, которые можно сделать с помощью современных систем баз данных и не обязательно нуждаются в объяснении, но Pervasive доставил мне множество проблем, которые другие системы баз данных не смогли бы решить, поэтому я поясняю. что я нахожу, что работает.

person AJK    schedule 16.07.2018

Я только что увидел ваш вопрос, когда у меня было такое же предупреждение при попытке преобразовать таблицу в базу данных (.dbf) из Access. С простыми таблицами, которые я создал сам, проблем не было, но с данными, которые я скачал с data.gov (в которых я очистил и удалил поля), возникли проблемы. Я экспериментировал, удаляя символы подчеркивания, как предлагает ответ выше, а также удалял тире (они ему не нравятся). Затем я изменил тип данных в поле ID (первичный ключ). Он был автоматически отформатирован как число (которое и было - 10-значное целое число). В представлении «Дизайн» я изменил тип данных для идентификатора (первичный ключ) на «текст», и это решило проблему. После этого у меня не было проблем с конвертацией. Я не уверен, почему. Кроме того, мне пришлось сократить некоторые из более длинных имен полей.

person Liz Thomas    schedule 11.01.2019
comment
Интересно услышать о длинных именах полей. Я буду помнить об этом, если настройка имени таблицы не позволит установить соединение. Преобразование типа имеет смысл, поскольку я много раз сталкивался с тем, что поле Pervasive могло иметь число, но вместо этого имело текстовые символы. Я никогда не думал, что, возможно, это было из-за того, что он был ключом. Я всегда думал, что это просто особенность нашей ERP — использовать текст вместо чисел, потому что разработчикам нравятся начальные нули (хранятся, а не просто дополняются во внешнем интерфейсе). - person AJK; 14.01.2019