|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.12.2013, 14:15 | #1 |
Пользователь
Регистрация: 28.10.2013
Сообщений: 34
|
Проверка записи в БД
Доброго времени суток!
Имеется таблица(DBGrid) куда заносится название группы и факультета(с помощью Edit'ов), но т.к. оба этих значения являются первичными ключами и через эти поля связаны с другими таблицами, при вводе одинаковой группы и факультета, прога выдаёт ошибку, что такие поля уже есть... и прога закрывается, подскажите пожалуйста как сделать проверку перед вводом новых значений в таблицу. Ввод новых значений в таблицу (происходит на новой форме) dmSchedule.dstSchedule.Insert; dmSchedule.dstSchedule.FBN('NAME_FA KULT').AsString := Edit1.Text; dmSchedule.dstSchedule.FBN('NAME_GR OUPE').AsString := Edit2.Text; |
25.12.2013, 14:29 | #2 |
Пользователь
Регистрация: 28.10.2013
Сообщений: 34
|
получилось ввести проверку :
If fmAddF.Edit2.Text = dmSchedule.dstSchedule.FBN('NAME_GR OUPE').AsString then begin ShowMessage('qwe'); dmSchedule.dstSchedule.Cancel; end; но всё равно после нажатия на ОК вылетает критическая ошибка |
25.12.2013, 14:50 | #3 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
If fmAddF.Edit2.Text = dmSchedule.dstSchedule.FBN('NAME_GR OUPE').AsString
это проверка только одной (текущей) строки и только по одному "ключу". Вам надо ВСЕ записи Код:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
25.12.2013, 15:25 | #4 | |
Пользователь
Регистрация: 28.10.2013
Сообщений: 34
|
Цитата:
|
|
25.12.2013, 19:38 | #5 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
перво-наперво показать здесь структуру таблиц.
с указанием типов полей и ключей т.к. телепатия подсказывает ту же проблему
программа — запись алгоритма на языке понятном транслятору
|
25.12.2013, 23:51 | #6 |
Пользователь
Регистрация: 28.10.2013
Сообщений: 34
|
Спасибо, что откликнулся) скидываю модель БД, не нашёл как пометить внешние ключи так что напишу что в таблицах это поля(NAME_FAKULT и NAME_GROUPE), которые являются первичными в таблице (FAKULT)
задание звучит так : Приложение должно осуществлять следующие основные функции: – добавление нового расписания; – редактирование существующего расписания; – просмотр расписания студентов заданного факультета и группы; П.С. то что везде стоит варчар как тип, эт я просто не заморачивался хотя там не везде он подходит |
26.12.2013, 09:39 | #7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
позвольте спросить
для чего в каждой таблице поле ID. ну там где оно PrimaryKey еще как-то (на самом деле очень смутно) понятно, но вот для FACULT ее смысл полностью отсутствует (в представленном виде). вы правы в том что внешние ссылки должны быть на PrimayKey, но кто вам сказал, что при этом надо полностью ПОВТОРЯТЬ всю информацию (полное название группы/факультета). Ключом м.б. и другое поле (более короткое и более удобное для внутренней работы СУБД). А для защиты от повторов существуют и другие механизмы (Unique Index). Цитата:
Код:
(для этого должны быть отдельные таблицы наподобие FACULT) (PREDMET, PREPOD) Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 26.12.2013 в 09:46. |
|
26.12.2013, 12:49 | #8 | |
Пользователь
Регистрация: 28.10.2013
Сообщений: 34
|
Цитата:
dmSchedule.dstSchedule.Transaction. Commit; данные появляются в DBGride, но почему то не заносятся в базу, а вот если в FIBDataSet поставить свойство AutoCommit в значение TRUE то всё отлично заносится, но хотелось бы чтобы он не автоматом заносил а только с моей подачи... вы случайно не в курсе где косяк? Последний раз редактировалось Teror4uks; 26.12.2013 в 13:09. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка существования записи | StudentMarat | Помощь студентам | 4 | 13.11.2011 20:26 |
Проверка существования записи | NikkMih | C/C++ Базы данных | 3 | 19.10.2011 11:26 |
Проверка на дублирующиеся записи MySQL | g04 | БД в Delphi | 3 | 18.03.2011 14:31 |
Проверка на совпадение записи | Lokos | БД в Delphi | 4 | 29.04.2010 08:55 |
Проверка на совпадение записи | Lokos | БД в Delphi | 0 | 29.04.2010 03:51 |