Отнася се за
Access 2010

Тази статия обяснява как да използвате заявки с най-високи стойности и заявки с общи суми, за да намерите най-новите или най-ранните дати в набор от записи. Това може да ви помогне да отговорите на редица бизнес въпроси, като например кога клиент е направил последно поръчка или кои пет тримесечия са били най-добри за продажбите по градове.

В тази статия

Общ преглед

Можете да класирате данни и да преглеждате най-високо класираните елементи, като използвате заявка с най-високи стойности. Заявката с най-висока стойност е заявка за избиране, която връща зададен брой или процент от стойности от горния край на резултатите, например петте най-популярни страници в уеб сайт. Можете да използвате заявка с най-високи стойности спрямо всякакъв вид стойности – те не трябва да са числа.

Ако искате да групирате или обобщавате данните си, преди да ги класирате, не е необходимо да използвате заявка с най-високи стойности. Нека например да трябва да намерите номерата на продажбите за дадена дата за всеки град, в който работи вашата фирма. В този случай градовете стават категории (трябва да намерите данните по град), така че да използвате заявка за общи суми.

Когато използвате заявка с най-високи стойности, за да намерите записи, които съдържат най-новите или най-ранните дати в таблица или група записи, можете да отговаряте на редица бизнес въпроси, като например следните:

  • Кой напоследък прави най-много продажби?

  • Кога последно е направил клиент поръчка?

  • Кога са следващите три рождени дни в екипа?

За да направите заявка с най-висока стойност, започнете със създаване на заявка за избиране. След това сортирайте данните според въпроса си – независимо дали търсите най-отгоре, или отдолу. Ако трябва да групирате или обобщите данните, превърнете заявката за избиране в заявка за общи суми. След това можете да използвате агрегатна функция, като например Max или Min , за да се върне най-високата или най-ниската стойност, или First или Last , за да се върне най-ранната или най-късната дата.

В тази статия се предполага, че стойностите за дата, които използвате, имат данни от тип "Дата/час". Ако вашите стойности за дата са в текстово поле, .

Помислете за използване на филтър вместо заявка за най-високи стойности

Филтърът обикновено е по-добър, ако имате предвид определена дата. За да определите дали трябва да създадете заявка за най-високи стойности, или да приложите филтър, имайте предвид следното:

  • Ако искате да върнете всички записи, за които датата съвпада, е преди или по-късна от определена дата, използвайте филтър. Например за да видите датите за продажби между април и юли, прилагате филтър.

  • Ако искате да върнете зададено количество записи, които имат най-новите или най-новите дати в поле, и не знаете точните стойности за дата или те нямат значение, можете да създадете заявка с най-високи стойности. Например за да видите петте най-добри тримесечия за продажби, използвайте заявка с най-високи стойности.

За повече информация относно създаването и използването на филтри вж. статията Прилагане на филтър за преглед на избрани записи в база данни на Access.

Най-горе на страницата

Подгответе примерните данни, които да следвате, заедно с примерите

Стъпките в тази статия използват данните в примерните таблици по-долу.

Таблицата "Служители"   

ФамилноИме

Собствено име

Адрес

Град

CountryOrr egion

Дата на раждане

Дата на наемане

Белишки

Костадин

ул. "Хемус" 16

Велико Търново

USA

05 февруари 1968 г.

10 юни 1994 г.

Heloo

Уелс

ул. "Освобождение" 6

Велинград

USA

22 май 1957 г.

22 ноември 1996 г.

Христозова

Гуидо

ул. "Захари Стоянов" 22

Брацигово

USA

11 ноември 1960 г.

11 март 2000 г.

Кравай

Жан Филип

ул "Марица" 77

Вършец

UK

22 март 1964 г.

22 юни 1998 г.

Цена

Юлиански

ул. "Хан Аспарух" 81

Видин

Мексико

05 юни 1972 г.

05 януари 2002 г.

Хюз

Кристин

Св. С. 3122 75 С.

Сиатъл

USA

23 януари 1970 г.

23 април 1999 г.

Рангелов

Богомил

ул. "Победа" 12

Кричим

USA

14 април 1964 г.

14 октомври 2004 г.

Birkby

Иванова

2 носа pkwy

Портланд

USA

29 октомври 1959 г.

29 март 1997 г.

Таблицата EventType   

ИД на тип

Тип събитие

1

Стартиране на продукт

2

Корпоративна функция

3

Частна функция

4

Набиране на средства

5

Търговско изложение

6

Лекция

7

Концерт

8

Изложба

9

Уличен панаир

Таблицата Customers   

ИД_клиент

Фирма

Контакт

1

Contoso, Ltd. Графичен

Джонатан Аас

2

Tailspin Toys

Елън Адамс

3

Fabrikam

Керъл Филипс

4

Играчки с wingtip

Lucio Iallo

5

A. Датум

Мандар Самант

6

Adventure Works

Брайън Бърк

7

Институт за проектиране

Jaka Stele

8

Училище за изящни изкуства

Милена Дуоманова

Таблицата ''Събития''   

ИД на събитие

Тип събитие

Клиент

Дата на събитието

Цена

1

Стартиране на продукт

Contoso, Ltd.

4/14/2011

10 000 лв.

2

Корпоративна функция

Tailspin Toys

4/21/2011

8000 лв.

3

Търговско изложение

Tailspin Toys

1.05.2011

25 000 лв.

4

Изложба

Graphic Design Institute

5/13/2011

4500 лв.

5

Търговско изложение

Contoso, Ltd.

5/14/2011

55 000 лв.

6

Концерт

Училище за изящни изкуства

5/23/2011

12 000 лв.

7

Стартиране на продукт

A. Датум

6/1/2011

15 000 лв.

8

Стартиране на продукт

Играчки с wingtip

6/18/2011

21 000 лв.

9

Набиране на средства

Adventure Works

6/22/2011

1300 лв.

10

Лекция

Graphic Design Institute

6/25/2011

2450 лв.

11

Лекция

Contoso, Ltd.

4.07.2011

3800 лв.

12

Уличен панаир

Graphic Design Institute

4.07.2011

5 500 лв.

Забележка: Стъпките в този раздел предполагат, че таблиците Customers и Event Type се намират от страната "един" на релации "един към много" с таблицата Events. В този случай таблицата Events споделя полетата CustomerID и TypeID. Заявките за общи суми, описани в следващите раздели, няма да работят без тези релации.

Поставяне на примерните данни в работни листове на Excel

  1. Стартирайте Excel. Отваря се празна работна книга.

  2. Натиснете SHIFT+F11, за да вмъкнете работен лист (ще ви трябват четири).

  3. Копирайте данните от всяка примерна таблица в празен работен лист. Включете заглавията на колоните (първия ред).

Създаване на таблици на база данни от работните листове

  1. Изберете данните от първия работен лист, включително заглавията на колоните.

  2. Щракнете с десния бутон върху навигационния екран и след това щракнете върху Постави.

  3. Щракнете върху Да , за да потвърдите, че първият ред съдържа заглавия на колони.

  4. Повторете стъпки от 1 до 3 за всеки от останалите работни листове.

Намиране на най-новата или най-новата дата

Стъпките в този раздел използват примерните данни, за да илюстрират процеса на създаване на заявка за най-високи стойности.

Създаване на заявка с основни най-високи стойности

  1. В раздела Създаване, в групата Заявки щракнете върху Проектиране на заявка.

  2. Щракнете двукратно върху таблицата "Служители" и след това щракнете върху Затвори.

    Ако използвате примерните данни, добавете таблицата Employees към заявката.

  3. Добавете полетата, които искате да използвате във вашата заявка, към мрежата за проектиране. Можете да щракнете двукратно върху всяко поле или да плъзнете и пуснете всяко поле в празна клетка в реда Поле .

    Ако използвате примерната таблица, добавете полетата Собствено име, Фамилно име и Дата на раждане.

  4. В полето, съдържащо вашите най-високи или най-ниски стойности (полето "Дата на раждане", ако използвате примерната таблица), щракнете върху реда Сортиране и изберете Възходящо или Низходящо.

    Низходящ ред на сортиране връща последната дата, а възходящ ред на сортиране връща най-ранната дата.

    Важно: Трябва да зададете стойност в реда Сортиране само за полетата, които съдържат вашите дати. Ако зададете ред на сортиране за друго поле, заявката не връща желаните резултати.

  5. В раздела Проектиране , в групата Инструменти щракнете върху стрелката надолу до Всички (списък Най-високи стойности ) и или въведете броя на записите, които искате да видите, или изберете опция от списъка.

  6. Щракнете върху Изпълни Изображение на бутон, за да изпълните заявката и да покажете резултатите в изглед на лист с данни.

  7. Запишете заявката като NextBirthDays.

Можете да видите, че този тип заявка с най-високи стойности може да отговаря на основни въпроси, като например кой е най-старият или най-младият човек във фирмата. Следващите стъпки обясняват как да използвате изрази и други критерии, за да добавите сила и гъвкавост към заявката. Критериите, показани в следващата стъпка, връщат следващите три рождени дни на служителя.

Добавяне на критерии към заявката

Тези стъпки използват заявката, създадена в предишната процедура. Можете да продължите със заявка с различни най-високи стойности, стига тя да съдържа действителни данни за дата/час, а не текстови стойности.

Съвет:  Ако искате да разберете по-добре как работи тази заявка, превключвайте между изглед за проектиране и изглед на лист с данни на всяка стъпка. Ако искате да видите действителния код на заявката, превключете на SQL изглед. За да превключвате между изгледите, щракнете с десния бутон върху раздела в горния край на заявката и след това щракнете върху желания изглед.

  1. В навигационния екран щракнете с десния бутон върху заявката NextBirthDays и след това щракнете върху Режим на проектиране.

  2. В мрежата на заявката за проектиране, в колоната отдясно на BirthDate въведете следното:MonthBorn: DatePart("m",[BirthDate]).Този израз извлича месеца от BirthDate с помощта на функцията DatePart .

  3. В следващата колона на мрежата за проектиране на заявки въведете следното:DayOfMonthBorn: DatePart("d",[BirthDate])Този израз извлича деня от месеца от BirthDate с помощта на функцията DatePart.

  4. Изчистете квадратчетата за отметка в реда Покажи за всеки от двата израза, които току-що въведохте.

  5. Щракнете върху реда Сортиране за всеки израз и след това изберете Възходящо.

  6. В реда Критерии на колоната Дата на раждане въведете следния израз:Month([Birth Date]) > Month(Date()) OR Month([Birth Date])= Month(Date()) AND Day([Birth Date])>Day(Date())Този израз прави следното:

    • Month( [Birth Date]) > Month(Date()) указва, че датата на раждане на всеки служител попада в бъдещ месец.

    • The Month( [Birth Date])= Month(Date()) And Day([Birth Date])>Day(Date()) указва, че ако датата на раждане е в текущия месец, рожденният ден попада на или след текущия ден.

      Накратко, този израз изключва всички записи, където рожденният ден възниква между 1 януари и текущата дата.

      Съвет:  За повече примери на изрази за критерии за заявки вж. статията Примери на критерии за заявки.

  7. В раздела Проектиране , в групата Настройка на заявката въведете 3 в полето Връщане .

  8. В раздела Структура, в групата Резултати щракнете върху Изпълни Изображение на бутон.

Забележка:  В собствената си заявка, като използвате собствени данни, понякога може да видите повече записи, отколкото сте указали. Ако вашите данни съдържат множество записи, които споделят стойност, която е между най-високите стойности, вашата заявка ще върне всички тези записи, дори ако това означава връщане на повече записи, отколкото искате.

Най-горе на страницата

Намиране на най-новите или най-новите дати за групи от записи

Можете да използвате заявка за общи суми, за да намерите най-ранните или последните дати за записите, които попадат в групи, например събития, групирани по град. Заявката за общи суми е заявка за избиране, която използва агрегатни функции (например Group By, Min, Max, Count, First и Last), за да изчисли стойности за всяко изходно поле.

Включете полето, което искате да използвате за категории – за групиране по – и полето със стойностите, които искате да обобщите. Ако включите други изходни полета – например имената на клиентите, когато групирате по тип събитие – заявката ще използва тези полета и за създаване на групи, променяйки резултатите, така че да не отговарят на първоначалния ви въпрос. За да наимените редовете с помощта на други полета, трябва да създадете допълнителна заявка, която използва заявката за общи суми като източник, и да добавите допълнителните полета към тази заявка.

Съвет:  Създаването на заявки в стъпки е много ефективна стратегия за отговаряне на по-разширени въпроси. Ако имате проблеми с работата на сложна заявка, помислете дали можете да я разделите на поредица от по-прости заявки.

Създаване на заявка за обобщаване

Тази процедура използва примерната таблица Events и примерната таблица EventType , за да отговори на този въпрос:

Кога беше последното събитие от всеки тип събитие, с изключение на концертите?

  1. В раздела Създаване, в групата Заявки щракнете върху Проектиране на заявка.

  2. Щракнете двукратно върху таблиците Events и EventType. Всяка таблица се появява в горната секция на конструктора на заявки.

  3. Щракнете двукратно върху полето EventType на таблицата EventType и полето EventDate от таблицата Events, за да добавите полетата към мрежата за проектиране на заявки.

  4. В мрежата на заявката за проектиране, в реда Критерии на полето EventType въведете <>Concert.

    Съвет:  За повече примери на изрази за критерии вж. статията Примери на критерии за заявки.

  5. В раздела Структура, в групата Покажи/скрий щракнете върху Общи суми.

  6. В мрежата на заявката за проектиране щракнете върху сумарния ред на полето EventDate и след това щракнете върху Макс.

  7. В раздела Структура, в групата Резултати щракнете върху Изглед и след това щракнете върху SQL изглед.

  8. В прозореца на SQL, в края на клаузата SELECT, точно след ключовата дума AS, заместете MaxOfEventDate с MostRecent.

  9. Запишете заявката като MostRecentEventByType.

Създаване на втора заявка за добавяне на още данни

Тази процедура използва заявка mostRecentEventByType от предходната процедура, за да отговори на този въпрос:

Кой е клиентът на най-новото събитие от всеки тип събитие?

  1. В раздела Създаване, в групата Заявки щракнете върху Проектиране на заявка.

  2. В раздела Заявки щракнете двукратно върху заявката MostRecentEventByType.

  3. В раздела Таблици щракнете двукратно върху таблицата "Събития" и таблицата "Клиенти".

  4. В конструктора на заявки щракнете двукратно върху следните полета:

    1. В таблицата Events щракнете двукратно върху EventType.

    2. В заявката MostRecentEventByType щракнете двукратно върху MostRecent.

    3. В таблицата "Клиенти" щракнете двукратно върху Фирма.

  5. В мрежата на заявката за проектиране, в реда Сортиране на колоната EventType изберете Възходящо.

  6. В раздела Проектиране, в групата Резултати щракнете върху Изпълни.

Най-горе на страницата

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.