Ошибка access нельзя определить поле более одного раза

  • Remove From My Forums
  • Question

  • Access 2010.

    I am setting up a new table in Design View and am getting this message upon attempting to save the table design.

    I have checked the design thoroughly and I do not have any duplicate fields. However, I did do a copy and paste of several fields in order to create new ones, afterwards renaming them to be unique. Access appears to have lost track of the field names due
    to this.  I am now unable to save the design which took me about an hour to create. Unfortunately, Access gives me no information on which fields it thinks are duplicated. Any ideas on how to proceed?

    One other point that may or may not be relevant. When I created this table, I copied and renamed an existing table (structure only).

    • Edited by

      Thursday, June 6, 2013 10:43 PM

Answers

  • Ok. I found a way out. I was able to create another new table and copy and paste all of the columns into the new table and save that design. The one I was working on I had to throw away since Access would not save it. The moral of this story is to never
    copy and paste columns when building a table design in Access 2010. 

    • Marked as answer by
      AllTheGoodNamesWereTaken
      Thursday, June 6, 2013 11:03 PM

Доступ к Excel — как экспортировать данные таблицы из Access 2016, а затем применить форматирование с помощью таблиц в MS

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

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

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

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

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

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

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

  • Интересно услышать о длинных именах полей. Я буду иметь это в виду, если настройка имени таблицы не позволяет установить соединение. Преобразование типа имеет смысл в том, что я много раз сталкивался с тем, что поле Pervasive могло иметь число, но вместо этого содержало текстовые символы. Я никогда не думал, что, может быть, это ключ. Я всегда думал, что это просто странность нашей ERP, заключающаяся в использовании текста вместо чисел, потому что разработчики любят ведущие нули (хранящиеся не просто с дополнениями на передней панели).

Tweet

Share

Link

Plus

Send

Send

Pin

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    информация о разделе

    user posted image Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ.

    >
    Импорт таблицы из dbf-ника в Access
    , не ошшушештвляетша :(

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    07.05.04, 08:28

      Full Member

      ***

      Рейтинг (т): 10

      Доброго времени!

      Вопрос такой. Есть файл dbf. Нортон его открывает как dbase 3. Требуется экспортировать данные ноустим в msaccess. При импортировании появляется ошибка: «зарезервированная ошибка (-5016)». И ничего. Ладно, тогда делаем ОДБЦ соединение, файловый ДСН, потом (в аксесс) делаем связь таблицами через одбц. И тоже облом но другой: «не допускается использование ODBC для импорта, экспорта или присоединения таблицы из внешней базы данных ms jet или базы данных isam». А как экспортировать — то?


      Alexxxl



      Сообщ.
      #2

      ,
      07.05.04, 10:00

        Member

        **

        Рейтинг (т): 2

        Экспортируй как «dBase IV», у меня не один еще не кидал ошибку(при запросе индексного файла дави «отмена»)


        0xFFFFF



        Сообщ.
        #3

        ,
        07.05.04, 10:16

          Full Member

          ***

          Рейтинг (т): 10

          Неа. Не идет! %((
          Вот таблица:

          Прикреплённый файлПрикреплённый файл0040505Z.DBF (6.84 Кбайт, скачиваний: 441)

          Wizard

          Bas



          Сообщ.
          #4

          ,
          07.05.04, 11:09

            У меня ругается

            ExpandedWrap disabled

              Нельзя определить поле более одного раза. (Ошибка 3191)

              Попытка создать таблицу, несколько полей которой имеют одинаковое имя. Каждое имя поля таблицы должно быть уникальным.

            Делай выводы.


            0xFFFFF



            Сообщ.
            #5

            ,
            07.05.04, 11:26

              Full Member

              ***

              Рейтинг (т): 10

              Хм… Но там нет полей с одинаковыми именами. В таблице 5 полей и у всех уникальное имя.

              Wizard

              Bas



              Сообщ.
              #6

              ,
              07.05.04, 11:57

                Access не понимает поля Test_numb_,Test_name.
                Попробуй руками сделать присоединенный файл и увидиш как Access обозвал эти поля. :wacko:


                0xFFFFF



                Сообщ.
                #7

                ,
                07.05.04, 12:20

                  Full Member

                  ***

                  Рейтинг (т): 10

                  Ага, понял. Сейчас покопаюсь

                  Сообщение отредактировано: 0xFFFFF — 07.05.04, 12:26

                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                  0 пользователей:

                  • Предыдущая тема
                  • Базы данных: SQL
                  • Следующая тема

                  Рейтинг@Mail.ru

                  [ Script execution time: 0,0235 ]   [ 15 queries used ]   [ Generated: 13.06.23, 11:26 GMT ]  

                   
                  Scorpio ©
                   
                  (2005-01-26 14:43)
                  [0]

                  Мастера, подскажите пишу простые SQL запросы:
                  ADOCommand1.Parameters.ParamValues[«date1»] := StrToDate(Edit1.Text);
                      ADOCommand1.Parameters.ParamValues[«date2»] := StrToDate(Edit2.Text);
                      ADOCommand1.CommandText := «select * into zaza from ZA where za.ze_>=:date1 and za.ze_<=:date2»;
                      ADOCommand1.Execute;

                      ADOCommand1.CommandText := «select * into zan from ZAza where (int(wg_)=4 and int(wn_)>=4 and int(wn_)<=12) or (int(wg_)=3 and int(wn_)<15 or int(wn_)=18 or int(wn_)=27) or (int(wg_)=3 and int(wn_)>28 and int(wn_)<32 or int(wn_)>33 and int(wn_)<47 or int(wn_)>47)»;
                      ADOCommand1.Execute;

                      ADOCommand1.CommandText := «select * into zan1 from ZAN, lnk, de where zan.ni=lnk.rec1 and lnk.idl=7 and lnk.rec2=de.ni»;
                      ADOCommand1.Execute;
                      ADOConnection1.Connected := false;

                      ADOCommand1.CommandText := «select * into zal from zan1, lnk, r2 where zan1.de_ni=lnk.rec1 and lnk.idl=20 and r2.ni=lnk.rec2»;
                      ADOCommand1.Execute;

                  Так он мне во время последнего запроса выкидывает ошибку «Нельзя определить поле более одного раза». В чем здесь моя ошибка ??
                  Хотя последний запрос отравляю ч/з ADODataSet без создания таблицы, то там запрос работает нормально :(

                  [ Script execution time: 0,0235 ]   [ 15 queries used ]   [ Generated: 13.06.23, 11:26 GMT ]  

                   
                  Scorpio ©
                   
                  (2005-01-26 14:43)
                  [0]

                  Мастера, подскажите пишу простые SQL запросы:
                  ADOCommand1.Parameters.ParamValues[«date1»] := StrToDate(Edit1.Text);
                      ADOCommand1.Parameters.ParamValues[«date2»] := StrToDate(Edit2.Text);
                      ADOCommand1.CommandText := «select * into zaza from ZA where za.ze_>=:date1 and za.ze_<=:date2»;
                      ADOCommand1.Execute;

                      ADOCommand1.CommandText := «select * into zan from ZAza where (int(wg_)=4 and int(wn_)>=4 and int(wn_)<=12) or (int(wg_)=3 and int(wn_)<15 or int(wn_)=18 or int(wn_)=27) or (int(wg_)=3 and int(wn_)>28 and int(wn_)<32 or int(wn_)>33 and int(wn_)<47 or int(wn_)>47)»;
                      ADOCommand1.Execute;

                      ADOCommand1.CommandText := «select * into zan1 from ZAN, lnk, de where zan.ni=lnk.rec1 and lnk.idl=7 and lnk.rec2=de.ni»;
                      ADOCommand1.Execute;
                      ADOConnection1.Connected := false;

                      ADOCommand1.CommandText := «select * into zal from zan1, lnk, r2 where zan1.de_ni=lnk.rec1 and lnk.idl=20 and r2.ni=lnk.rec2»;
                      ADOCommand1.Execute;

                  Так он мне во время последнего запроса выкидывает ошибку «Нельзя определить поле более одного раза». В чем здесь моя ошибка ??
                  Хотя последний запрос отравляю ч/з ADODataSet без создания таблицы, то там запрос работает нормально :(


                   
                  Соловьев ©
                   
                  (2005-01-26 14:51)
                  [1]

                  >zaza, zal, zan1, zan
                  Такое только по накурке придумать можно 8)

                  > «Нельзя определить поле более одного раза».
                  А такая таблица уже есть? или ее еще нет?


                   
                  Sergey13 ©
                   
                  (2005-01-26 14:55)
                  [2]

                  >select * into zal
                  Это вставка? Тогда поля наверное надо конкретно прописывать, а не * ставить. В таблицах zan1, lnk, r2 есть поля с одинаковыми именами.


                   
                  scorpio ©
                   
                  (2005-01-26 14:56)
                  [3]

                  ЕСТЬ 4 таблицы ZA, LNK, R2, DE
                  Мне нужно получить 5-ую при определенных условиях, первые три проходят и создают zaza, zal, zan1, а вот последнее ключевое у меня не проходит.


                   
                  Johnmen ©
                   
                  (2005-01-26 17:07)
                  [4]

                  Вообще-то сначала прописывают текст запроса с параметрами, а потом значения этих параметров определяют. А не наоборот…:)


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

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

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

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

                  Возможно, вам также будет интересно:

                • Ошибка access в операции должен использоваться обновляемый запрос
                • Ошибка access violation в готике 2 возвращение
                • Ошибка access violation no rtti data
                • Ошибка access violation diablo 2
                • Ошибка access violation at adress

                • Понравилась статья? Поделить с друзьями:
                  0 0 голоса
                  Рейтинг статьи
                  Подписаться
                  Уведомить о
                  guest

                  0 комментариев
                  Старые
                  Новые Популярные
                  Межтекстовые Отзывы
                  Посмотреть все комментарии