С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/46: Рейтинг темы: голосов - 46, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110

Предыдущая запись как значение по умолчанию

08.03.2013, 22:17. Показов 10073. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Удивительно, но поиском не смог найти, хотя должно быть не первый спрашиваю...

Как в форме вида "Несколько элементов" сделать так, что бы значение предыдущей записи ставилось как значение по умолчанию?

То есть если в предыдущей записи было написано "Модель 1", то в следующей (создаваемой) по умолчанию сразу было "Модель 1". И человек если устраивает - ничего не менял бы. А если надо - тогда выбирал бы нужное из выпадающего списка.


/// снова переделываю свою базу. надеюсь теперь удастся отойти от экселлевской логики.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.03.2013, 22:17
Ответы с готовыми решениями:

Как убрать следующая/предыдущая запись под постом
Собственно вопрос в заголовке. Как убрать эту бяку?

Кнопка следующая запись, предыдущая запись---какие коды
Подскажите пожалуйста коды на кнопки, выполняющие функции "следующая запись, предыдущая запись", по аналогии те что находятся внизу...

Следующая/предыдущая запись mysql
Доброго времени суток. На PHP сделал код для добавления и удаления записей. Есть главная страница, на которой выводятся все записи. ...

47
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
08.03.2013, 23:03
Надо переопределять значение свойства DefaultValue. Для существующих записей на событии Текущая запись (Current), для новой, только вводимой на событии AfterUpdate поля или записи.
Visual Basic
1
Me.МоeПоле.DefaultValue="='" & Me.МоeПоле & "'"
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
09.03.2013, 09:56
Цитата Сообщение от mobile Посмотреть сообщение
Для существующих записей на событии Текущая запись (Current)
Поясните, пожалуйста, зачем?
Цитата Сообщение от mobile Посмотреть сообщение
для новой, только вводимой на событии AfterUpdate поля или записи.
Если вводить без проверки значения свойства NewRecord формы, то будет срабатывать не только на новой записи. Если же проверять
Visual Basic
1
If Me.NewRecord Then Me!tel.DefaultValue = "='" & Me!tel & "'"
то на событии AfterUpdate формы Me.NewRecord равно False.
ИМХО, рекомендуемый вами код поместить в процедуру обработки события AfterInsert формы.
Цитата Сообщение от Ruido
То есть если в предыдущей записи было написано "Модель 1", то в следующей (создаваемой) по умолчанию сразу было "Модель 1".
Предположим, что под словом "запись" имеется ввиду запись (строка) таблицы/запроса, а не нечто иное.
Что вы понимаете под словом "предыдущая" запись? Варианты, напрашивающиеся после прочтения цитаты:
1. Запись на форме, расположенная непосредственно перед вновь создаваемой.
2. Запись добавленная последней (по времени)
3. Последняя (по времени) запись, в которой корректировалось интересующее нас поле.
0
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
09.03.2013, 10:45
Цитата Сообщение от Ruido Посмотреть сообщение
Как в форме вида "Несколько элементов" сделать так, что бы значение предыдущей записи ставилось как значение по умолчанию?
Ещё как вариант - сохранять в пользовательской системной таблице.
Во-первых, чуть надёжнее, если данные в таблицу вводятся не так интенсивно; во-вторых, важнее, - "на перспективу": таким образом можно сохранять и любые другие пользовательские настройки. А сделать функционал со временем гибче и удобнее и предоставить пользователю возможность подстраивать интерфейс под себя - до этого аппетиты рано или поздно возрастут :-)
Получать эти величины можно приблизительно так:
Visual Basic
1
2
s= DLookup("DefaultOne", "tblSysOptions", "Id=" & Forms!frmВашаФорма!Id)
' условие просто для примера синтаксиса
0
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
09.03.2013, 10:50  [ТС]
Прикладываю архив с файлом (сразу это мне надо было сделать - ступил). Там форму я не делал полностью - лежит эскиз.

Форма "Нормировщик". Я пытаюсь, что бы при создание новой строчки - в поле "Модель" ставилось значение с предыдущей (последней) строчки.

Логика следующая - человек создает модель обуви. Какая именно модель - я включаю в каждую строчку, что бы отчеты проще делать и для связей. В поле "Номер" - там просто номера по порядку для этой конкретной модели. Я не стал добавлять столбцы в которых как раз и будет основная начинка.
Логика следующего порядка:
Модель такая-то состоит из 10 деталей. У меня в базе десять строк. В первом столбце десять раз указывает человек название одной и той же модели. Во втором - порядковый номер, поскольку без пропусков, то 1,2,3,4...8,9,10. Следующие столбики заполнены данными которые являются индивидуальными.
Я хочу упростить участь человека и что бы ему не вводить каждый раз название модели, а оно смотрелось из предыдущей строчки. И человеку приходилось менять лишь когда он делает новую модель.

В идеале прикрутить еще бы счетчик порядковых номеров, что бы по умолчанию ставилось число на единичку больше чем предыдущее - но это мелочь. А вот выбирать каждый раз из сотен моделей одну - это достаточно напряжно.
Вложения
Тип файла: rar учет заданий 08 марта.rar (101.1 Кб, 69 просмотров)
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
09.03.2013, 11:15
По схеме данных Нормировщик подчинена Модели. Почему бы форму Нормировщик не подчинить форме Модели (связь Код-Модель), тогда не нужно никаких изменений значений по умолчанию, модель будет браться из основной формы.
1
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.03.2013, 11:15
Цитата Сообщение от minob Посмотреть сообщение
Цитата Сообщение от mobile Посмотреть сообщение
Для существующих записей на событии Текущая запись (Current), для новой
Поясните, пожалуйста, зачем?
Автор хочет минимизировать затраты труда. Записав код на Current, можно поставить курсор на запись с нужным значением и получить желаемый DefaultValue без дополнительного выбора.
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
09.03.2013, 12:19
Цитата Сообщение от mobile Посмотреть сообщение
Автор хочет минимизировать затраты труда. Записав код на Current, можно поставить курсор на запись с нужным значением и получить желаемый DefaultValue без дополнительного выбора.
При объеме данных, значительно превышающем количество строк комбобокса, найти необходимую запись иногда труднее, чем выбрать нужное значение, тем более, если включена автоподстановка. Еще один минус - сортировка или фильтрация вероятнее всего изменят значение DefaultValue, не говоря уже о случайном или нет позиционировании на "неподходящую" запись, и "наша песня хороша, начинай сначала".
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.03.2013, 12:44
Цитата Сообщение от minob Посмотреть сообщение
При объеме данных, значительно превышающем количество строк комбобокса, найти необходимую запись иногда труднее, чем выбрать нужное значение, тем более, если включена автоподстановка. Еще один минус - сортировка или фильтрация вероятнее всего изменят значение DefaultValue, не говоря уже о случайном или нет позиционировании на "неподходящую" запись, и "наша песня хороша, начинай сначала".
Вероятная ситуация. Но не исключен и обратная случай. Поэтому желательно предоставить юзеру возможности. А уж какие ему пригодятся, покажет опыт использования. Но не лишать его их, исходя из собственного понимания плохо неизвестной ситуации.

А "случайное позиционирование" не более вероятно как и при выборе с комбо.

Добавлено через 8 минут
Говоря про "обратный случай", имелось в виду вот это "При объеме данных, значительно превышающем количество строк комбобокса, найти необходимую запись иногда труднее, чем выбрать нужное значение"
0
09.03.2013, 12:48

Не по теме:

Как бы было хорошо, когда б на Форуме нашёлся бы энтузиаст, конвертирующий вложения в старослужащий формат. Вот была бы благодать :yahoo:
(Я не за неуставные отношения, но ведь картошку тоже кто-то должен чистить :) )

0
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
09.03.2013, 13:55  [ТС]
mobile

Внес код в поле "Номер" на событие "После обновления". Вместо МоeПоле указал название поля "Модель". Вообще никакой реакции.

ltv_1953

Беда в том, что я совсем не понимаю как делать подчиненные формы. Поищу в сети, но пока не знаю как это может сработать. Хотя вроде нашел как... буду экспериментировать.

Андрэич
Могу попробовать в старом формате сохранить если не открывается.


//////////////////////////
Я думаю, что если смогу решить эту проблему, то база которую так или иначе делаю два-три года - будет готова.
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
09.03.2013, 14:09
Цитата Сообщение от Ruido Посмотреть сообщение
Беда в том, что я совсем не понимаю как делать подчиненные формы. Поищу в сети, но пока не знаю как это может сработать. Хотя вроде нашел как... буду экспериментировать.
Посмотрите во вложении Модели1 и подчиненную ей Копия "Нормировщик". В режиме таблицы форма, подчиненная Модели1, открывается по нажатию на + слева. Там и делается ввод составляющих конкретной модели.
Вложения
Тип файла: 7z учет заданий 08 марта.7z (55.7 Кб, 56 просмотров)
1
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
10.03.2013, 13:46  [ТС]
Почти всё законченно. Вариант ltv_1953 оказался оптимальным (спасибо всем кто помогал). Теперь я в такой вид переведу все остальные формы и дело будет в шляпе. Но возник последний рубеж. Посмотрите пожалуйста приложенный файлик.

Суть в том, что рядовой сотрудник заполняет форму, его начальник смотрит-проверяет. И если всё нормально, то ставит электронную визу (логическое поле). И если виза стоит, то рядовой сотрудник уже не может ничего изменить исправить.

Я это решал кодом (который мне тут дали):

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
OPTION Compare DATABASE
 
IF [ВизаНачальникаНормировщиков].Value = TRUE THEN
 
Me.[Номер].Enabled = FALSE
Me.[ВидМатериала].Enabled = FALSE
Me.[ОбъемОперацииДлина].Enabled = FALSE
Me.[ОперацийКоличество].Enabled = FALSE
Me.[Операция].Enabled = FALSE
Me.[Особенности].Enabled = FALSE
Me.[Разряд].Enabled = FALSE
Me.[СложностьОперации].Enabled = FALSE
 
ELSE
 
Me.[Номер].Enabled = TRUE
Me.[ВидМатериала].Enabled = TRUE
Me.[ОбъемОперацииДлина].Enabled = TRUE
Me.[ОперацийКоличество].Enabled = TRUE
Me.[Операция].Enabled = TRUE
Me.[Особенности].Enabled = TRUE
Me.[Разряд].Enabled = TRUE
Me.[СложностьОперации].Enabled = TRUE
 
END IF
END Sub
Если в логическом поле "Виза" есть галочка, то доступа к другим полям нет. Если галочки нет, то можно другие поля править.
Но тут внезапно код отказался работать(

Посмотрите пожалуйста - форма "МодельНормировщика" - базовая. "Нормировщик" - подчиненная форма с кодом.
Вложения
Тип файла: rar учет заданий 08 марта.rar (132.9 Кб, 38 просмотров)
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
10.03.2013, 14:27
Вы потеряли заголовок процедуры.
Во вложении еще кое-что подчищено.
1. Поле ВизаНачальникаНормировщиков в подчиненной не нужно, оно есть в основной и в коде ссылка на него. поэтому из источника данных подчиненной это поле убрано вместе с основной таблицей.
2. Нужно добавить запрет на удаление записей из подчиненной, если стоит ВизаНачальникаНормировщиков .
Процедура добавлена.
3. Хотя здесь это не нужно, обычно добавляют еще и запрет на добавление записей. Для общности добавлена.
Вложения
Тип файла: 7z учет заданий 08 марта.7z (65.2 Кб, 24 просмотров)
1
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
10.03.2013, 17:43  [ТС]
Спасибо, вижу код. Дальше его буду копировать. Но беда в том, что данный метод не защищает от исправления данных после визирования.

Если нажать на "плюсик", откроется подчиненная форма. И если сразу щелкнуть на каком-либо поле, то оно доступно для редактуры и изменение сохраняется. Это работает лишь раз и если материнскую форму только-только загрузили, но из-за этого бага всё визирование не работает.
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
10.03.2013, 18:14
Да, при обработке текущей записи подчиненной формы. текущая запись основной формы м.б. не той. По текущим записям в формах видно, что вы попадаете на поле записи подчиненной, не запись основной пока еще другая. Посмотрите другой вариант. Там блокируется вся подчиненная форма и отдельно обрабатывается удаление в подчиненной (при попытке удаления текущая основной всегда та, которая нужна).
Вложения
Тип файла: 7z учет заданий 08 марта2.7z (65.1 Кб, 73 просмотров)
1
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
10.03.2013, 18:28  [ТС]
Всё работает) Огромное спасибо! Теперь под этот алгоритм буду всё перебивать. Я вижу свет в конце тоннеля!
0
 Аватар для zxcvbn12345
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 13
28.07.2016, 07:45
Доброго дня, други. Хочу, что бы в форме, основанной на выборке из десяти последних по дате записей и отсортированных по возрастанию, одно из полей принимало по умолчанию значение предыдущей записи.

Прописываю это так: =DLookUp("[Поле1]";"[Запрос1]";"Дата=" & DMax('[Дата]';'[Запрос1]'))

По отдельности Dmax работает и возвращает необходимую последнюю дату из выборки. DLookUp бес параметра DMax возвращает первую запись из выборки. А вот с параметром DMax выдает ошибку. Подозреваю, что ошибка в синтаксисе. Подскажите, пожалуйста, в чем ошибка. Спасибо.
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
28.07.2016, 08:25
Попробуйте отформатировать DMax("[Дата]";"[Запрос1]"):
Format(DMax("[Дата]";"[Запрос1]");"\#mm\/dd\/yyyy\#")
1
 Аватар для zxcvbn12345
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 13
28.07.2016, 09:50
ltv_1953, спасибо огромное. То, что нужно!

Добавлено через 1 час 18 минут
ltv_1953, а может быть вы ещё знаете как добавить второе условие по времени к этому запросу? Это уже для другой таблицы, но смысл тот же. Единственное отличие, что в ней есть отдельно поле Дата и отдельно поле Время. Если не делать условие на время, то выдаст первую запись последней даты. Но так как на эту дату записей несколько, то из них необходимо взять последнюю по времени.

Я делаю так: =DLookUp("[Поле1]";"[Запрос1]";"Дата=" & Format(DMax("[Дата]";"[Запрос1]");"\#mm\/dd\/yyyy\#") and

"Время=" & Format(DMax("[Время]";"[Запрос1]");"\#hh\/nn\#"))

Но условие в таком виде не срабатывает и возвращает первую запись из все выборки как будто условия вовсе не прописано.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.07.2016, 09:50
Помогаю со студенческими работами здесь

Предыдущая запись foreach DataGridView
Как обратиться к предыдущей записи? Convert.ToSingle(row.Cells.Value) Добавлено через 1 час 17 минут В смысле к...

Предыдущая запись переодического регистра сведений
Здрасте, как получить значение ресурса предыдущей записи регистра сведений. Нужно получить разность значений текущей записи в СКД и...

Как разрешить запись в файл, по умолчанию запись не разрешена
Помогите! НАчинающий php - программист. Как разрешить запись в файл, по умолчанию запись не разрешена. Вот что пишет: Warning:...

Как сделать значение по умолчанию для параметра, если оно должно быть значением по умолчанию для типа T?
Как сделать значение по умолчанию для параметра, если оно должно быть значением по умолчанию для типа T? Module Program Sub Method(Of...

Как сделать учетную запись по умолчанию
На компе есть две учетки Администратор и Гость который отключен Но при перезагрузке компа появляться какая то новая учетная запись с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru