Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема со связью один ко многим / 13 сообщений из 13, страница 1 из 1
19.01.2005, 19:28:45
    #32873327
alef120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Помогите решить проблему

есть две таблицы: Оплата(с двойным ключем "№Оплат" , "Поставщик") и ПОСТАВКА(с двойным ключем "№Поставка" и "Поставщик")
Связаны он по полям "№Оплат" и "Поставщик"
Я получаю несколько поставок за месяц от одного поставщика,
а счет на оплату получаю в конце месяца
Каждую поставку я должен внести сразу в таблицу,но не могу этого сделать,
так как № счета на оплату("№Оплат") будет известен только в конце месяца
...
Рейтинг: 0 / 0
19.01.2005, 19:52:55
    #32873353
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Не надо делать связь по такому полю. Поле для связи пусть будет просто счетчик, а реальный номер пусть заносится в другое поле. (Оба поля на стороне "1".)
...
Рейтинг: 0 / 0
19.01.2005, 20:26:10
    #32873380
alef120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Владимир СанычНе надо делать связь по такому полю. Поле для связи пусть будет просто счетчик, а реальный номер пусть заносится в другое поле. (Оба поля на стороне "1".)
да, но как я потом найду все поставки, относящиеся к №накладной?
...
Рейтинг: 0 / 0
19.01.2005, 20:32:34
    #32873387
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
alef120да, но как я потом найду все поставки, относящиеся к №накладной?
До того как номер появился или после? До - никак. После - через связь между таблицами.
...
Рейтинг: 0 / 0
19.01.2005, 20:47:03
    #32873396
alef120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Владимир Саныч alef120да, но как я потом найду все поставки, относящиеся к №накладной?
До того как номер появился или после? До - никак. После - через связь между таблицами.
Что-то я не очень понимаю
Поставок у меня много, а накладная(Оплата) одна
Если я ставлю счетчик на "Оплата", то с чем мне его связать в "Поставка"
...
Рейтинг: 0 / 0
19.01.2005, 21:05:06
    #32873413
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Со специальным полем, через которое и пойдет связь. А поле с номером оплаты там не нужно.
...
Рейтинг: 0 / 0
19.01.2005, 21:58:48
    #32873444
alef120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Владимир СанычСо специальным полем, через которое и пойдет связь. А поле с номером оплаты там не нужно.
но тотогда получится связь один к одному?
...
Рейтинг: 0 / 0
19.01.2005, 22:00:20
    #32873445
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Почему??? Что, любая связь двух таблиц через поля - это один-к-одному???
...
Рейтинг: 0 / 0
19.01.2005, 22:25:51
    #32873457
alef120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Владимир СанычСо специальным полем, через которое и пойдет связь. А поле с номером оплаты там не нужно.
Объясни пожалуйста
Если в тблОплата ключ Счетчик, то в связываемое поле тблПоставка я должен
внести такой же номер, как и в счетчике, а откуда я его буду знать?
Ведь сначала я заполняю тблПоставка
...
Рейтинг: 0 / 0
19.01.2005, 22:38:14
    #32873461
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Значит, надо с первой же поставкой, относящейся к определенной оплате, заносить запись в таблицу оплат. Хотя бы просто пустую запись, которая будет заполнена данными позже. Да иначе и нельзя, потому что при связи один-ко-многим нельзя заполнять таблицу на стороне "многие", пока нет соответствующей записи в таблице на стороне "один".
...
Рейтинг: 0 / 0
19.01.2005, 23:21:18
    #32873473
alef120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Владимир СанычЗначит, надо с первой же поставкой, относящейся к определенной оплате, заносить запись в таблицу оплат. Хотя бы просто пустую запись, которая будет заполнена данными позже. Да иначе и нельзя, потому что при связи один-ко-многим нельзя заполнять таблицу на стороне "многие", пока нет соответствующей записи в таблице на стороне "один".
Для этого мне не нужно добавлять поле Счетчик, я могу просто в поле №Оплат
внести временный номер,а потом просто исправить его.
Было бы все просто, если бы я получал счет стабильно 1-го числа
но проблема в том , что иногда поставщики выписыват счет на каждую поставку, иногда за неделю , иногда за пол-года и я не знаю заранее.
и если я вдруг получил два счета и хочу удалить лишнюю поставку ТОЛЬКО СО СЧЕТА, который я уже создал предварительно(т.е. разделить поставки на два счета), то запись удаляется и с тблПоставка
Подскажи, как мне обойти эту прблему

з.ы.Если не связывать таблицы, а работать только через VBA, то все работает,но хочется сделать ПРАВИЛЬНУЮ базу
...
Рейтинг: 0 / 0
19.01.2005, 23:27:06
    #32873477
alef120
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
Заканчиваю на сегодня
Надеюсь завтра получить ответ
Саныч, особенно на тебя надеюсь!
...
Рейтинг: 0 / 0
19.01.2005, 23:31:45
    #32873479
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со связью один ко многим
alef120Для этого мне не нужно добавлять поле Счетчик, я могу просто в поле №Оплат
внести временный номер,а потом просто исправить его.
А вот это нарушение нормализации базы. Исправлять-то придется в нескольких местах (несколько записей в одной таблице и одна в другой). А по моему подходу - только в одной записи одной таблицы.

alef120и если я вдруг получил два счета и хочу удалить лишнюю поставку ТОЛЬКО СО СЧЕТА, который я уже создал предварительно(т.е. разделить поставки на два счета), то запись удаляется и с тблПоставка
Если надо стереть поставку, то надо стереть одну запись из таблицы поставок. Либо можно не стереть, а просто поменять в ней код оплаты (как бы отнести ее к другой оплате). Если при этом стирается еще что-то, значит просто где-то в программе баг.

alef120з.ы.Если не связывать таблицы, а работать только через VBA, то все работает,но хочется сделать ПРАВИЛЬНУЮ базу
Если задача сделать именно правильную, то делай так, как я сказал.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема со связью один ко многим / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]