powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DefaultValue
25 сообщений из 46, страница 1 из 2
DefaultValue
    #32160351
Grechuhin Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как задать значение по умолчанию числовому полю равное значению этого же поля предыдущей записи + 1.
Есть таблица:
11 вапвап
12 варвр
13 авпва
14 авп
21 екн
22 аар
При добавлении новой записи надо, чтобы в 1 поле по умолчанию появилось значение 23.
...
Рейтинг: 0 / 0
DefaultValue
    #32160362
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
99%, что это невозможно. Таблица не знает, что такое предыдущая запись. Визуальный порядок записей на экране - это еще не все.
...
Рейтинг: 0 / 0
DefaultValue
    #32160368
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использвовать DMax(...)+1
Можно использовать временную таблицу для хранения последнего значения
Можно использовать счетчик, но тогда возможны пропуски
Ну, пока хватит...
...
Рейтинг: 0 / 0
DefaultValue
    #32160374
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опаньки.... я слова "предудущей" записи я не заметил.

Grechuhin Anton тебе это число для чего нжно-то?
...
Рейтинг: 0 / 0
DefaultValue
    #32160377
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Через форму - можно. На BeforeUpdate смотреть в RecordsetClone.

2 Сенен Виктор
DMax+1 - не удовлетворяет. Надо не максимальное + 1, а последнее + 1.
...
Рейтинг: 0 / 0
DefaultValue
    #32160384
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Через форму - можно. На BeforeUpdate смотреть в RecordsetClone.

Да, я об этом подумал. Но наружу не вышло. :^)
...
Рейтинг: 0 / 0
DefaultValue
    #32160390
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч, а если использовать формочку для ввода новой записи, то вполне даже можно...
Или я не прав?
...
Рейтинг: 0 / 0
DefaultValue
    #32160393
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лоху
>Через форму - можно. На BeforeUpdate смотреть в RecordsetClone.

А если база в сети, и кто-нить в таблицы записей наставляет?
Пока набор не обновиться будет лажа.

И вообще это херня полная "последнее"+1 искать.
Grechuhin Anton ты бы нам объяснил че ты все-таки хочешь, а то у меня такое ощущение что это тебе нафиг не нужно, а нужен просто последовательный счетчик.
...
Рейтинг: 0 / 0
DefaultValue
    #32160407
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если база в сети, и кто-нить в таблицы записей наставляет?
Пока набор не обновиться будет лажа.

Ну и кто ж его знает тогда, какая из них последняя

По моему, автор топика нас испугался и убежал
...
Рейтинг: 0 / 0
DefaultValue
    #32160437
Grechuhin Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По моему, автор топика нас испугался и убежал
Не думал, что так быстро ответите :)
Зачем мне это надо:
Есть куча анкет, информацию из которых надо поместить в бд. У каждой анкеты - свой номер, обычно номера идут по-порядку. В принципе номер можно вводить и ручками, но для облегчения работы хотелось бы чтобы это делалось автоматически...
...
Рейтинг: 0 / 0
DefaultValue
    #32160444
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Счетчик тебя спасет
Или, если не счетчик, то все равно значение по умолчанию тебе не нужно. Нужно автоматическое присвоение следующего номера. На BeforeInsert - номер присваивай DMax([Номер]) + 1
...
Рейтинг: 0 / 0
DefaultValue
    #32160467
Grechuhin Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем.
Сделал через DMax() - не совсем то, что хотел, но и так неплохо.
...
Рейтинг: 0 / 0
DefaultValue
    #32160493
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 G&P

Ну так я и говорю...
...
Рейтинг: 0 / 0
DefaultValue
    #32160496
igol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a function DLast() +1
...
Рейтинг: 0 / 0
DefaultValue
    #32160498
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, кто, как делает. Мне пока не было нужды, но может появиться. Например, накладные. Нумерация начинается каждый год с начала года (значит не счетчик). Конечно, что первое приходит в голову - Recordset и DMax(). Но может есть интереснее варианты?
...
Рейтинг: 0 / 0
DefaultValue
    #32160507
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 igol
Цитата из хелпа
"Функции DFirst и DLast используют для возвращения значений из
Код: plaintext
случайно выбранных записей
определенного поля в таблице или запросе"
Мыслю я, что случайно выбранные записи - точно не нужны
...
Рейтинг: 0 / 0
DefaultValue
    #32160521
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У DMax можно указать критерий отбора.
Код: plaintext
1.
nz(Dmax( "МойСчетчик" ,  "МояТаблица" , "DatePole >=#"  Year(Date())), 0 )

Вернет максимальное значение счетчика (если его нет, то 0) за текущий год. Это, конечно, не готовое решение, просто один из вариантов...
...
Рейтинг: 0 / 0
DefaultValue
    #32160525
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Есть еще одно решение, но оно совершенно сумасшедшее.

1. Ctrl+' заносит в поле значение из предыдущей строки - эта штука встроенная.

2. Написать на KeyPress или KeyDown процедурку, которая при нажатии, скажем, Ctrl+L берет значение поля и добавляет к нему 1.

И нажимать каждый раз в этом поле подряд Ctrl+' и Ctrl+L.
...
Рейтинг: 0 / 0
DefaultValue
    #32160527
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опс, чего то намудрил, правильно будет

Код: plaintext
1.
2.
3.
4.
5.
nz(
Dmax(
 "МойСчетчик" ,  "МояТаблица" ,
 "ПолеДата >=#"  DateSerial(Year(Date()), 1 , 1 ) &  "#" ))

...
Рейтинг: 0 / 0
DefaultValue
    #32160537
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нумерация начинается каждый год с начала года - пережитки прошлого. Нет необходимости, не вручную же нумируются.
...
Рейтинг: 0 / 0
DefaultValue
    #32160558
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V. Motchulsky

"Если Вы не всилах остановить лавину - не пытайтесь ей противостоять". Иногда клиентам не интересно наше мнение о пережитках. Изживать их у себя, во всяком случае, пока "жареный петух не клюнет", они не собираются. Вместо сеанса психотерапии они ждут от нас нечто другое. Если за это нечто платят, чего бы его не сделать (желательно с наименьшими затратами времени и сил)?
...
Рейтинг: 0 / 0
DefaultValue
    #32160560
ХЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной программе пришлось убрать нумерацию с начала года.
Заказчик потребовал: однажды он клиента потерял из-за этого. Тот увидел в феврале накладную с номером то ли 30 то ли 40, и подумал "На хрен мне такая фирма, у которой за месяц 40 продаж" и свалил...
А вот был бы номер 23423 - хрен бы он свалил - психология!
...
Рейтинг: 0 / 0
DefaultValue
    #32160597
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже все-таки DMax(). Хотя недавно столкнулся с такой фигней при использовании этой функции.
На форме две субформы: "Действия" и "Операции" - отображают данные соответствующих таблиц. 1 со 2 связаны отношением один-ко-многим по полю "КодДействия" . На событие текущая запись 1-й - Requery 2-й. В субформе "Операции" в свойстве "значение по умолчанию" поля "№" - функция Dmax("№", "Операции", "КодДействия = " & Forms!Задачи!Действия.Form.КодДействия)+1
Закономерность так и не уловил - иногда возвращает значение без +1 (устанавливал +2, тогда нормально), а иногда с +1. Тогда если было установлено +2 - значение было на 2 больше максимального.
Не стал ковыряться, перешел на Recordset, но интерес (почему?) так и остался.
...
Рейтинг: 0 / 0
DefaultValue
    #32160638
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иногда клиентам не интересно наше мнение о пережитках. Иногда да, но в большинстве случаев у них нет вообще полностью СФОРМИРОВАНОГО мнения. И если вы задаете им вопрос, надо ли нумеровать с нового года по новому, тем самим наталкиваете их на мысль а может надо. Лучше сказать "нет необходимости начинать нумерацию с каждого года по новому, так как компютер успешно с этим справляется и во всех продвинутых фирмах этого больше уже не делают."
...
Рейтинг: 0 / 0
DefaultValue
    #32160641
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, и еще клиенту сказать, что счета-фактуры все равно нумеруются с начала года, и по фиг, продвинутая у вас фирма или нет - законы у нас такие.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DefaultValue
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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