Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как преодолеть последствия группировки?
 
 автор: ПетрЩербаков   (21.02.2012 в 15:18)   личное сообщение
 
 

Требуется выбрать уникальные записи, или последние записи определенного типа. Иначе говоря, требуется применить группировку в запросе.

Проблема заключается в том, что данные в этих запросах, или в запросах, которые связаны с этим запросом, не редактируются.

Например, есть таблица клиентов и таблица звонков этим клиентам. Требуется выбрать, например, клиентов, последний звонок которым завершился отказом (это лишь пример).
Делаю запрос, чтобы по каждому клиенту был выбран последний звонок. И фильтром указываю нужный тип звонка.
И дальше строю запрос на базе таблицы клиентов, чтобы там были только клиенты, встретившиеся в предыдущем запросе. На нём строю форму. Данные не редактируются.

Помогите, пожалуйста.

  Ответить  
 
 автор: silich   (21.02.2012 в 15:28)   личное сообщение
 
 

а что здесь удивительного или в чём ошибка?

сгруппированные запросы нельзя редактировать
это правильно
как минимум связи в таких запросах построены на ключах
уникальность которых может быть нарушена

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

  Ответить  
 
 автор: ПетрЩербаков   (21.02.2012 в 15:30)   личное сообщение
 
 

Я не говорю, что это ошибка.

Я говорю, что есть потребность. И не знаю, как её реализовать :)

А попроще есть идеи, способы?

  Ответить  
 
 автор: osmor   (21.02.2012 в 15:31)   личное сообщение
 
 

либо изменяйте запрос так что бы не было группировки (например используя top) или делайте через временную таблицу.
Любой запрос в котором где-то участвует запрос с группировкой будет неизменяемым, т.к. непонятно что менять. (1-я записи могут соответствовать несколько)

  Ответить  
 
 автор: ПетрЩербаков   (21.02.2012 в 15:33)   личное сообщение
 
 

Так я и не хочу собственно группируемые запросы менять.

Я группирую таблицу звонков.
А редактировать хочу таблицу клиентов.

А что за top, кстати?

  Ответить  
 
 автор: Stanislav   (21.02.2012 в 15:50)   личное сообщение
 
 

Вот тебе пример такого запроса:


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 - посмотришь примеры.

  Ответить  
 
 автор: silich   (21.02.2012 в 15:59)   личное сообщение
 
 

в основной форме делаете две подформы(сабформы)
в первой - ваши сгруппированные данные
во второй - таблица клиентов, которую будете редактировать
на основе ключевых данных из первой сабформы

  Ответить  
 
 автор: ПетрЩербаков   (21.02.2012 в 17:33)   личное сообщение
 
 

Всем спасибо за помощь!
подобрал решение, которое хорошо подошло :)

  Ответить  
 
 автор: osmor   (21.02.2012 в 16:02)   личное сообщение
 
 

http://hiprog.com/forum/read.php?id_forum=1&id_theme=9593&page=1
там в ветке подобные запросы используются для получения последней записи по лимиту посмотрите мои ответы

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList