|
|
|
| Требуется выбрать уникальные записи, или последние записи определенного типа. Иначе говоря, требуется применить группировку в запросе.
Проблема заключается в том, что данные в этих запросах, или в запросах, которые связаны с этим запросом, не редактируются.
Например, есть таблица клиентов и таблица звонков этим клиентам. Требуется выбрать, например, клиентов, последний звонок которым завершился отказом (это лишь пример).
Делаю запрос, чтобы по каждому клиенту был выбран последний звонок. И фильтром указываю нужный тип звонка.
И дальше строю запрос на базе таблицы клиентов, чтобы там были только клиенты, встретившиеся в предыдущем запросе. На нём строю форму. Данные не редактируются.
Помогите, пожалуйста. | |
|
| |
|
|
|
| а что здесь удивительного или в чём ошибка?
сгруппированные запросы нельзя редактировать
это правильно
как минимум связи в таких запросах построены на ключах
уникальность которых может быть нарушена
делайте редактируемую таблицу, в которую будете загружать сгруппированные данные
но вам потом придётся другими запросами вносить эти данные в первичные таблицы | |
|
| |
|
|
|
| Я не говорю, что это ошибка.
Я говорю, что есть потребность. И не знаю, как её реализовать :)
А попроще есть идеи, способы? | |
|
| |
|
|
|
| либо изменяйте запрос так что бы не было группировки (например используя top) или делайте через временную таблицу.
Любой запрос в котором где-то участвует запрос с группировкой будет неизменяемым, т.к. непонятно что менять. (1-я записи могут соответствовать несколько) | |
|
| |
|
|
|
| Так я и не хочу собственно группируемые запросы менять.
Я группирую таблицу звонков.
А редактировать хочу таблицу клиентов.
А что за top, кстати? | |
|
| |
|
|
|
| Вот тебе пример такого запроса:
SELECT ClientID, ClientName FROM Client WHERE ClientID IN (SELECT Client.ClientID
FROM ClientCall INNER JOIN Client ON ClientCall.ClientID = Client.ClientID
GROUP BY Client.ClientID, ClientCall.CallTypeID
HAVING (((ClientCall.CallTypeID)=2)))
|
Этот запрос отберет нужные записи из двух связанных таблиц и позволит редактировать записи таблицы Client.
А Top - это необязательное свойство команды SELECT, позволяющее отобрать несколько первых записей. В аксе нажми F1 и забей в поиск TOP - посмотришь примеры. | |
|
| |
|
|
|
| в основной форме делаете две подформы(сабформы)
в первой - ваши сгруппированные данные
во второй - таблица клиентов, которую будете редактировать
на основе ключевых данных из первой сабформы | |
|
| |
|
|
|
| Всем спасибо за помощь!
подобрал решение, которое хорошо подошло :) | |
|
| |
|
|
|
| http://hiprog.com/forum/read.php?id_forum=1&id_theme=9593&page=1
там в ветке подобные запросы используются для получения последней записи по лимиту посмотрите мои ответы | |
|
| |