Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO: ошибка: "Определено слишком много полей." 
:(
    Опции темы
grh
Дата 21.10.2011, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



Всем привет. У меня такая проблема. Программа, написанная на Delphi, работает с mdb-файлом. В программе предусмотрена возможность добавлять и удалять колонки в таблицы mdb-файла. При попытке добавить очередную колонку в таблицу иногда появляется сообщение: "Определено слишком много полей.", хотя на самом деле полей в таблице не так уж и много. Как избавиться от этой ошибки?
PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Не так уж много это сколько?

И как добавляете удаляете колонки?

Добавлено через 45 секунд
И под колонкой подразумевается все-таки столбец или запись в таблице?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 21.10.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(chip_and_dayl @  21.10.2011,  10:13 Найти цитируемый пост)
И под колонкой подразумевается все-таки столбец или запись в таблице? 

Ну, вряд ли под колонкой можно иметь в виду запись в таблице. smile 
Цитата(grh @  21.10.2011,  09:23 Найти цитируемый пост)
Как избавиться от этой ошибки? 

Удалить лишние поля. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
rdama
Дата 21.10.2011, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



На другом форуме вам уже ответил.
PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата

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

Вот в этом и проблема, у меня есть сомнения по 

Цитата

При попытке добавить очередную колонку в таблицу иногда появляется сообщение

Не знаю как у вас, но мои приложения в базу добавляют/удаляют записи, А не колонки. 

Есть иногда случаи когда нужно программно добавить колонку, но .....


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
rdama
Дата 21.10.2011, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Да нет. Тут именно про колонки и человеку на другом форуме я уже отписал ответ. Это просто дубль в надежде что кто-нибудь напишет решение по проще. Или просто человек постил на несколько форумов.
Хотя там пост уже сутки.
Если интересно, то вот ссылка на топик.
ADO: добавление и удаление полей в таблицу


Это сообщение отредактировал(а) rdama - 21.10.2011, 10:54
PM MAIL   Вверх
Данкинг
Дата 21.10.2011, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(rdama @  21.10.2011,  11:50 Найти цитируемый пост)
 я уже отписал ответ. 

Сжать базу просто надо программно, что ли? Учтём, хотя не факт, что подобное пригодится в реале. smile 
Цитата(chip_and_dayl @  21.10.2011,  11:36 Найти цитируемый пост)
Вот в этом и проблема, у меня есть сомнения по 

Но сообщение об ошибке-то явно с полями не связано. Да и число строк в таблице MDB вроде не ограничено.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
rdama
Дата 21.10.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Причем здесь сжатие. Там приведен ссыль на статью от мелкомягких о том что это бага в Access.
С тем что существует внутренний счетчик на количество полей в таблице.
И что при добавлении поля он увеличивается на 1. А при удалении не уменьшается.
И приведено их решение данной проблемы. Также методы воспроизведения.
Я предложил немного иное решение проблемы.
Т.к. смысл всех этих манипуляций в том, что надо почистить меты для данной таблицы.
Вот и все. Сжатие ничего не даст. Меты не изменятся.

PM MAIL   Вверх
grh
Дата 21.10.2011, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



ATPokasateli: TADOTable;
ADOQuery1: TADOQuery;

Добавляю 10 столбцов процедурой:
procedure TForm1.BtnAddClick(Sender: TObject);
var i:integer;
begin
  for i:=1 to 10 do
  begin
    ADOQuery1.SQL.Text:='ALTER TABLE Показатели ADD COLUMN [П'+inttostr(i)+'] FLOAT';
    ADOQuery1.ExecSQL
  end;
  ATPokasateli.Active:=false;
  ATPokasateli.Active:=true
end;

Удаляю все столбцы, кроме первого, процедурой:
procedure TForm1.BtnClearClick(Sender: TObject);
var i:integer;
begin
  ATPokasateli.Active:=false;
  ATPokasateli.Active:=true;
  for i:=1 to ATPokasateli.FieldCount-1 do
  begin
    ADOQuery1.SQL.Text:='ALTER TABLE Показатели DROP COLUMN ['+ATPokasateli.Fields[i].FieldName+']';
    ADOQuery1.ExecSQL
  end;
  ATPokasateli.Active:=false;
  ATPokasateli.Active:=true
end;

Ошибка возникает даже когда в таблице ATPokasateli всего один столбец

rdama.
Ваш ответ я прочитал. Спасибо. Хотелось бы узнать более простой способ, если он есть.
PM MAIL   Вверх
rdama
Дата 21.10.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Ну проще только пересозданием. Ибо то что в статье. С экспортом без Access не обойтись.
PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



grh
А зачем вообще добавление и удаление столбцов?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 21.10.2011, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А зачем столбцы постоянно добавлять? Может быть, тут изначально неправильное проектирование БД?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
rdama
Дата 22.10.2011, 07:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Данкинг, это уже другой вопрос.
Вопрос проектирования БД системы.
Ясно что скорее всего здесь ошибки проектирования, раз возникла необходимость добавлять поля и удалять их.
Но человек не просит помощи в проектировании.
И самое главное не предоставляет информации о проекте который делает.
Он задал конкретный вопрос и получил ответ.
Если он захочет спросить, все ли он делает правильно.
И опишет задачу.
То конечно мы ему все дружно поможем.
 Ну а так абсолютно солидарен с вами.
100% ошибки проектирования и недостатки при постановке задачи.
Раз возникла такая необходимость
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.