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

Форум: MS ACCESS

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

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

 
 

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

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

тема: ГРУППИРОВКА!
 
 автор: Аленка   (16.10.2008 в 09:01)   личное сообщение
 
 

У меня вот такой вопрос родился в связи с моей базой.
Упрощю все.
Есть таблица с тремя полями:
Этаж Комната Арендатор
1............111 кузька
1............112 кузька
2............211 кузька
2............212 кузька
2............213 кузька

И у меня задача, сгруппировать это все в ОДНУ!!!!!!!!!!!!!!!! запись, чтобы ВСЕ значения были видны. То есть должно получиться так:
1,2............111,112,211,212,213............Кузька

Такую таблицу я делала начальнику раньше в Икселе ручками. Хотелось бы ручки освободить и занять их более приятными делами
Ясное дело, что простая группировка в Аксесе такого не позволит, так как Номера комнат все отличаются, а соответственно группировка в моем случае вообще не изменит вид таблицы никак.

Но вдруг есть какое-то выражение, которое позволит все это дело объединить в одну запись, лучше в запросе, но можно и в форме.
ВОТ ЗДЕСЬ Я НАДЕЮСЬ ТОЛЬКО НА ВАС.
Только сразу не говорите, что это невозможно, так как я это тоже вроде понимаю, но все же основываясь на своих пока неглубоких знаниях, я надеюсь, что такое все же возможно.
Сразу не обламывайте. Ну скажите, что это возможно и скажите как?
Моя мечта тогда сбудется и я буду делать это не вручную, а быстро в аксесе.
Спасибо!!!!!!!

  Ответить  
 
 автор: osmor   (16.10.2008 в 09:09)   личное сообщение
 
 

возможно
http://hiprog.com/index.php?option=com_content&task=view&id=334&Itemid=35

  Ответить  
 
 автор: Аленка   (16.10.2008 в 09:27)   личное сообщение
 
 

Спасибо огромное за ссылочку. Тема называется "слияние" , видимо поэтому ее и не нашла на этом сайте.
Пойду читать, разбираться!!!!!!! СПАСИБО

  Ответить  
 
 автор: FORMAT   (16.10.2008 в 10:29)   личное сообщение
 
 

Аленка! Гляньте вопрос NewAgera от 14.10 про преобразование в поле МЕМО. У него в примере один из запросов делает именно то, что вам нужно. Запрос называется TabUnion4

  Ответить  
 
 автор: Аленка   (16.10.2008 в 12:38)   личное сообщение
 
 

А там то же самое, что и по ссылочке от osmor.
Да, это то, что нужно. но есть проблема.
И как раз на мой упрощенный вопрос я получила ответ.
Но в итоге наткнулась в боевых условиях на еще одну проблему. Я немного усложню условия. Ближе к реальным.
Вот таблица:
Этаж.....Помещение........Комнаты.........Арендатор
1..................IV.........................1......................кузька
1..................V.........................2......................кузька
2..................IV.........................2......................кузька
3..................II.........................1......................кузька
3..................IV.........................1......................кузька

Как видно, если я буду группировать с помощью посоветованных функций, то я получу
1,1,2,3,3......IV,V,IV,II,IV.........1,2,2,1,1............кузька
Проблема в том, что повторение этажей - это лишнее. Повторение помещений - тоже лишнее.
Как здесь быть?

  Ответить  
 
 автор: Lukas   (16.10.2008 в 13:08)   личное сообщение
 
 

Как вариант:
Предварительно "склеить" этаж, помещение и комнату в одно поле, типа:
1-IV-1 , 1-V-2 и так далее

  Ответить  
 
 автор: Аленка   (16.10.2008 в 13:13)   личное сообщение
 
 

получится слишком громоздко. ведь получается, что все равно этажи и помещения будут повторяться. просто будет вот так: 1-V-1, 1-V-2 и т.д. Здесь явно 1 и V лишние и их лучше бы сгрупиировать в 1 экземпляр.

  Ответить  
 
 автор: Denis V.   (16.10.2008 в 13:23)   личное сообщение
 
 

Извинете за офф-топик, но я не понимаю для чего может потребоваться такое представление данных, которое Вы хотите получить. Причём это ведь не единичный случай! Придумали, понимаешь, таблицы, а тут опять Word какой-то получается. Не понимаю, объясните, пожалуйста.

  Ответить  
 
 автор: FORMAT   (16.10.2008 в 13:28)   личное сообщение
 
 

+1

Можно сделать отдельный справочник, в котором каждая комната будет иметь свой уникальный ID. И тогда выводить список ID этих комнат. ( ну или их расшифровку 3 этаж
V помещение 1 комната )

  Ответить  
 
 автор: Аленка   (16.10.2008 в 14:08)   личное сообщение
 
 

А я объясню. Я для своего начальника делаю табличку в Икселе по арендаторам, в которой указаны реквизиты договоров, предмет договора (а именно помещения) и соответственно платежи по месяцам.
Перейдя на БД я себе много упростила, но понятно, что Аксесс - это не Иксель. Поэтому кое в чем я потеряла, но не сильно. Удобство БД слишком сильно перекрывают все, что я потеряла.
В итоге новый тип отчета начальство не устраивает. Им видите ли тяжело привыкать к новому. А я не хочу делать руками то, что у меня и так есть в Аксесе, только немного в другом виде. Вот я и хочу сделать такую фигню.

  Ответить  
 
 автор: Аленка   (16.10.2008 в 14:09)   личное сообщение
 
 

Что касается уникальности каждой комнаты. У меня каждая комната имеет свой уникальный ID. Ведь все помещения по всем зданиям у меня забиты в одну таблицу, что естественно. И далее я с помощью запросов их раскидываю куда нужно.

Но список ID выводить бесполезно. для начальства это ничто. Ведь они увидят обычные цифры, непонятные им. А им нужно видеть этаж, помещение и комнаты.
Что Вы имеете ввиду под расшифровкой, я не знаю. Если то же самое, что Lukas, то это громоздко.

  Ответить  
 
 автор: Аленка   (16.10.2008 в 14:54)   личное сообщение
 
 

В общем, я решила сделать так. Чтобы не париться, я сделала дополнительную табличку. Где все помещения будут забиты вручную как мне и нужно. И именно данные из этой таблички я и буду вставлять в запрос. Пусть смотрят.
В итоге ничего страшного не получится. Один раз забила вручную (к тому же забивать я буду не каждое прям помещение, а через тире, то есть 1-10 помещения и т.п.). Соответственно, это гораздо более удобное решение, чем городить миллион запросов.

А что касается слияния, то с его помощью у меня тоже в общем-то получилось, но при этом мне пришлось сделать более 10 запросов. В итоге я решила, что это полный дебилизм и с таким количеством запросов и ошибиться недолго и предусмотреть все сложно. Поэтому я от этого отказалась.

  Ответить  
 
 автор: NewAger   (16.10.2008 в 16:37)   личное сообщение
 
 

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

  Ответить  
 
 автор: Аленка   (16.10.2008 в 19:34)   личное сообщение
 
 

ну да. так и есть. именно по арендатору. причем в отдельных полях должен быть указан этаж (этажи), помещение (помещения), комната (комнаты).
При этом этажи сливать получится только после группировки. Так как если на 1 этаже будет снято кузей 30 комнат, мне не нужно, чтобы единица повторялась в поле Этаж 30 раз. То же самое Помещение. Самая маленькая единица - это комната. Именно ее и нужно сливать без группировок. Но все это муторно. И получается слишком много запросов. А если начальство захочет добавить поле, которого не было? а это не такая уж и фантазия. Придется все эти запросы менять, а я через месяц могу подзабыть, как я там понастроила.

А есть более легкий вариант? Просто если бы не пришлось вообще ничего лишнего забивать ручками, я была бы только рада. Но вариантов не вижу.

  Ответить  
 
 автор: NewAger   (17.10.2008 в 07:44)   личное сообщение
13 Кб.
 
 

Вот вам образей моей БД.
Запрос TabUnion4 делает такую группировку, но очень медленный и не работает с полями мемо.
Второй вариант запустить сначала запрос "1" и затем "2" либо выполнить "Макрос1"
Я думаю вам это должно помочь

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