Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Вывести в поле запроса значение поля из другой таблицы  [new]
Игорь С
Member

Откуда: Iндепендна Юкрейна
Сообщений: 465
Здравствуйте все.

К основной таблице с ключем КОД построен основной запрос.
В одно из его полей нужно вывести последнее (по дате например) значение (соответствующее ключу КОД) из второй таблицы.

Возможные варианты:
1. Создать запрос ко второй таблице с сортировкой по дате и обратиться к этому запросу функцией DLookUp, помещенной в требуемое поле основного запроса.
2. Использовать для этой цели подчиненный запрос, поместив его в требуемое поле (в этом случае, если не ошибаюсь, основной запрос утратит свойство обновляемости).

Возможно ли еще каким-то образом и какой вариант предпочтителен?
Благодарен заранее.
13 июн 18, 11:35    [21487776]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4316
А сделать функцию и подставить её в поле?
13 июн 18, 12:07    [21487866]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 67
Игорь С, где вы будете использовать -запрос? Если в форме или отчете, то лучше вычислять значение там.
13 июн 18, 14:39    [21488523]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Игорь С
Member

Откуда: Iндепендна Юкрейна
Сообщений: 465
Joss
А сделать функцию и подставить её в поле?


Спасибо Joss, если я сделаю функцию, то для обращения ко второму запросу ей понадобится dlookup, так кажется?
13 июн 18, 15:30    [21488745]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Игорь С
Member

Откуда: Iндепендна Юкрейна
Сообщений: 465
Кривцов Анатолий
Игорь С, где вы будете использовать -запрос? Если в форме или отчете, то лучше вычислять значение там.


Спасибо, Анатолий. Да, я использую запрос для формы (ленточной) и там в поле следует поставить dlookup, а что еще?

То есть и в том и в другом случае мы использует DlookUp? Так что-ли?
13 июн 18, 15:33    [21488756]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4316
Игорь С
Joss
А сделать функцию и подставить её в поле?


Спасибо Joss, если я сделаю функцию, то для обращения ко второму запросу ей понадобится dlookup, так кажется?

Скорее всего ДА.
13 июн 18, 15:40    [21488779]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Игорь С
Member

Откуда: Iндепендна Юкрейна
Сообщений: 465
Вообще-то из своего не очень большого опыта знаю (хотя не уверен), что DLookUp подтормаживает запросы, хотя сохраняет их обновляемыми
13 июн 18, 15:48    [21488801]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Игорь С
Member

Откуда: Iндепендна Юкрейна
Сообщений: 465
По-моему есть еще один путь. Перед запуском основного запроса создать таблицу, куда будут записано поле последних данных вспомогательного запроса.
Но не могу сказать насколько это эффективно.
13 июн 18, 15:51    [21488813]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 240
Игорь С, кроме DLookUp есть ещё другие агрегатные функции (DLast, DCount, DMax), и лучше обращаться непосредственно к таблице.
13 июн 18, 16:15    [21488888]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5043
Игорь С
Вообще-то из своего не очень большого опыта знаю (хотя не уверен), что DLookUp подтормаживает запросы, хотя сохраняет их обновляемыми
Вот что написано в HELPе:"Хотя функция DLookup позволят проводить поиск значений во внешней таблице, обычно более эффективным приемом оказывается создание запроса (то бишь набора записей), содержащего все необходимые поля, с последующим созданием формы или отчета на базе этого запроса." Конечно использование Dlookup для создания набора записей-это дебилизм,но если Вам надо вычислить конкретное значение одного поля в одной (активной)записи,то любая доменная функция зачастую работает быстрее (особенно на больших таблицах-можете замерить время выполнения функции и запроса), т.к. после нахождения первой записи соответствующей критерию, функция прекращает работу. Кстати в Вашем случае подойдет Dmax
13 июн 18, 17:02    [21489062]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Игорь С
Member

Откуда: Iндепендна Юкрейна
Сообщений: 465
sdku
Игорь С
Вообще-то из своего не очень большого опыта знаю (хотя не уверен), что DLookUp подтормаживает запросы, хотя сохраняет их обновляемыми
Вот что написано в HELPе:"Хотя функция DLookup позволят проводить поиск значений во внешней таблице, обычно более эффективным приемом оказывается создание запроса (то бишь набора записей), содержащего все необходимые поля, с последующим созданием формы или отчета на базе этого запроса." Конечно использование Dlookup для создания набора записей-это дебилизм,но если Вам надо вычислить конкретное значение одного поля в одной (активной)записи,то любая доменная функция зачастую работает быстрее (особенно на больших таблицах-можете замерить время выполнения функции и запроса), т.к. после нахождения первой записи соответствующей критерию, функция прекращает работу. Кстати в Вашем случае подойдет Dmax


Спасибо
14 июн 18, 11:56    [21490556]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Игорь С
Member

Откуда: Iндепендна Юкрейна
Сообщений: 465
Во-первых: речь шла не об использовании DLookUp для создания набора записи, а о нахождении конкретного значения некоего поля,
соответствующего "самой свежей" дате в другом поле таблицы
Во-вторых: DMax ищет что-то максимальное в поле набора записей,
нам же нужно найти значение поля, при дополнительном условии - что другое поле соответствует дате
самого "свежего" заказа для конкретного исполнителя. Т.е нужно использовать DlookUp с дополнительными условиями
отбора кода исполнителя и "свежайшей" даты.
К чему применять DLookUp - к исходной таблице, к промежуточному запросу или к промежуточной таблице - вот в чем был вопрос, а также о возможных иных способах решения.

Спасибо за внимание.
14 июн 18, 12:14    [21490603]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4316
Я бы решал задачу двумя запросами.
1. Выстраивал все записи в порядке уменьшения даты
2. Брал первую запись из получившегося набора для конкретного исполнителя
14 июн 18, 12:43    [21490692]     Ответить | Цитировать Сообщить модератору
 Re: Вывести в поле запроса значение поля из другой таблицы  [new]
__Michelle
Member

Откуда:
Сообщений: 2897
Игорь С
... нужно найти значение поля, при дополнительном условии -
что другое поле соответствует дате самого "свежего" заказа для конкретного исполнителя.
Т.е нужно использовать DlookUp с дополнительными условиями
отбора кода исполнителя и "свежайшей" даты...
.
DlookUp("поле","таблица","Id=" & T.Id & " AND дата=" & DMax("дата","таблица", "Id=" & T.Id))  
14 июн 18, 13:42    [21490906]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить