powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в форме Access получить значения расстояния между двумя городами.
16 сообщений из 16, страница 1 из 1
Как в форме Access получить значения расстояния между двумя городами.
    #39735890
Mushketior1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте люди добрые. Думаю что задача яйца выеденного не стоит для специалистов и должна нормально гуглится только я вопрос нормально сформулировать не могу :(

Ключевая фраза фрагменты которой использовал для поиска - Как в форме Access получить значения расстояния между двумя городами вводя их названия в произвольном порядке и нe делая при этом в таблице двух записей с разной очерёдностью названий и одним и тем-же расстоянием.



Имеется таблица. Назовём её [Расстояния_между_городами]. В ней содержатся столбцы:
[ID] - Счётчик
[Город1] - числовое поле (значение из справочника [Города])
[Город2] - числовое поле (значение из справочника [Города])
[Расстояние] - числовое поле (заполняется вручную)

[Город1] не может быть равен [Город2]

Задача:

1- В Форме в поле [Город_Отбытия] - выбираем в разворачивающемся списке город (думаю что нужно брать из справочника Города)
2 - В Форме в поле [Город_Прибытия] - выбираем в разворачивающемся списке соответстуещее значение из таблицы [Расстояния_между_городами] Содержаться это значение может и в [Город1] и в [Город2]
3 - В Форме после введения информации в поле [Город_Прибытия] обновляется поле [Расстояние] (значение берется соответственно из [Расстояние Между Городами]![ Расстояние])


Не то чтобы воoбще не вижу никакого решения но в голову всякая фигня лезет. Например 2 раза вводить значения в таблицу [Расстояния_между_городами] в разном порядке. В VBA и SQL не мостак. пользуюсь макросами и конструктором запросов. Тапками пожлуйста не кидайтесь.
Пример не выкладываю так как база не на русском и не на английском. Если без примера никак то навояю специально.

Заранее спасибо.
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39735896
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mushketior1980, в самом простейшем случае воспользуйся запросом на объединение ( UNION ALL ). Возьми одну и ту же таблицу и сделай реверс. Типо так
Код: sql
1.
2.
3.
SELECT [Город1], [Город2], [Расстояние] FROM [Расстояния_между_городами]
UNION ALL 
SELECT [Город2], [Город1], [Расстояние] FROM [Расстояния_между_городами];

Сделай этот запрос источником для формы и фильтруй по полям [Город1], [Город2] .
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39736051
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mushketior1980,
Код: vbnet
1.
2.
3.
Private sub ПолеСоСписком2_afterUpdate()
Me.Поле0=Dlookup("[Расстояние]","Расстояния_между_городами","[Город1]=" & Me.ПолеСосписком1 & " AND [Город2]=" & Me.ПолеСо списком2 & ")"
End sub
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39736058
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С такой схемой все упростится:
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39736134
Mushketior1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, С запросом на объединение всё ок! Спасибо!!!
Можно поподробнее о форме...

Данные нужно вывести в форме связанной с другой таблицей. Делаю так :


1- поле [Город1] :

SELECT Город.ID, Город (справочник)
FROM Город;

Работает

2- поле [Город2]

SELECT Запрос_Город _Объединение.Город_2, Город.Город_Название
FROM Город RIGHT JOIN Запрос_Город _Объединение ON Город.ID =Запрос_Город_Объединение.Город2
WHERE ((( Запрос_Город_Объединение.Город1)=[Формы]![Форма_В_Которой_Нужны_Данные]![Город1]));

Работает но почему то двоятся данные

Теперь вопросы:
1- Как вывести расстояние в отдельное поле? (если бы можно было связать таблицу и запрос всё было бы просто и понятно)
2- Почему двоятся данные в поле Город2 (варианты связи в конструкторе запросов пробовал все)
3- С этого в общем то надо было начать... А не занимаюсь ли я фигнёй? Может всё надо было сделать как-то по другому? :)
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39736165
Mushketior1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, Дико благодарен за пример! К сожалению я наверно плохо объяснил какой результат нужно получить или просто ещё не готов воспринять ту мудрость которая в этом примере заключена.

Нужно с помощью формы которая построена на таблице Подчинённая_форма _Инвойс_Данные сгенерировать следующую строку

"Командировка Город1-Город2" "расстояние" "стоимость за км" "сумма"

Очерёдность действий:

1-Выбираем город1
2-Выбираем город2 - после этого обновляеются поля вычислений и текстовое поле которое отвечает за "Командировка Город1-Город2"
3-Жмём кнопку - запись сохраняется, форма закрывается.

И вот теперь если можно на промере или текстом по подробнее - К какому именно месту присобачить данный ВБА код. то что на событие после обновления я уже догодался сам :)
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39736177
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вернее так:
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39736273
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может что то такое?
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741338
Mushketior1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,
Доброго врмени суток!
Прошу прощения то что так надолго бросил топик с не закрытым вопросом. Спасибо за пример.
Для новичка в ВБА там очень много кода но то с чем борюсь осталось не решенным. Хочется чтобы в таблицу расстояние между городами вводилось только 1 раз (Город 1 - Город2 - Расстояние ) а в форму можно было бы вводить в любом порядке:
Город 1 - Город2 =Расстояние
Город 2 - Город1 = Расстояние
Пока пытаюсь идти таким путём:

Private Sub Trip_City_Arrival_Change()

Me.Trip_City_Distance = DLookup("[Trip_City_Distance]", "Trip", "[Trip_City_Departure] = " & Me.Trip_City_Departure & " AND [Trip_City_Arrival] = " & Me.Trip_City_Arrival)
Me.Invoice_Data_Name = " Iškvietimo mokestis " & DLookup("[Country_City_Name]", " Trip ", "[Country_City_ID]=" & Me.Trip_City_Departure) & " - " & DLookup("[Country_City_Name]", " Trip ", "[Country_City_ID]=" & Me.Trip_City_Arrival) & " " & Me.Ïîëå41 & "%"

End Sub

Но это без реверса :(
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741339
Mushketior1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,
Доброго врмени суток!
Прошу прощения то что так надолго бросил топик с не закрытым вопросом. Спасибо за пример.
Для новичка в ВБА там очень много кода но то с чем борюсь осталось не решенным. Хочется чтобы в таблицу расстояние между городами вводилось только 1 раз (Город 1 - Город2 - Расстояние ) а в форму можно было бы вводить в любом порядке:
Город 1 - Город2 =Расстояние
Город 2 - Город1 = Расстояние
Пока пытаюсь идти таким путём:

Private Sub Trip_City_Arrival_Change()

Me.Trip_City_Distance = DLookup("[Trip_City_Distance]", "Trip", "[Trip_City_Departure] = " & Me.Trip_City_Departure & " AND [Trip_City_Arrival] = " & Me.Trip_City_Arrival)
Me.Invoice_Data_Name = " Iškvietimo mokestis " & DLookup("[Country_City_Name]", " Trip ", "[Country_City_ID]=" & Me.Trip_City_Departure) & " - " & DLookup("[Country_City_Name]", " Trip ", "[Country_City_ID]=" & Me.Trip_City_Arrival) & " " & Me.Ïîëå41 & "%"

End Sub

Но это без реверса :(

Пробовал таким же образом обратиться не к таблице Trip а к запросу на объединение Trip_union по примеру Панург,
но вба ругается.
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741367
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mushketior1980, у меня ошибка была (жертва рефакторинга) поправил и добавил комментарии. десяток строк кода не может быть много, а с комментариями должно быть понятнее.
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741385
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
воспользовался предыдущим примером ( 21750916 ), код весь выкинул. Считает во всех направлениях.
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741401
Mushketior1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, alecko, И все другие кто был не равнодушен.

Спасибо добрые Люди! Простенько и со вкусом :) Как для Access чайника то проще может быть только если кто знает как макрос какой применить :) У меня всё работает , всем доволен. В моем коде обращение к запросу не удавалось потому что между кавычкой и именем запроса пробел был. Вроде и не маленький экран у ноута но начал задумываться о приобретении бу imac 27. Моделька 11 года с и5 гляжу в районе 350 - 400 евро стоит. Походу зрение и время дороже....
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741409
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С реверсом, редактированием, выбрать одинаковые названия городов невозможно.
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741434
Mushketior1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,

Спасибо ещё раз. для меня пока что разница между этим примером и примером через запрос примерно такая же как для человека не знающего языка объясниться в чужой стране.

Через запрос это как - Привет! - показываешь пальцем, чавкаешь - Еда! Ам-Ам.

Через твои пример - Извините пожалуйста Уважаемый! Не были бы вы так добры утолить мои голод обедом из трёх блюд и чашечкой кофе!?

Да знаю учить ВБА надо но уже столько удалось сделать с помощью макросов что думаю обойтись без него. Итак сил на все нехватет. Взялся за эту задачу просто от безысходности. Трудно попросить кого то сделать то что сам додумываешь в процессе использования.
...
Рейтинг: 0 / 0
Как в форме Access получить значения расстояния между двумя городами.
    #39741448
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mushketior1980,эт понятно, но кто знает может ещё кому приспичит, что-то аналогичное, а я как-то реверс упустил из виду, поэтому доделал.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в форме Access получить значения расстояния между двумя городами.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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