Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / задать название столбца в запросе / 16 сообщений из 16, страница 1 из 1
19.01.2004, 16:35
    #32380671
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Вопрос может показаться идиотским, но все же рискну...
Киньте ссылочку и/или подскажите кто-нибудь решал такую задачу:
в таблицах и запросах используются в названии поля типа Mon01, Mon02, Mon03 (янв03, фев03, март03 соответственно) и т.д., означающие месяца года. Причем от месяца к месяцу они сдвигаются, т.е. Mon01 (был янв03) в следующем месяце становиться фев03, соответственно и все сдвигаются. Все было хорошо, пока не назрела необходимость, чтобы в запросе при его выполнении название столбца отражалось не как Mon1, а как месяц, который участвует на данный момент в расчете (как я уже упоминал выше, напр. фев03). Подскажите, плз, как можно извратиться и написать в запросе или SQL.
СПАСИБО
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
19.01.2004, 16:37
    #32380680
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
select mon1 as фев03, ...
...
Рейтинг: 0 / 0
19.01.2004, 16:39
    #32380686
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Саныч, а в следующем месяце писать: select mon1 as мар03,.... ?
Хотелось бы, чтоб автоматом, и... забыть.
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
19.01.2004, 16:45
    #32380697
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Тогда надо написать программу, которая будет сочинять этот селект. А потом забыть.
...
Рейтинг: 0 / 0
19.01.2004, 16:49
    #32380700
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Т.Е. в запросе просто так никак незя !? Жаль...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
19.01.2004, 16:50
    #32380702
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Именно в запросе.

Только я не понял, зачем это надо. Юзеры открывают на экране запрос??? А не форму???
...
Рейтинг: 0 / 0
19.01.2004, 16:58
    #32380713
vlad_707
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
мне кажется В.С. предложил хорошее решение.....
т.е. делаешь эту sql строку динамически в вба
как я понял Mon01- это текущий месяц...
т.е. из функции date() ... (не помню как выделить месяц числом.)
Mon01 as date(...)
Mon02 as date(...)+1
и т.д....
ну как то так...
...
Рейтинг: 0 / 0
19.01.2004, 17:05
    #32380728
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
По мне лучше через DAO сменить свойство Description поля перед выполнением запроса, но лучше использовать формы/отчеты все-таки
...
Рейтинг: 0 / 0
19.01.2004, 17:07
    #32380730
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
А вот так Mon02 as date(...)+1 не получится. Надо так:

"Mon02 as " & format(date, "mmmyy")
...
Рейтинг: 0 / 0
19.01.2004, 17:07
    #32380731
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Это надо не юзерам, а мне для периодических добавлений/изменений.
vlad_707 посоветовал... т.е. делаешь эту sql строку динамически в вба
как я понял Mon01- это текущий месяц...
т.е. из функции date() ... (не помню как выделить месяц числом.)
Mon01 as date(...)
Mon02 as date(...)+1
и т.д....
ну как то так...
Это-то я понимаю.... Но куда это вставить!? (Начало такое: SELECT РазницаИнвест.Fcount AS [Счетчик по базе], РазницаИнвест.ComboDeptCode AS [Центр затрат], РазницаИнвест.ComboDepRusName AS [Наимен Подразделения], РазницаИнвест.Comments AS Примечания, РазницаИнвест.Примечание , РазницаИнвест.Mon13 AS [11/03], РазницаИнвест.Mon14 AS [12/03], ... )
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
19.01.2004, 18:21
    #32380846
vlad_707
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
можешь менять системное время т.е. в системном времени менять месяц и тогда моя система заработает..... хм... только нужно ли так делать......

GetSystemTime
This function retrieves the current system date and time. The system time is expressed in Coordinated Universal Time (UTC).

void GetSystemTime(
LPSYSTEMTIME lpSystemTime );
Parameters
lpSystemTime
[out] Pointer to a SYSTEMTIME structure to receive the current system date and time.
Return Values
None.

Requirements

Runs on Versions Defined in Include Link to
Windows CE OS 1.0 and later Winbase.h



Note This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

SYSTEMTIME
This structure represents a date and time using individual members for the month, day, year, weekday, hour, minute, second, and millisecond.

typedef struct _SYSTEMTIME { // st
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
Members
wYear
Specifies the current year.
wMonth
Specifies the current month; January = 1, February = 2, and so on.
wDayOfWeek
Specifies the current day of the week; Sunday = 0, Monday = 1, and so on.
wDay
Specifies the current day of the month.
wHour
Specifies the current hour.
wMinute
Specifies the current minute.
wSecond
Specifies the current second.
wMilliseconds
Specifies the current millisecond.
Remarks
It is not recommended that you add and subtract values from the SYSTEMTIME structure to obtain relative times. Instead, you should

Convert the SYSTEMTIME structure to a FILETIME structure.
Copy the resulting FILETIME structure to a ULARGE_INTEGER structure.
Use normal 64-bit arithmetic on the ULARGE_INTEGER value.
Requirements

хм.... но я бы так не заморачивался....
...
Рейтинг: 0 / 0
20.01.2004, 08:25
    #32381121
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Классно!!! (я о системном времени)
Так же можно не только себе помочь - НО, ГЛАВНОЕ - ВСЕМ ПОДГАДИТЬ,,,

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
20.01.2004, 10:00
    #32381227
vlad_707
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
вот тебе ещё...

Шаг 10 - Инструкция Date
Устанавливает текущую системную дату:

Date = дата

Параметры
дата
Для компьютеров, работающих под управлением Microsoft Windows 95, аргумент дата должен задавать дату в интервале от 1 января 1980 года до 31 декабря 2099 года. Для компьютеров, работающих под управлением Microsoft Windows NT, дата в интервале от 1 января 1980 года до 31 декабря 2079 года.

Пример
В данном примере инструкция Date используется для установки системной даты. В среде разработчика дата изображается в кратком формате с использованием текущих национальных настроек.

Dim MyDate
MyDate = #February 12, 1985# ' Присваивает дату.
Date = MyDate ' Изменяет системную дату.
...
Рейтинг: 0 / 0
23.01.2004, 17:21
    #32386554
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Бился, бился - получил... (табл "Месяцы" содержит данные типа 01/04)
TRANSFORM IIf(Format(Date(),"mm\/yy")=Месяцы!NameForForms,РаИ!Mon13,
IIf(Format(Date()+31,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon14,
IIf(Format(Date()+62,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon15,
IIf(Format(Date()+93,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon16,
IIf(Format(Date()+124,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon17,
IIf(Format(Date()+155,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon18,
IIf(Format(Date()+186,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon19,
IIf(Format(Date()+217,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon20,
IIf(Format(Date()+248,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon21,
IIf(Format(Date()+279,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon22,
IIf(Format(Date()+310,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon23,
IIf(Format(Date()+340,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon24,
IIf(Format(Date()+360,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon25,999999999))))))))))))) AS Выражение1
SELECT РаИ.Fcount AS [Счетчик по базе], РаИ.Comments AS Примечание, РаИ.Примечание AS [Примечание Операций], РаИ.ComboDeptCode AS [Центр затрат], РаИ.ComboDepRusName AS [Наимен Подразделения]
FROM РаИ, Месяцы
WHERE (((РаИ.Примечание) Is Not Null))
GROUP BY РаИ.Fcount, РаИ.Comments, РаИ.Примечание, РаИ.ComboDeptCode, РаИ.ComboDepRusName, РаИ.Mon13, РаИ.Mon14, РаИ.Mon15, РаИ.Mon16, РаИ.Mon17, РаИ.Mon18, РаИ.Mon19, РаИ.Mon20, РаИ.Mon21, РаИ.Mon22, РаИ.Mon23, РаИ.Mon24, РаИ.Mon25
ORDER BY РаИ.Fcount, РаИ.Примечание, РаИ.ComboDeptCode
PIVOT Месяцы.NameForForms
WITH OWNERACCESS OPTION;

Всё работает, при изменении времени в ПК - происходит сдвиг месяцев и т.п.
НОООО!
Непонятно почему одна строка всё время выдаёт ошибку, т.е. заносит в исполнение запроса значение "999999999". Я проверял форматы, пути, формулы... Нашел зависимость - стоит из запроса убрать в GROUP BY РаИ.Mon13, РаИ.Mon14 (соответственно и в TRANSFORM IIf(Format(Date(),"mm\/yy")=Месяцы!NameForForms,РаИ!Mon13,IIf(Format(Date()+31,"mm\/yy")=Месяцы!NameForForms,РаИ!Mon14 ), как из двенадцати полей в десяти полях наблюдаются нужные значения, а не "9999999999".
ПЛЗ, подскажите, в чем может быть заковыка? Мне нужны данные по всем 12 полям.
Прошу прощения за вид запроса - проще придумать не смог...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
23.01.2004, 21:49
    #32386756
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Если этот запрос написан руками, то надо его исправить.
Если есть какая-то программа, которая его сочиняет, то надо искать в ней ошибку.
Правда, содержательный ответ?
...
Рейтинг: 0 / 0
26.01.2004, 08:25
    #32387317
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задать название столбца в запросе
Владимир Саныч Очень точно подметил.. Если этот запрос написан руками, то надо его исправить....

Спасибо ему за краткий и помогающий (ободряющий, укрепляющий и т.д. и т.п.) ответ....

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / задать название столбца в запросе / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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