![]() |
|
Модераторы: LSD |
![]()
|
|
| samec |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Здравствуйте!
Вопрос такой: Есть две таблицы: Заявки и Грузы | ЗАЯВКИ | | ГРУЗЫ | ----------------- ------------------ | Перв.Ключ | 1 ------ * | Внешн.Ключ | | Поле1 | | Перв.Ключ | | Поле2 | | Поле1 | | Поле3 | | Поле2 | | Поле4 | | Поле3 | | и.т.д. | | и.т.д | ----------------- ------------------- В программе добавляю "новую заявку". В одной заявке может быть несколько грузов. Заполняю поле1, поле2, поле3 и т.д (в "новой заявке"). Доходит очередь добавлять грузы. Добавляю первый груз. Вот тут возникает проблема: Так как заявка ещё не заполнена до конца, а следовательно ещё не запомнена, то значение её Первичного ключа неизвестно! (он автоинкрементный и присваивается автоматически, при добавлении записи в базу.). А для связи с грузом он нужен! Выхожу из положения так: Нарушая условия целостности данных, присваиваю Внешнему ключу груза значение -1. Таким же образом добавляю нужное количество грузов. Затем заполняю оставшиеся в заявке поля и при нажатии на кнопку "Запомнить", после того, как запись ЗАЯВКА добавлена и значение её Первичного ключа стало известно, просматриваю таблицу грузов и все "-1" заменяю на это самое значение Первичного ключа добавленной заявки. Есть ли вариант, чтобы нарушение условий целостности данных не происходило? Или только так, как сделал я??? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
||||
|
||||
| samec |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
заказчик мешает. Сказано было сделать именно так... Тоесть ввод осуществляется строго по "плану", сначала "это", а потом "то".
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
||||
|
||||
| TicTak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 2.3.2005 Репутация: 1 Всего: 1 |
А зачем ты хочеш присвоить сразу внешний ключ груза? Ты его хочеш ручками вносить? Пусть заказчик заполняет нужные ему поля на твоей форме, а ключ присваивается при нажатии на "запомнить". Заказчик не должен вообще ручками вносить идентификатор ключа.
|
|||
|
||||
| samec |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Заказчик сказал: "Должно быть окошко, в котором я заношу все данные по заявке. К данным по заявке относятся: место назначения, место отправления, наименование продукции, количество, назначение (и ещё несколько полей), отправитель, получатель, способ транспортировки груза и т.д." то что выделенно жирным и есть ГРУЗ. Один. А в каждой заявке их может быть, ну грубо говоря до 30 штук. вот. Добавлено через 3 минуты и 50 секунд
программно присваиваю. Ручками доступа к ключевым полям не имеется. |
||||
|
|||||
| TicTak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 2.3.2005 Репутация: 1 Всего: 1 |
Ну так пусть он заполняет все данные в полях, а при нажатии на твою магическую кнопку все данные и занесутся в БД. И будеш там сохранять заявки и грузы в удобном порядке для тебя. Заполнение полей формы не обязывает заносить данные сразу в таблицы. |
|||
|
||||
| samec |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Дело в том, что для грузов заранее нельзя знать сколько будет полей (толи один будет груз, а толи 15), тоесть на форме заранее не разместишь определенное количество полей ввода, поэтому и приходится каждый вновь добавленны груз писать в базу. Это сообщение отредактировал(а) samec - 8.6.2007, 13:18 |
|||
|
||||
| TicTak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 2.3.2005 Репутация: 1 Всего: 1 |
А если создать на форме поместить таблицу для вводов новых грузов. Только таблицу, которая не привязывается напрямую с бд. Повносить туда данные, а потом её всю скопом и занести в бд.
|
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 7 Всего: 44 |
TicTak,
+1 например в ClientDataSet -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |