C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Key violation
maikl
Отправлено: 03.01.2004, 13:03


Станционный диспетчер

Группа: Участник
Сообщений: 135



У меня программа вроде работала, теперь ошибка вот такая "Key violation" вылазеет когда вношу изменения в БД. У меня в таблице содержаться 3 Lookup поля, т.е значения от туда берутся из других таблиц. До этого все вроде как то работало без ошибок, данные заносились в таблицу без ошибок. Все началось с того что я сделал еще одну таблицу в которой так же были такие же Lookup поля, и вот началась такая ерунда с этой ошибкой. Потом все вернул как и было до того как все работало, но при добавлении записей все равно ошибка остается, а при чем она там. Ну перевел я то что он написал Key — идентификатор записи или группы записей в файле данных (это если применительно к БД), violation — противоречие или нарушение. Подскажите кто нибудь, курсовик скоро сдавать, а тут такая ошибка, в общем не знаю что делать.
Nick
Отправлено: 03.01.2004, 16:07


Машинист паровоза

Группа: Участник
Сообщений: 247



Или в главной таблице не заполняется ключевое поле, или ты установил зависимость
Поле 3 (Таблица 1) <--> Поле 1 (Таблица 2) и она не выполняется.
Но скорей всего первое.
maikl
Отправлено: 04.01.2004, 05:59


Станционный диспетчер

Группа: Участник
Сообщений: 135



Да может быть и такое, что не заполняется ключевое поле, но по каким причинам это может быть вызвано, раньше заполнялось, а тут вдруг с несчего не заполняется.
Nick
Отправлено: 04.01.2004, 10:34


Машинист паровоза

Группа: Участник
Сообщений: 247



Какая база данных ?
maikl
Отправлено: 04.01.2004, 10:52


Станционный диспетчер

Группа: Участник
Сообщений: 135



БД Paradox, использую компонент Table, хотел Query сначало использовать но с ним при использовании Lookup полей не вносились изменения в БД. Только не говори что лучше использовать IBase, мне уже самому Paradox не нравиться, курсовик скоро сдавать времени все переделывать нету.
Георгий
Отправлено: 04.01.2004, 12:46


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



может таблица разрушалась — с парадоксом так бывает.
пробовал удалить и заново, с нуля, таблицы данными заполнить?
maikl
Отправлено: 04.01.2004, 13:01


Станционный диспетчер

Группа: Участник
Сообщений: 135



Спасибо за совет не пробывал, но мысли такие были, у меня было такое уже один раз, но тогда таблица у меня просто не открывалась, попробую конечно. Хотелось бы знать чего не надо делать что бы этого не случилось. И если можно еще один вопрос, у меня создаются файлы какие то, расширение у него MB (20 файлов уже), такое расширение уже где то видел, не могу вспомнить где, до этого в своих проектах такого не замечал.
Nick
Отправлено: 04.01.2004, 14:58


Машинист паровоза

Группа: Участник
Сообщений: 247



в файлах MB хранятся донные blob полей.

При потере MB таблица недоступна вообще (это было в Дос может сейчас все изменилось). Я один раз нарвался, до сих пор обхожу блобы стороной.

Проверь еще заполняются ли в связанных полях коды из Lookup таблиц.
Возможно на этих полях стоит ограничение — должны содержать код из связанных таблиц.
CoderDecoder
Отправлено: 05.01.2004, 14:40


Ученик-кочегар

Группа: Участник
Сообщений: 26



На счет Key violation ! Ущё одно недоразумение — строю мастер\дитейл таблицы, где скажем полю GoodID равным 0001 соответствуют поля GoodID из дитейл таблицы с теми же значениями 0001. А при этом вылетает ошибка Key violation. Ну и как тут быть?
maikl
Отправлено: 05.01.2004, 14:48


Станционный диспетчер

Группа: Участник
Сообщений: 135



QUOTE (Георгий @ 04/01/2004, 21:48)
может таблица разрушалась — с парадоксом так бывает.
пробовал удалить и заново, с нуля, таблицы данными заполнить?

Попробывал так сделать, удалил все таблицы, и сделал точно такие же, ошибка не исчезла. Самое интересное, заношу с самого начало в таблицу данные, пробую добавить 10 записей в таблицу в итоге заносятся только 3 из них, при этом эта ошибка показалась, затем удалил все записи из таблицы пробую добавить 3 записи, добавляются только 2. Данные у меня кешируются заносятся в таблицу при нажатии на кнопку "Сохранить изменения". Что такое не знаю, почему бы ему не занести все в БД.
*Helly*
Отправлено: 05.01.2004, 16:31


Ученик-кочегар

Группа: Участник
Сообщений: 12



А изменения сохраняются в правильном порядке: сначала master, а потом detail?
maikl
Отправлено: 06.01.2004, 05:30


Станционный диспетчер

Группа: Участник
Сообщений: 135



В общем даже не знаю, все перепробывал. Кому не лень можите посмотреть сами, проект выкладываю сдесь. В меню справочники есть вкладка "Нагрузка преподавателей" там то при добавленни записей и вылазеет ошибка. Все замечания и предложения приму, а они мне очень нужны. Если че мыльте мне : phantom@tgu.ru или maikls@rambler.ru, можно и по ISQ № 251092703, или оставляйте прямо сдесь. Для запуска проекта у вас еще должен быть установлен globuslib. Ну все, заранее спасибо.


User Attached Image Скачать файл
Proga.rar


*Helly*
Отправлено: 06.01.2004, 14:59


Ученик-кочегар

Группа: Участник
Сообщений: 12



Хм.. У меня все работает.
maikl
Отправлено: 06.01.2004, 15:04


Станционный диспетчер

Группа: Участник
Сообщений: 135



QUOTE (*Helly* @ 07/01/2004, 00:01)
Хм.. У меня все работает.

Я пробывал на разных компах, нигде не работает. Наверное надо мной злой рок. Попробуй еще раз, алгоритм такой: Заходишь в раздел Справочники-> Нагрузка преподавателей -> Добавляешь 5 записей -> Сохранить изменения, 100 % должно появиться сообщение с надписью Key Violation.
*Helly*
Отправлено: 06.01.2004, 16:25


Ученик-кочегар

Группа: Участник
Сообщений: 12



У тебя в таблице Nagr_prep.db ключ только из одного поля [DICIP_ID],
а надо из трех — [DICIP_ID, ID_PREP, GRUPPA_ID]. Потому и key vialation — ведь в этом случае сколько у тебя дисциплин, столько и записей в теблице "Нагрузка преподавателей" (по одной на каждую дисциплину) smile.gif
*Helly*
Отправлено: 06.01.2004, 16:27


Ученик-кочегар

Группа: Участник
Сообщений: 12



А CacheUpdates сделай false в Table1. Оно там триста лет не нужно
maikl
Отправлено: 06.01.2004, 16:35


Станционный диспетчер

Группа: Участник
Сообщений: 135



QUOTE (*Helly* @ 07/01/2004, 01:29)
А CacheUpdates сделай false в Table1. Оно там триста лет не нужно

Ну не знаю, ошибка в любом случаи не ушла, а так пришлось сделать мне, потому что без этого тоже не работало, а вот сделал кеширование и все сразу заработало, пока как уже говорилось эта ошибка не появилась, самое главное что так как вот сейчас ты смотришь на мой проект все работало, не знаю опыта у меня мало, может сделал что то чего нельзя делать, а что не вижу.
*Helly*
Отправлено: 06.01.2004, 16:53


Ученик-кочегар

Группа: Участник
Сообщений: 12



Я на рамблер тебе свой вариант отправила. Проверь, как он у тебя работает.
*Helly*
Отправлено: 06.01.2004, 16:55


Ученик-кочегар

Группа: Участник
Сообщений: 12



Может у меня работает, потому что я lookup-поля попеределывала в Table1
maikl
Отправлено: 06.01.2004, 16:58


Станционный диспетчер

Группа: Участник
Сообщений: 135



В смысле удалила старые, и сделала новые, т.е заново связала их и все ???
*Helly*
Отправлено: 06.01.2004, 17:05


Ученик-кочегар

Группа: Участник
Сообщений: 12



Вроде как да, можешь сравнить со своим проектом, если почта пришла. У тебя там еще ненужные (фактически дублирующиеся) поля были. Ну и составной ключ поставила, естественно. Без этого уж точно работать не будет ничего.
maikl
Отправлено: 06.01.2004, 17:32


Станционный диспетчер

Группа: Участник
Сообщений: 135



Огромное спасибо, осталось только разобраться и довести до разума эту программу, теперь мне уже не свернут голову, а то сегодня преподаватель сказала что если не сделаю ее то будет плохо, теперь неделя что бы все доделать. Главное вроде все работает, а то что ты порезала ее, то ничего страшного.
maikl
Отправлено: 07.01.2004, 11:46


Станционный диспетчер

Группа: Участник
Сообщений: 135



Рано радовался, эта ошибка пропала лишь частично, если добавить в список дисциплины более 3 повторяющихся дисциплин то она вновь появляется. Т.е получается так что в это поле нельзя заносить более 3-х повторяющихся дисциплин. Ну а в остальных случаях теперь все работает.
maikl
Отправлено: 08.01.2004, 11:51


Станционный диспетчер

Группа: Участник
Сообщений: 135



Огромное спасибо **Helly** за решение проблем.

Вернуться в Работа с базами данных в C++Builder