Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?) / 10 сообщений из 10, страница 1 из 1
13.11.2003, 18:02
    #32323511
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
Подскажите пожалуйста, как решить следующую проблему:
Есть таблица с двумя полями: год и счетчик, нужно, чтобы для каждого нового года счетчик начинался заново (т.е. с 1). У меня данные начинаются с 1993г. по 2003, так вот, нужно, чтобы для следующего 2004 года записи для нового счетчика начинались с 1. Как разделить эту таблицу, чтобы для следующего года счетчик обнулялся? Я знаю только один вариант, создать 10 таблиц для каждого года со своим счетчиком :-( подскажите пожалуйста более логичное решение данной проблемы. :-)
...
Рейтинг: 0 / 0
13.11.2003, 18:07
    #32323522
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
FAQ. Что мы знаем про каунтеры (aka счетчики)
...
Рейтинг: 0 / 0
13.11.2003, 18:23
    #32323557
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
Я про это триггер написал. В случае с mdb можно написать функцию.
...
Рейтинг: 0 / 0
13.11.2003, 18:32
    #32323570
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
нумератор для ADP

Код: plaintext
1.
2.
3.
4.
Public Function get_id()
Dim tm
tm = CurrentProject.Connection.Execute( "SELECT   isnull(max ( id ),0 )  AS ID from MYTABLE "  ).GetRows
get_id = tm( 0 ,  0 ) +  1 
End Function


соответственно по году будет

Код: plaintext
1.
2.
3.
4.
5.
Public Function get_id(Year_value as integer )
Dim tm
tm = CurrentProject.Connection.Execute _
( "SELECT   isnull(max ( id ),0 )  AS ID from MYTABLE where Year(FLD_DATE) = " & Year_value ).GetRows
get_id = tm( 0 ,  0 ) +  1 
End Function


быстро надежно и безотказно.
...
Рейтинг: 0 / 0
13.11.2003, 18:36
    #32323577
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
АлексейК писал:быстро надежно и безотказно.
Кроме того случая, когда юзеров больше одного.
...
Рейтинг: 0 / 0
13.11.2003, 18:46
    #32323589
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
правильно, код не присваивает записи уникальное значение а сообщает юзеру очередное.

есть много способов добиться уникальности при обновлении.
но самый простой сделать поле счетчика + год уникальным ограничением в таблице а процедуре сохранения в случае попытки обновить повторно вторым пользователем делать повтор запроса идентификатора

тем самым достигается не только уникальность счетчика но отсутствие дырок в нумерации ибо предполагаю что судя по вопросу автор топика интересуется нумератором для документов.
...
Рейтинг: 0 / 0
13.11.2003, 18:55
    #32323597
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
Саныч а как ты думаешь что лучше
создавать ADO рекордсет брать одно значение
затем прибивать его или GETROWS ?
...
Рейтинг: 0 / 0
13.11.2003, 18:57
    #32323599
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
:^) Если бы мне этот вопрос попался на экзамене, я бы провалился. Я никогда не пользовался GETROWS.
...
Рейтинг: 0 / 0
13.11.2003, 19:10
    #32323615
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
я сам себе ответил - проверил на 10 000 циклов

в случае с одной записью и в контексте данного вопроса
getrows медленнее примерно на 5%
...
Рейтинг: 0 / 0
15.11.2003, 11:59
    #32325352
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?)
Спасибо большое, мысль хорошая.
То АлексейК:
Хотел уточнить, правильно ли я понял, что Вы предлагаете поставить свой программный код в поле "год" для формы, на событие After_update?
:-)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по relations! (Как разделить таблицу, чтобы для следующего года счетчик обнулялся?) / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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