0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
|
|
1 | |
Предыдущая запись как значение по умолчанию08.03.2013, 22:17. Просмотров 6641. Ответов 47
Метки нет Все метки)
(
Удивительно, но поиском не смог найти, хотя должно быть не первый спрашиваю...
Как в форме вида "Несколько элементов" сделать так, что бы значение предыдущей записи ставилось как значение по умолчанию? То есть если в предыдущей записи было написано "Модель 1", то в следующей (создаваемой) по умолчанию сразу было "Модель 1". И человек если устраивает - ничего не менял бы. А если надо - тогда выбирал бы нужное из выпадающего списка. /// снова переделываю свою базу. надеюсь теперь удастся отойти от экселлевской логики.
0
|
|
08.03.2013, 22:17 | |
Как убрать следующая/предыдущая запись под постом
Следующая/предыдущая запись mysql Предыдущая запись foreach DataGridView |
|
![]() 26610 / 14309 / 3166
Регистрация: 28.04.2012
Сообщений: 15,691
|
||||||
08.03.2013, 23:03 | 2 | |||||
Надо переопределять значение свойства DefaultValue. Для существующих записей на событии Текущая запись (Current), для новой, только вводимой на событии AfterUpdate поля или записи.
0
|
3539 / 1113 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
|
||||||
09.03.2013, 09:56 | 3 | |||||
Поясните, пожалуйста, зачем?
Если вводить без проверки значения свойства NewRecord формы, то будет срабатывать не только на новой записи. Если же проверять
ИМХО, рекомендуемый вами код поместить в процедуру обработки события AfterInsert формы. ![]() Что вы понимаете под словом "предыдущая" запись? Варианты, напрашивающиеся после прочтения цитаты: 1. Запись на форме, расположенная непосредственно перед вновь создаваемой. 2. Запись добавленная последней (по времени) 3. Последняя (по времени) запись, в которой корректировалось интересующее нас поле.
0
|
2840 / 772 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
|
||||||
09.03.2013, 10:45 | 4 | |||||
Ещё как вариант - сохранять в пользовательской системной таблице.
Во-первых, чуть надёжнее, если данные в таблицу вводятся не так интенсивно; во-вторых, важнее, - "на перспективу": таким образом можно сохранять и любые другие пользовательские настройки. А сделать функционал со временем гибче и удобнее и предоставить пользователю возможность подстраивать интерфейс под себя - до этого аппетиты рано или поздно возрастут :-) Получать эти величины можно приблизительно так:
0
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
|
|
09.03.2013, 10:50 [ТС] | 5 |
Прикладываю архив с файлом (сразу это мне надо было сделать - ступил). Там форму я не делал полностью - лежит эскиз.
Форма "Нормировщик". Я пытаюсь, что бы при создание новой строчки - в поле "Модель" ставилось значение с предыдущей (последней) строчки. Логика следующая - человек создает модель обуви. Какая именно модель - я включаю в каждую строчку, что бы отчеты проще делать и для связей. В поле "Номер" - там просто номера по порядку для этой конкретной модели. Я не стал добавлять столбцы в которых как раз и будет основная начинка. Логика следующего порядка: Модель такая-то состоит из 10 деталей. У меня в базе десять строк. В первом столбце десять раз указывает человек название одной и той же модели. Во втором - порядковый номер, поскольку без пропусков, то 1,2,3,4...8,9,10. Следующие столбики заполнены данными которые являются индивидуальными. Я хочу упростить участь человека и что бы ему не вводить каждый раз название модели, а оно смотрелось из предыдущей строчки. И человеку приходилось менять лишь когда он делает новую модель. В идеале прикрутить еще бы счетчик порядковых номеров, что бы по умолчанию ставилось число на единичку больше чем предыдущее - но это мелочь. А вот выбирать каждый раз из сотен моделей одну - это достаточно напряжно.
0
|
![]() 16259 / 6720 / 1458
Регистрация: 21.06.2012
Сообщений: 12,398
|
|
09.03.2013, 11:15 | 6 |
По схеме данных Нормировщик подчинена Модели. Почему бы форму Нормировщик не подчинить форме Модели (связь Код-Модель), тогда не нужно никаких изменений значений по умолчанию, модель будет браться из основной формы.
1
|
3539 / 1113 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
|
|
09.03.2013, 12:19 | 8 |
При объеме данных, значительно превышающем количество строк комбобокса, найти необходимую запись иногда труднее, чем выбрать нужное значение, тем более, если включена автоподстановка. Еще один минус - сортировка или фильтрация вероятнее всего изменят значение DefaultValue, не говоря уже о случайном или нет позиционировании на "неподходящую" запись, и "наша песня хороша, начинай сначала".
0
|
![]() 26610 / 14309 / 3166
Регистрация: 28.04.2012
Сообщений: 15,691
|
|
09.03.2013, 12:44 | 9 |
Вероятная ситуация. Но не исключен и обратная случай. Поэтому желательно предоставить юзеру возможности. А уж какие ему пригодятся, покажет опыт использования. Но не лишать его их, исходя из собственного понимания плохо неизвестной ситуации.
А "случайное позиционирование" не более вероятно как и при выборе с комбо. Добавлено через 8 минут Говоря про "обратный случай", имелось в виду вот это "При объеме данных, значительно превышающем количество строк комбобокса, найти необходимую запись иногда труднее, чем выбрать нужное значение"
0
|
Андрэич
|
09.03.2013, 12:48
#10
|
Не по теме: Как бы было хорошо, когда б на Форуме нашёлся бы энтузиаст, конвертирующий вложения в старослужащий формат. Вот была бы благодать :yahoo:
0
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
|
|
09.03.2013, 13:55 [ТС] | 11 |
mobile
Внес код в поле "Номер" на событие "После обновления". Вместо МоeПоле указал название поля "Модель". Вообще никакой реакции. ltv_1953 Беда в том, что я совсем не понимаю как делать подчиненные формы. Поищу в сети, но пока не знаю как это может сработать. Хотя вроде нашел как... буду экспериментировать. Андрэич Могу попробовать в старом формате сохранить если не открывается. ////////////////////////// Я думаю, что если смогу решить эту проблему, то база которую так или иначе делаю два-три года - будет готова.
0
|
![]() 16259 / 6720 / 1458
Регистрация: 21.06.2012
Сообщений: 12,398
|
|
09.03.2013, 14:09 | 12 |
Посмотрите во вложении Модели1 и подчиненную ей Копия "Нормировщик". В режиме таблицы форма, подчиненная Модели1, открывается по нажатию на + слева. Там и делается ввод составляющих конкретной модели.
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
|
||||||
10.03.2013, 13:46 [ТС] | 13 | |||||
Почти всё законченно. Вариант ltv_1953 оказался оптимальным (спасибо всем кто помогал). Теперь я в такой вид переведу все остальные формы и дело будет в шляпе. Но возник последний рубеж. Посмотрите пожалуйста приложенный файлик.
Суть в том, что рядовой сотрудник заполняет форму, его начальник смотрит-проверяет. И если всё нормально, то ставит электронную визу (логическое поле). И если виза стоит, то рядовой сотрудник уже не может ничего изменить исправить. Я это решал кодом (который мне тут дали):
Но тут внезапно код отказался работать( Посмотрите пожалуйста - форма "МодельНормировщика" - базовая. "Нормировщик" - подчиненная форма с кодом.
0
|
![]() 16259 / 6720 / 1458
Регистрация: 21.06.2012
Сообщений: 12,398
|
|
10.03.2013, 14:27 | 14 |
Вы потеряли заголовок процедуры.
Во вложении еще кое-что подчищено. 1. Поле ВизаНачальникаНормировщиков в подчиненной не нужно, оно есть в основной и в коде ссылка на него. поэтому из источника данных подчиненной это поле убрано вместе с основной таблицей. 2. Нужно добавить запрет на удаление записей из подчиненной, если стоит ВизаНачальникаНормировщиков . Процедура добавлена. 3. Хотя здесь это не нужно, обычно добавляют еще и запрет на добавление записей. Для общности добавлена.
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
|
|
10.03.2013, 17:43 [ТС] | 15 |
Спасибо, вижу код. Дальше его буду копировать. Но беда в том, что данный метод не защищает от исправления данных после визирования.
Если нажать на "плюсик", откроется подчиненная форма. И если сразу щелкнуть на каком-либо поле, то оно доступно для редактуры и изменение сохраняется. Это работает лишь раз и если материнскую форму только-только загрузили, но из-за этого бага всё визирование не работает.
0
|
![]() 16259 / 6720 / 1458
Регистрация: 21.06.2012
Сообщений: 12,398
|
|
10.03.2013, 18:14 | 16 |
Да, при обработке текущей записи подчиненной формы. текущая запись основной формы м.б. не той. По текущим записям в формах видно, что вы попадаете на поле записи подчиненной, не запись основной пока еще другая. Посмотрите другой вариант. Там блокируется вся подчиненная форма и отдельно обрабатывается удаление в подчиненной (при попытке удаления текущая основной всегда та, которая нужна).
1
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
|
|
10.03.2013, 18:28 [ТС] | 17 |
Всё работает) Огромное спасибо! Теперь под этот алгоритм буду всё перебивать. Я вижу свет в конце тоннеля!
0
|
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 13
|
|
28.07.2016, 07:45 | 18 |
Доброго дня, други. Хочу, что бы в форме, основанной на выборке из десяти последних по дате записей и отсортированных по возрастанию, одно из полей принимало по умолчанию значение предыдущей записи.
Прописываю это так: =DLookUp("[Поле1]";"[Запрос1]";"Дата=" & DMax('[Дата]';'[Запрос1]')) По отдельности Dmax работает и возвращает необходимую последнюю дату из выборки. DLookUp бес параметра DMax возвращает первую запись из выборки. А вот с параметром DMax выдает ошибку. Подозреваю, что ошибка в синтаксисе. Подскажите, пожалуйста, в чем ошибка. Спасибо.
0
|
![]() 16259 / 6720 / 1458
Регистрация: 21.06.2012
Сообщений: 12,398
|
|
28.07.2016, 08:25 | 19 |
Попробуйте отформатировать DMax("[Дата]";"[Запрос1]"):
Format(DMax("[Дата]";"[Запрос1]");"\#mm\/dd\/yyyy\#")
1
|
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 13
|
|
28.07.2016, 09:50 | 20 |
ltv_1953, спасибо огромное. То, что нужно!
Добавлено через 1 час 18 минут ltv_1953, а может быть вы ещё знаете как добавить второе условие по времени к этому запросу? Это уже для другой таблицы, но смысл тот же. Единственное отличие, что в ней есть отдельно поле Дата и отдельно поле Время. Если не делать условие на время, то выдаст первую запись последней даты. Но так как на эту дату записей несколько, то из них необходимо взять последнюю по времени. Я делаю так: =DLookUp("[Поле1]";"[Запрос1]";"Дата=" & Format(DMax("[Дата]";"[Запрос1]");"\#mm\/dd\/yyyy\#") and "Время=" & Format(DMax("[Время]";"[Запрос1]");"\#hh\/nn\#")) Но условие в таком виде не срабатывает и возвращает первую запись из все выборки как будто условия вовсе не прописано.
0
|
28.07.2016, 09:50 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Предыдущая запись переодического регистра сведений Как разрешить запись в файл, по умолчанию запись не разрешена
Как сделать учетную запись по умолчанию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |