powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание нескольких полей из одного
11 сообщений из 11, страница 1 из 1
Создание нескольких полей из одного
    #39768597
nekromant11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток
Дано:
Есть таблица, допустим tblOut, в которой, помимо прочего, есть два поля, допустим "fldOut" (Исх.№) и "fldOutDate" (Дата исх.)
Задача:
Создать запрос, возвращающий несколько полей, название каждого из которых совпадает с номером года, в каждом из которых будут выведены все исх.№ за этот год.

В первом приближении получил что-то вроде:
SELECT IIf(Year([fldOutDate])=2008,Replace(fldOut,"200/","")) AS 2008, IIf(Year([fldOutDate])=2009,Replace(fldOut,"200/","")) AS 2009
FROM tblOut

(Replace убирает ненужную для дальнейшей работы постоянную часть из исх.№)

Результат работы запроса выглядит примерно так:

2008 2009
2
4
5
10
15
.........5
.........7
.........11
.........20
.........23

Вопрос - есть ли способ убрать из результата работы запроса пустые места?
Чтобы было так:

2008 2009
2.......5
4.......7
5.......11
10......20
15......23

Заранее спасибо за советы
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39768601
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nekromant11,

как-то задача криво стоит, обычно показывают что идет на вход (строки таблицы), что должно получиться на выходе (итоговые строки) и спрашивают как...
а тут входа нет, есть процесс с неправильным результатом и возможно правильный выход
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39768671
nekromant11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag, виноват. Ни разу не писал на форумах программистов.
В качестве примера (на точки не обращайте внимания)
Вход:
Таблица tblOut содержит два поля, исх.№ и дату:
fldOut ........ fldOutDate
200/1.........09.01.2008
200/5.........10.01.2008
200/10.......11.01.2008
200/2.........09.01.2009
200/4.........10.01.2009
200/20.......15.10.2009

Выход:
На выходе запроса хочу получить:
2008 ..... 2009
1..........2
5..........4
10........20

sorry за кривую визуализацию
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39768708
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nekromant11Вход:
nekromant11Выход:
Почитайте здесь. https://www.sql.ru/forum/1308447/sformirovat-zapros . Может поможет .
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39768826
nekromant11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan, спасибо за подсказку. Пока запрос с TRANSFORM выдает мне какую-то дичь, но он уже работает, а не ругается на ошибку синтаксиса) По результатам доложу
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39769901
nekromant11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ожидание, задачу решил. Много времени потратил на фильтрацию входных данных.
Во вложении БД "dbEx.mdb", запрос qryExample02, исходная таблица tblOutEx, из которой убрано всё лишнее.
Собственно, это была промежуточная цель)
Основная - создать запрос, который бы было можно использовать в качестве RowSource для диаграммы, на которой по Х - дни, по Y - номера исходящих. За каждый год отдельный график. Задача уже решалась более простым способом - прямым заполнением таблицы данных диаграммы на VBA (пара вложенных циклов, в которых заносились значения в obj.Application.datasheet.Cells()). Всё бы хорошо, но безумно долго (на график за один год на разных машинах уходило до нескольких десятков секунд(!!!) И это всего около 2000 значений в исходной таблице). Я почему-то решил, что через запрос будет быстрее, однако вышло не совсем так, на выполнение запроса тоже уходит значительное время (хотя субъективно выполняется быстрее).
По сказанному два вопроса:
1. Есть ли способ ускорить построение диаграммы
2. Правильно ли сформирован запрос для использования его в качестве RowSource? И как можно настроить вид диаграммы, желательно на VBA. Можно просто ссылку на пример, я разберусь...
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39769988
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nekromant11,
не пробовали пользовать штатное средство создания диаграмм
должно быть установлено из "средста office": microsoft graph и "поддержка программирования .NET"
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39770085
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nekromant11....Основная - создать запрос, который бы было можно использовать в качестве RowSource для диаграммы, на которой по Х - дни, по Y - номера исходящих. За каждый год отдельный график... Что-то не могу представить себе такой график:если имеются ввиду дни недели (которых 7 -то это куда не шло),но номера исходящих,которых за 2016 год 4 сотни??....
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39770337
nekromant11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku , мастер создания диаграмм в наличии, пока не смог ему объяснить, что же я хочу. Строит совсем не то, что нужно.
А насчет графика - это обычная почти прямая линия, наклон каждый год разный в зависимости от количества исх.№. Имеются ввиду не дни недели, а дни года, от 1 до 366, для чего пришлось специально создать табличку tblDay. Всего в году у подразделения от 2 до 4 тыс. исх., в график попадают не все, а лишь занесенные в таблицу tblOutEx. Польза от такого графика, разумеется, спорная, но я надеюсь здесь всех больше интересуют вопросы практической реализации...
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39770352
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nekromant11 sdku , мастер создания диаграмм в наличии, пока не смог ему объяснить, что же я хочу. Строит совсем не то, что нужно. Строит то что "объяснили"
...
Рейтинг: 0 / 0
Создание нескольких полей из одного
    #39771307
nekromant11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только скопировав результат запроса в Excel, догадался, в чем ошибка. Запрос выдает текстовые значения, которые не очень подходят для построения графиков. Когда преобразовал значения ячеек в числа, график Excel построил мгновенно.
Попробовал сделать так:
Код: vbnet
1.
2.
3.
4.
5.
6.
TRANSFORM CInt(MAX(IIF(DateDiff("d",DateSerial(Year([tblOutEx.fldOutDate]),1,1),[tblOutEx.fldOutDate],2)=[tblDay.fldDay],IIF(InStr([tblOutEx.fldOut],"200/")>0,Replace([tblOutEx.fldOut],"200/","")),0))) AS Номер
SELECT tblDay.fldDay AS День
FROM tblDay, tblOutEx
GROUP BY tblDay.fldDay
ORDER BY tblDay.fldDay
PIVOT Year([tblOutEx.fldOutDate]) In (2008,2009,2010,2011,2012,2013,2014,2015,2016);


Но теперь пустые места заполнены нулями, что не очень хорошо.
Вопрос наверняка глупый, но кто-нибудь может подсказать, можно ли сделать так, чтобы вместо нулей опять появились пустые строки? Или в поле могут быть значения только одного типа?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание нескольких полей из одного
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]