Есть таблица Travel, заполнять которую планируется через форму где выбирается человек из списка, находятся все связаные с ним поездки и добавляются новые.
Подскажите, пожалуйста, несколько моментов: 1) Как связать две колонки (LocationID_from и LocationID_to) в Travel c таблицей Location? Подбовал связать one-to-many сделать из Location в Travel (вроде логично для меня выглядело это но аксес не дает такое сделать). Подозреваю что надо many-to-many, но не могу осилить как правильно это оформить, не двумя же одинаковыми таблицами LocationFrom и LocationTo.
1.1) как сделать (LocationID_from и LocationID_to) выпадающими списками на основании Location.Location (который нельзя было бы модифицировать из Travel)?
2) В форме Travel subform отображаются только те записи из Travel, у которых есть значение в колонке ScheduleID (13 записей). Соответственно в основной форме Travel Arrangement при выборе определенных людей не отображатся их поездки, если не указан ScheduleID. Как сделать чтобы отображались все 24 записи?
ps. по второму вопросу, не уверен, стоит ли создавать новую тему, если надо то намекните, удалю здесь, и создам новую..
Доброго времени,
Есть таблица Travel, заполнять которую планируется через форму где выбирается человек из списка, находятся все связаные с ним поездки и добавляются новые.
Подскажите, пожалуйста, несколько моментов: 1) Как связать две колонки (LocationID_from и LocationID_to) в Travel c таблицей Location? Подбовал связать one-to-many сделать из Location в Travel (вроде логично для меня выглядело это но аксес не дает такое сделать). Подозреваю что надо many-to-many, но не могу осилить как правильно это оформить, не двумя же одинаковыми таблицами LocationFrom и LocationTo.
1.1) как сделать (LocationID_from и LocationID_to) выпадающими списками на основании Location.Location (который нельзя было бы модифицировать из Travel)?
2) В форме Travel subform отображаются только те записи из Travel, у которых есть значение в колонке ScheduleID (13 записей). Соответственно в основной форме Travel Arrangement при выборе определенных людей не отображатся их поездки, если не указан ScheduleID. Как сделать чтобы отображались все 24 записи?
ps. по второму вопросу, не уверен, стоит ли создавать новую тему, если надо то намекните, удалю здесь, и создам новую..user0
Здравствуйте. Если таблица Location нужна только для создания полей со списками, то необязательно связывать её с Travel. Если же всё-таки нужно связать, то связываем ключевое поле LocationID с полями LocationID_from и LocationID_to При создании второй связи Access ругнётся, что типа связь уже существует, но Вы будьте настойчивы и на схеме появится второй экземпляр таблицы Location с нужной связью.
По второму вопросу - надо изменить параметры объединения
Здравствуйте. Если таблица Location нужна только для создания полей со списками, то необязательно связывать её с Travel. Если же всё-таки нужно связать, то связываем ключевое поле LocationID с полями LocationID_from и LocationID_to При создании второй связи Access ругнётся, что типа связь уже существует, но Вы будьте настойчивы и на схеме появится второй экземпляр таблицы Location с нужной связью.
По второму вопросу - надо изменить параметры объединенияPelena
Ковыряю форму дальше, и возникло еще несколько вопросов по данному примеру, подскажите, пожалуйста:
1) Я правильно понимаю, что если использовать таблицу Location для комбобоксов не связывая ее с Travel, то в Travel будут храниться не ID, а сами названия городов без возможности потом массово изменить значения что-либо в Location? Я к тому что, какие профиты у данного способа, зачем так делать, раз уж мы в аксесе и нам бесплатно дана возможность залинковать таблицы (от этого и размер БД выиграет).
2) Как добавить комбобокс к колонке flight в Travel subform, чтобы он брал значения из Schedule.Flight? Делаю по аналогии с LocationID / LocationID_from, но если просто в Control Source добавить Flight, а Row Source в Schedule то в комбобоксе отображается только ScheduleID. Причем нельзя задать значения для пустых ячеек, только изменить заполненые.
Ковыряю форму дальше, и возникло еще несколько вопросов по данному примеру, подскажите, пожалуйста:
1) Я правильно понимаю, что если использовать таблицу Location для комбобоксов не связывая ее с Travel, то в Travel будут храниться не ID, а сами названия городов без возможности потом массово изменить значения что-либо в Location? Я к тому что, какие профиты у данного способа, зачем так делать, раз уж мы в аксесе и нам бесплатно дана возможность залинковать таблицы (от этого и размер БД выиграет).
2) Как добавить комбобокс к колонке flight в Travel subform, чтобы он брал значения из Schedule.Flight? Делаю по аналогии с LocationID / LocationID_from, но если просто в Control Source добавить Flight, а Row Source в Schedule то в комбобоксе отображается только ScheduleID. Причем нельзя задать значения для пустых ячеек, только изменить заполненые.user0
1) не правильно. Храниться будут ID. Посмотрите таблицу Travel 2) посмотрите, как сделано для LocationID_from в свойствах на вкладке Макет Число присоединенных столбцов 2, ширина столбца 0
1) не правильно. Храниться будут ID. Посмотрите таблицу Travel 2) посмотрите, как сделано для LocationID_from в свойствах на вкладке Макет Число присоединенных столбцов 2, ширина столбца 0Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
1) создавать 2 одинаковых таблицы - это что то не то, я бы предложил в Travel создать ключ LocationID, а поля LocationID_from и LocationID_to перенести в таблицу LocationID. А не плодить лишнюю таблицу 1.1) отпадёт сам собой
user0, я решил тоже что нить написать.
1) создавать 2 одинаковых таблицы - это что то не то, я бы предложил в Travel создать ключ LocationID, а поля LocationID_from и LocationID_to перенести в таблицу LocationID. А не плодить лишнюю таблицу 1.1) отпадёт сам собойМатраскин
в интернете опять кто-то не прав
Сообщение отредактировал Матраскин - Среда, 21.12.2016, 19:50
Pelena 1) >не правильно. Храниться будут ID. Посмотрите таблицу Travel. Так ведь Travel связана с Location.. Хм, удалил связь, все равно работает.
2) Да, так работает, спасибо. По поводу невозможности записи в пустые ячейки (Can't enter data into blank field on "one" side of outer join) это я какую-то ересь делал, вроде не ту таблицу задавал в Control Source.
Матраскин Ваше сообщение опять подтолкнуло к идее добавить 3ий лист Route, где создать все возможные пары для from-to, to-from (города берутся из Location), чтобы сразу отсеять невозможные поездки. Тогда в Travel действительно можно будет оставить только ссылку на 1 ключ из Route. Эта идея была связана с зависимым выпадающим списком (например в форме выбран в поле from один город, тогда в поле to можно будет выбрать только его пары), но пока до этого еще не дошло, если это вообще так делается
Хотя теперь уже в Route опять же будут две колонки from и to (если конечно не записывать пары в одну колонку через дефис from-to).
Так, на всякий, чтобы не смущало - Schedule это просто дополнительная не обязательная информация о номере рейса, например если это перелет.
--
Подскажите, пожалуйста, еще по общей структуре. Как правильней делать, a) На каждую таблицу делать query (где например имя+фамилия в одном поле) и потом уже основе этих запросов строить формы. b) Делать формы сразу на основе таблиц. Комбинировать поля во встроенных в форму запросах. c) Можно ли в формах использовать и таблицы и запросы одновременно? Просто я попытался так сделать, но сказало что нельзя одновременно использовать таблицы и запросы на них основанные. Тут я просто криворук и надо учитывать все необходимые поля в запросе?
Pelena 1) >не правильно. Храниться будут ID. Посмотрите таблицу Travel. Так ведь Travel связана с Location.. Хм, удалил связь, все равно работает.
2) Да, так работает, спасибо. По поводу невозможности записи в пустые ячейки (Can't enter data into blank field on "one" side of outer join) это я какую-то ересь делал, вроде не ту таблицу задавал в Control Source.
Матраскин Ваше сообщение опять подтолкнуло к идее добавить 3ий лист Route, где создать все возможные пары для from-to, to-from (города берутся из Location), чтобы сразу отсеять невозможные поездки. Тогда в Travel действительно можно будет оставить только ссылку на 1 ключ из Route. Эта идея была связана с зависимым выпадающим списком (например в форме выбран в поле from один город, тогда в поле to можно будет выбрать только его пары), но пока до этого еще не дошло, если это вообще так делается
Хотя теперь уже в Route опять же будут две колонки from и to (если конечно не записывать пары в одну колонку через дефис from-to).
Так, на всякий, чтобы не смущало - Schedule это просто дополнительная не обязательная информация о номере рейса, например если это перелет.
--
Подскажите, пожалуйста, еще по общей структуре. Как правильней делать, a) На каждую таблицу делать query (где например имя+фамилия в одном поле) и потом уже основе этих запросов строить формы. b) Делать формы сразу на основе таблиц. Комбинировать поля во встроенных в форму запросах. c) Можно ли в формах использовать и таблицы и запросы одновременно? Просто я попытался так сделать, но сказало что нельзя одновременно использовать таблицы и запросы на них основанные. Тут я просто криворук и надо учитывать все необходимые поля в запросе?user0
Сообщение отредактировал user0 - Четверг, 22.12.2016, 08:16
Pelena, а можете рассказать, как работает этот "фантом"?
как я вижу : одна таблица свзязывается по Travel.LocationID_from к Location_1.LocationID, вторая Travel.LocationID_to к Location_2.LocationID. Но в Location_1. и в Location_2 одинаковые данные, и не ясно как одновременно ключ может подходить к 2ум разным полям.
user0, если не можете перетащить поля в таблицу Location, то можно сджоинить по 2ум полям сразу(составным ключом)
a,b,с) вы говорите о агрегационных таблицах, их делают в случае когда источник таблица крайне большая(долго работает ваш запрос) или надо сделать много вычислений(опять же, боремся с долгой работой запросов). но эту таблицу придётся всёравно пересчитывать в какой то момент времени(как решите). Я думаю у вас там всё просто и можно всё считать налету
Pelena, а можете рассказать, как работает этот "фантом"?
как я вижу : одна таблица свзязывается по Travel.LocationID_from к Location_1.LocationID, вторая Travel.LocationID_to к Location_2.LocationID. Но в Location_1. и в Location_2 одинаковые данные, и не ясно как одновременно ключ может подходить к 2ум разным полям.
user0, если не можете перетащить поля в таблицу Location, то можно сджоинить по 2ум полям сразу(составным ключом)
a,b,с) вы говорите о агрегационных таблицах, их делают в случае когда источник таблица крайне большая(долго работает ваш запрос) или надо сделать много вычислений(опять же, боремся с долгой работой запросов). но эту таблицу придётся всёравно пересчитывать в какой то момент времени(как решите). Я думаю у вас там всё просто и можно всё считать налетуМатраскин
Это чисто визуальное представление, чтобы связать одно поле с двумя разными полями в другой таблице
Travel.LocationID_from - это, например, поле Откуда вылет Travel.LocationID_to - это Куда вылет Списки аэропортов для этих двух полей одинаковы, поэтому берутся из одной таблицы.
Это чисто визуальное представление, чтобы связать одно поле с двумя разными полями в другой таблице
Travel.LocationID_from - это, например, поле Откуда вылет Travel.LocationID_to - это Куда вылет Списки аэропортов для этих двух полей одинаковы, поэтому берутся из одной таблицы.Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, ааа... никакой связи нет, но она есть, я понял. Спасибо за пояснение.
сделал себе тестовый пример... и вообщем чтобы связать с локейшеном нашу таблицу тревел приходиться делать так. Эти сабселекты обычно выходят боком. Я бы перепроектировал архитектуру [vba]
Код
Select l.id, l.name as nameFROM, q.nameTo from (SELECT t.id, l.name as nameTo, t.L_from_id From L l, T t where l.id = t.l_to_id) q, L l where l.id = q.L_from_id;
[/vba]
Pelena, ааа... никакой связи нет, но она есть, я понял. Спасибо за пояснение.
сделал себе тестовый пример... и вообщем чтобы связать с локейшеном нашу таблицу тревел приходиться делать так. Эти сабселекты обычно выходят боком. Я бы перепроектировал архитектуру [vba]
Код
Select l.id, l.name as nameFROM, q.nameTo from (SELECT t.id, l.name as nameTo, t.L_from_id From L l, T t where l.id = t.l_to_id) q, L l where l.id = q.L_from_id;