Страница 1 из 1
ADO... проблема с базой Help!!!
Добавлено: 29 ноя 2006, 17:51
Lex87
Здравствуйте!!! Help плиз...
В Delphi новичок создаю программу. База данных в access. В Delphi базу привязываю через ADO. Проблема в том что при заполнении значений в сетке DB Grid вылазиет ошибка: "EOleException with message 'Недостаточные или неполные сведения о ключевом поле. Обновление влияет на слишком большее число строк'.
В чём проблема не знаю... подскажите, кто знает. ОЧЕНЬ надо!!!
Вот архив с моей прогой...посмотрите кому не лень пожалуйста.

Re: ADO... проблема с базой Help!!!
Добавлено: 29 ноя 2006, 20:03
Dr_Grizzly
Блин, у меня шары выпали из орбит

Ты пробовал поставить контрольную точку на Button1 и запустить прогу, а потом с F8 смотреть что она делает? Я думаю, что не пробовал, т.к. она такую хрень там выполняет, с пустыми строками как-то работает, считая что там какие-то действия, я ваще поражаюсь как компилятор съел это перед запуском, извиняюсь конечно...
Совет первый, переделай While do на repeat until
AdoTable1.first;
repeat
...
adotable1.next;
until adotable1.eof;
уже будет что-то проясняться, и наглядней выглядеть
Совет второй, обращайся к полям как Adotable1<имя поля>.text
например Adotable1IdTab.text.
Совет третий, чтобы узнать кол-во записей в таблице используй
Adotable1.recordcount
я то у тебя много циклов со счетчиками записей.
Re: ADO... проблема с базой Help!!!
Добавлено: 29 ноя 2006, 20:05
Dr_Grizzly
И по-моему в конфигурации базы на аксесе ты используешь поля типа численные, одинарные с точкой, сегодня только сталкнулся с этой проблемой, лучше двойной с точкой. Меньше хлопот
Re: ADO... проблема с базой Help!!!
Добавлено: 02 дек 2006, 09:22
SergeyS
Очень интересный случай. У меня тоже шары чуть не выпали при попытке продебажить программу.
А что ещё интереснее, так это то, что когда я в самом начале процедуры TForm1.Button1Click написал свой код - один в один к его (не копировал, а именно набрал с нуля) то дебагер определил его правильно, стоило мне скопировать строку из оригинального кода и у дебагера сносило крышу. Создал новый проект, вставил ADOConnection, ADOTable, DataSource, Grid, Button, событие Button1Click - все ок, написал первую часть его кода, все ок, заменил написанное мной его аналогом и у деббагера снесло крышу. Очень интересно, я такого никогда не встречал.
Lex, делай следующее: напиши программу заново, не копируй старый код (перепиши построчно), отлаживай программу после каждого этапа. Это наверное единственный хороший совет в твоём случае.
Re: ADO... проблема с базой Help!!!
Добавлено: 02 дек 2006, 09:47
SergeyS
Нашёл способ побороть проблему с дебаггером, нужно весь текст Unit1.pas скопировать в Far manager'е (в других программах не пробовал) и заменить им текст Unit1.pas в Delphi IDE. После этого программа начала нормально дебажиться. Думаю что там где-то закрался левый символ, IDE его не отображала, но обрабатывала и путалась, а фар его не копирует следовательно копирование позволило избавиться от этого символа.
А ошибка у меня выходит следующая Invalid floating operation - там у тебя деление на ноль, а это логическая ошибка и искать её уже тебе

Re: ADO... проблема с базой Help!!!
Добавлено: 05 дек 2006, 15:51
Игорь Акопян
прикола ради скачал... под Д5 открыл с большим трудом проигнорив кучу всяких ошибков, в результате чего не запускал

Непонятки:
1) жмакаем кнопку и прога 6 раз пролетает одинаковые операции (для разных полей) в результате на экране в Лейблах имеет результат последнего вычисления...
2) почему бы не использовать для вывода в TLabel стандартную фукнцию форматирования Format()?
3) предполагаю в процессе работы мелькание в TDBGrid связанное с перемещением активной записи, чтобы такого не было используют парные функции DisableControls/EnableControls
Возражу
Dr_Grizzly, менять While на Repeat я бы не стал
Для подсчёта всяких сумм (и количеств) напрашивается SQL-запрос...
Кроме того те 6 блоков также напрашиваются в процедуру
