Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2009, 18:20   #1
agavrila
 
Регистрация: 14.08.2009
Сообщений: 4
Вопрос ACCESS 07. Запрос . Бъюсь с фильтрацией данных.

Привет. Я не студент, а водила дальнобойщик. Пытаюсь облегчить себе написание отчёта.
Имею таблицу со многия полями. В них "Номер рейса" , "Пробег" - км. , "Режим" - пусто или груз. В запросе с условием выбираю номер рейса и получаю пробеги с режимом пусто или груз примерно так -
10 пусто
15 пусто
55 груз
12 груз

В отчёте на этом запросе эти столбцы выглядят так же. А желаемое -

Пробег
пуст груз
10 --
15 --
-- 55
-- 12

не получается. Извращался по разному ( в мере знаний ). В таблице пуст. и гр. в одном столбце ("Режим"), может просто изменить структуру таблицы, разнеся по разным столбцам ?
В литературе или мало примеров или невнятные комментарии.
agavrila вне форума Ответить с цитированием
Старый 14.08.2009, 20:01   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

При такой структуре базы (рисунок в приложении - access.png)
можно такой запрос
Код:
SELECT km, gruz
FROM dal
WHERE grz = false
UNION
SELECT gruz, km
FROM dal
WHERE grz = true;
На рисунке, слева структура, справа результат запроса.
Изображения
Тип файла: jpg access.jpg (10.7 Кб, 118 просмотров)
psycho-coder вне форума Ответить с цитированием
Старый 14.08.2009, 22:50   #3
agavrila
 
Регистрация: 14.08.2009
Сообщений: 4
По умолчанию

Спасибо. Буду попробовать. Могу ли я обращаться к Вам ещё ? Видел Ваше объявление в другом разделе.
agavrila вне форума Ответить с цитированием
Старый 15.08.2009, 15:03   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я, конечно, приношу свои извинения, но, мне кажется,
более точным (для такого ответа, как в пост №1) будет такой код (модификация кода psycho-coder'а):
Код:
SELECT [НомерРейса], "--"
FROM dal
WHERE [Режим] = "Пусто"
UNION
SELECT "--", [НомерРейса]
FROM dal
WHERE [Режим] <> "Пусто";
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.08.2009, 21:58   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Могу ли я обращаться к Вам ещё ?
Конечно.
Цитата:
, конечно, приношу свои извинения, но, мне кажется,
Почему бы и нет.

Я вот еще что надумал.
Сделать два поля текстовыми, и при заполнении указывать в таком плане, если шли пустым то записываем
Код:
пуст   груз
 10      --
Если груженым, то
Код:
пуст   груз
 --        55
И можно выполнить запрос
Код:
SELECT * FROM dal;
Таким образом в отчет попадет то, что нужно и с верной структурой.
Если не хотите так, пробуйте как подсказал Serge_Bliznykov. Наиболее оптимальный вариант.
psycho-coder вне форума Ответить с цитированием
Старый 17.08.2009, 12:53   #6
agavrila
 
Регистрация: 14.08.2009
Сообщений: 4
По умолчанию

Кодеру. Как я понял , Вы предлагаете изменить структуру таблицы. В моей таблице - [Telo rejsa] (Shot0), два поля : [Probeg] и [Rezim gruza]. В пробег пишутся километры, В режим груза - пустые они или с грузом. При этом запрос имеет вид
SELECT [Telo rejsa].[Nomer rejsa], [Telo rejsa].Data, [Telo rejsa].Punkt, [Telo rejsa].Strana, [Telo rejsa].Rezim, [Telo rejsa].Probeg, [Telo rejsa].[Rezim gruza]
FROM [Telo rejsa]
WHERE ((([Telo rejsa].[Nomer rejsa])=[Nomer ?]));

Отчёт имеет вид ( Shot1)
А хотелось бы разнести данные [Probeg] в два столбца - 'Пробег пустой' и 'Пробег с грузом' . Примерно так : (Shot2), нижний рисунок.
Вариант SERGE_BLIZNIKOV , как мне кажется не совсем то ?
Изображения
Тип файла: jpg Shot0.jpg (24.4 Кб, 112 просмотров)
Тип файла: jpg Shot1.jpg (20.2 Кб, 142 просмотров)
Тип файла: jpg Shot2.jpg (19.6 Кб, 116 просмотров)
agavrila вне форума Ответить с цитированием
Старый 17.08.2009, 15:39   #7
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Внедренный вариант Serge_Bliznykov'а:
Код:
SELECT
[Telo rejsa].[Nomer rejsa], 
[Telo rejsa].Strana,
[Telo rejsa].Rezim, 
[Telo rejsa].Punkt, 
[Telo rejsa].Data,
"  " AS Груз,
[Telo rejsa].Probeg AS Пуст
FROM [Telo rejsa]
WHERE ([Telo rejsa].[Nomer rejsa]=2) AND ([Telo rejsa].[Rezim gruza] = "pusto")

UNION

SELECT
[Telo rejsa].[Nomer rejsa],
[Telo rejsa].Strana,
[Telo rejsa].Rezim,
[Telo rejsa].Punkt,
[Telo rejsa].Data,
[Telo rejsa].Probeg AS Груз,
"  " AS Пуст
FROM [Telo rejsa]
WHERE ([Telo rejsa].[Nomer rejsa]=2) AND ([Telo rejsa].[Rezim gruza] = "gruz")

ORDER BY Data, Груз;
Такие варианты [Telo rejsa].Probeg AS [Пр. Груз], Access не переваривает.

Результат:
Изображения
Тип файла: jpg result.jpg (39.6 Кб, 124 просмотров)
psycho-coder вне форума Ответить с цитированием
Старый 17.08.2009, 18:17   #8
agavrila
 
Регистрация: 14.08.2009
Сообщений: 4
По умолчанию

Спасибо. Мне , как новичку , надо обьяснять чётко , ясно , и ДВА раза.
agavrila вне форума Ответить с цитированием
Старый 18.08.2009, 16:26   #9
Botanik1987
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 38
По умолчанию

Всем добрый день
Уже не студент, но помощь всё равно необходима.
Юзаю Access 2007 и появился вопрос:
Имеются 30 автоматов, по каждому из которых раз в месяц (обычно) снимается остаток и записывается в таблицу "Остатки ингридиентов".Остаток на конец текущего месяца для каког-либо автомата является остатком на начало следующего месяца для него же.Остатки могут сниматься в один день со всех автоматов сразу, а может быть и разброс в 2-3 дня.(в таблицу записыается номер автомата, дата снятия и численные значения 10 ингридиентов)
Запрос: В полях формы задаётся временной промежуток (например с 01.09.2009 по 31.09.2009)
По результатам запроса необходимо вывести следующие поля:Номер автомата,Дата снятия остатков (ближайшая к датам, введённым в форме) и численные значения остатков по 10 ингридиентам-то есть надо получить месячный отчёт по всем автоматам сразу.
Вот запрос:
SELECT TOP 1 [Остатки ингридиентов].[Номер автомата], [Остатки ингридиентов].Дата, [Остатки ингридиентов].Вода,...
FROM [Остатки ингридиентов]
ORDER BY Abs([Остатки ингридиентов].Дата-[Forms]![Запрос]![Поле1]);

Проблема в том, что запрос выбирает ближайшую дату для всех автоматов сразу (поэтому по результатам запроса можно не досчитаться отчёта по некоторым автоматам),а надо чтобы он выбирал ближайшую дату для каждого автомата по отдельности и выводил отчёт по всем автоматам сразу в результирующую таблицу.
Это у меня пока не получается. Буду очень рад помощи и советам с подсказками

P.S.
По одному автомату я отчёт получил-он работает нормально, Вот запрос:
SELECT TOP 1 [Остатки ингридиентов].Дата, [Остатки ингридиентов].Вода,...
FROM [Остатки ингридиентов]
WHERE [Остатки ингридиентов].[Номер автомата]=[Forms]![Запрос]![Поле15]
ORDER BY Abs([Остатки ингридиентов].Дата-[Forms]![Запрос]![Поле1]);
Botanik1987 вне форума Ответить с цитированием
Старый 18.08.2009, 20:50   #10
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Может так?
Код:
SELECT TOP 1 [Остатки ингридиентов].[Номер автомата], [Остатки ингридиентов].Дата, [Остатки ингридиентов].Вода,...
FROM [Остатки ингридиентов]
WHERE Дата BETWEEN '01.09.2009' AND '21.09.2009'
ORDER BY Abs([Остатки ингридиентов].Дата-[Forms]![Запрос]![Поле1]);
psycho-coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access 97, открыть базу данных Access alexhol Microsoft Office Access 0 27.04.2009 12:10
Запрос в Access Ruska882009 Microsoft Office Access 2 04.03.2009 00:27
Запрос в Access Ruska882009 Помощь студентам 1 25.02.2009 15:42
Запрос в Access Ruska882009 Помощь студентам 2 25.02.2009 12:49
Запрос в Access Ruska882009 SQL, базы данных 1 25.02.2009 12:41