Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Счетчик для дат  [new]
Miguel
Member

Откуда:
Сообщений: 54
Задача: пронумеровать результат запроса на выборку которым является дата.
Пример:
| Dat | Num|
|31/12/2006| 1 |
|31/01/2007| 2 |
|28/02/2007| 3 |
|31/03/2007| 4 |

Нашел в FAQ хороший такой счетчик:
SELECT DCount("f", "t","f<=" & CStr(f)), f
FROM t
ORDER BY f;

С числом работает отлично, но если поле "f" - дата, то результат запроса выглядит так:
| Dat | Num|
|31/12/2006| 0 |
|31/01/2007| 0 |
|28/02/2007| 0 |
|31/03/2007| 0 |

Догадываюсь, что проблема связана с форматом этого поля. Я уже голову сломал.
Спасибо!
17 апр 07, 12:06    [4030428]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
bILL HEAD
Guest
голову сломал зря - пригодилась бы еще
там жэ в ФАКе - использование дат в запросах
даю на водку :) - используй для сравнения дат символы #
17 апр 07, 12:30    [4030643]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
Miguel
Member

Откуда:
Сообщений: 54
bILL HEAD
голову сломал зря - пригодилась бы еще
там жэ в ФАКе - использование дат в запросах
даю на водку :) - используй для сравнения дат символы #


А по существу?
17 апр 07, 12:39    [4030711]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
А по существу в факе про даты разжевано. Вам осталось только проглотить эту кашицу.
17 апр 07, 12:43    [4030749]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
sdfgsdfgsdf
Member

Откуда:
Сообщений: 5996
SELECT Dat AS Dat_P, (SELECT Count(*) FROM T_Date WHERE T_Date.Dat <> Dat_P) AS Indx FROM T_Date
17 апр 07, 13:02    [4030947]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
sdfgsdfgsdf
Member

Откуда:
Сообщений: 5996
Не то ,сори , вот :

SELECT Dat AS Dat_P, (SELECT Count(*) FROM T_Date WHERE (T_Date.Dat < Dat_P)) AS Indx FROM T_Date ORDER BY T_Date.Dat

Если много записей - может тормозить !
17 апр 07, 13:03    [4030969]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
sdfgsdfgsdf
Member

Откуда:
Сообщений: 5996
Так, для полной точности в работе делаю так :

Создал "запрос4"

SELECT T_Date.Dat AS Date_P
FROM T_Date
ORDER BY T_Date.Dat;

Потом создал запрос5 :

SELECT [Запрос4].Date_P AS Dat_P, (SELECT Count(*) FROM T_Date WHERE (T_Date.Dat < [Date_P])) AS Indx
FROM [Запрос4];

- Работает
17 апр 07, 13:12    [4031048]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
Miguel
Member

Откуда:
Сообщений: 54
Я бы в запрос "+1" еще добавил, а то первой записи номер "0" присваивается:

SELECT [Запрос4].Date_P AS Dat_P, (SELECT Count(*)+1 FROM T_Date WHERE (T_Date.Dat < [Date_P])) AS Indx
FROM [Запрос4];

Спасибо!

ПС: Если под разжеваным понимается вот это:
Q18: Аксесс переворачивает даты, меняет местами день и месяц. Вариант: неверно срабатывают вычисления или проверки, связанные с датами.

A: Возможно, дата была записана в строковой переменной (вариант: использована строковая функция Date$ либо текстбокс, не привязанный к полю типа Date/Time). Строка, содержащая даты, интерпретируется Аксессом на основании нескольких правил, в которые входят синтаксис команд SQL (где нужно писать #MM/DD/YY#) и региональные настройки Windows. Надо знать, где и как это работает, а при возможности избегать записи дат в строках. Во многих случаях помогает функция DateSerial.
то FAQ такой вам в руки и пользуйтесь на здоровье!
17 апр 07, 13:22    [4031171]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
sdfgsdfgsdf
Member

Откуда:
Сообщений: 5996
Miguel
Я бы в запрос "+1" еще добавил, а то первой записи номер "0" присваивается:


Ну это уже на любителя - кому и ноль - уникальный, а кому и еденица, в самый раз :). Вообщем главное работает :))
17 апр 07, 13:26    [4031217]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
bILL HEAD
Guest
FAQ
... синтаксис команд SQL (где нужно писать #MM/DD/YY#) ...

Miguel
то FAQ такой вам в руки и пользуйтесь на здоровье!

еще одно чудо...
открывай рот шыре и глотай:
SELECT DCount("f_data","t","f_data<=#" & format(f_data,"mm\/dd\/yyyy") & "#") AS myNum, f_data AS myDate
FROM t
ORDER BY f_data;
17 апр 07, 13:43    [4031350]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
kuku13
Guest
Miguel

ПС: Если под разжеваным понимается вот это:
Q18: Аксесс переворачивает даты, меняет местами день и месяц. Вариант: неверно срабатывают вычисления или проверки, связанные с датами.

A: Возможно, дата была записана в строковой переменной (вариант: использована строковая функция Date$ либо текстбокс, не привязанный к полю типа Date/Time). Строка, содержащая даты, интерпретируется Аксессом на основании нескольких правил, в которые входят синтаксис команд SQL (где нужно писать #MM/DD/YY#) и региональные настройки Windows. Надо знать, где и как это работает, а при возможности избегать записи дат в строках. Во многих случаях помогает функция DateSerial.
то FAQ такой вам в руки и пользуйтесь на здоровье!


Вы правы! Вообще от рук отбились бездельники! Как же так, в Фак не выложили пример для вашего случая!
17 апр 07, 13:45    [4031367]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
Miguel
Member

Откуда:
Сообщений: 54
bill Head-у
Спасибо большое! То, чот нужно!
И вопрос...Это прикол такой "даю на водку :) - используй для сравнения дат символы # " написать почти таким же цветом, что и фон?
17 апр 07, 14:07    [4031548]     Ответить | Цитировать Сообщить модератору
 Re: Счетчик для дат  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Подавился, бедолага...
17 апр 07, 14:10    [4031569]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить