|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Здравствуйте. Помогите, пожалуйста, решить задачу. Есть форма, поля ID, a и b. ID - счетчик a - число b - текстовое Нужно, чтобы при создании новой записи, предыдущие данные полей a и b появлялись по умолчанию в соответствующих полях формы. Сортировка происходит по полю ID. Данные в поле ID не непрерывные - некоторые записи периодически удаляются. После создания новой записи, нужно, чтобы данные полей a и b можно было редактировать. Вариант поставить на событие Выход Me![a].DefaultValue = Me![a].Value не проходит, так как предполагает создание новой записи вслед за текущей. В моем варианте новая запись может быть создана при нахождении в любой записи. В запросе работает: DLookUp("[a]";"Data";"ID=" & DMax("ID";"Data";"ID<" & [Data].[ID])) As d Но тут данные кладутся в другое поле (d), а мне надо, чтобы появлялись в поле a (числовом), и чтоб потом его отредактировать можно было. Так же и с полем b (текстовым). База во вложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 11:22 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
HB, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 11:59 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Например: 1. На Form_Load перейти на последнюю запись в RecordsetClone и присвоить значения DefaultValue контролов. 2. На Form_AfterInsert присвоить DefaultValue значения из добавленной записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:10 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Панург , Респект! Дай Бог здоровья! Работает как надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:16 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Упс... если a - Двойное с плавающей точкой, то не работает((( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:37 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
HBУпс... если a - Двойное с плавающей точкой, то не работает((( Вероятно у вас десятичный разделитель - запятая. А дробное число должно в это свойство попадать с точкой. А так? Me.a.DefaultValue = Trim( Str (.Fields("a") & "")) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:59 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), не очень корректно выглядит ?"a=" & str(1/3) a= .333333333333333 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 13:10 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), все 3 варианта ?"a=" & str(cdbl(1/3)),"" & 1/3, replace("" & 1/3,",",".") a= .333333333333333 0,333333333333333 0.333333333333333 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 13:13 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Вот так работает. Спасибо колллеге Панургу Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 15:22 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
HBMe.a.DefaultValue = Replace(CStr(Nz(.Fields("a"), 0)), ",", ".") Если поле было пустым, то в новую запись будет подставляться 0. Вас это устраивает? HBMe.b.DefaultValue = """" & Nz(.Fields("b"), vbNullString) & """" Стоило бы проверить ситуацию, если внутри текста есть кавычки. "Двойное с плавающей точкой" не лучший числовой тип. Какое назначение поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 16:05 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ) Большое спасибо. Я взял на заметку Ваши рекомендации. Моя больная голова до реплейса почему-то не додумалась))) Если поле было пустым, то в новую запись будет подставляться 0. Вас это устраивает? Да, поле не может быть пустым, но идею понял, спасибо! "Двойное с плавающей точкой" не лучший числовой тип. Какое назначение поля? Поле досталось по наследству, пока не знаю, какое может быть максимальное значение. Но также благодарю за подсказку, если окажется, что слишком громоздко, переделаю на одинарное. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 16:43 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
HBПоле досталось по наследству, пока не знаю, какое может быть максимальное значение. Но также благодарю за подсказку, если окажется, что слишком громоздко, переделаю на одинарное. Одинарное еще хуже. Если в поле указываются цена/сумма, то тип лучше "Денежный". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 17:27 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Выдержка из HELP : Совет. Денежный тип данных рекомендуется использовать для полей, в которых планируется хранить числовые значения с одним-четырьмя знаками в дробной части. При обработке значений полей типа «С плавающей точкой (4 байт)» (Single) и «С плавающей точкой (8 байт)» (Double) выполняются вычисления с плавающей точкой. Для значений денежных полей используются более быстрые вычисления с фиксированной точкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 18:01 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Одинарное еще хуже. Если в поле указываются цена/сумма, то тип лучше "Денежный". Одно из полей - денежное. Остальные значения. Денежное тоже нормально работает. Все работает как надо! Спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 18:08 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Столкнулся с другой проблемой. При создании новой записи все поля формы заполняются из предыдущей записи, однако, встречаются ситуации, когда ничего менять в полях не надо. Однако, по понятным причинам, пока запись не редактируется, она в таблицу не заносится. Что, коллеги, посоветуете, кнопочку ли поставить, чтобы данные из формы переносила в таблицу, или какой другой вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 19:00 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
HB, как вариант-источник формы запрос с TOP 1 (с соответствующей сортировкой или отбором);редактирование;сохранение записи в таблицу при закрытии формы ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 22:51 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
sdkuHB, как вариант-источник формы запрос с TOP 1 (с соответствующей сортировкой или отбором);редактирование;сохранение записи в таблицу при закрытии формы Так я не хочу закрывать форму, а хочу перейти на новую запись. А сейчас не могу... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 01:55 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
HBкнопочку ли поставить, чтобы данные из формы переносила в таблицу, или какой другой вариант?Тут как тебе удобно (я не знаю, ни как это выглядит (стиль), ни какие задачи) - кнопочку поставь, лови нажатие спец. клавиши и т.д. HBПри создании новой записи все поля формы заполняются из предыдущей записи, однако, встречаются ситуации, когда ничего менять в полях не надо. Однако, по понятным причинам, пока запись не редактируется, она в таблицу не заносится.И что? Ты хочешь чтобы добавилось само? Тут всё просто - в процедуре события вышеназванных объектов пробегись по контролам (по тем где значения есть!) и присвой им их дефолтное значение. Далее сохрани новую запись Код: vbnet 1.
Усё. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 04:04 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Панург И что? Ты хочешь чтобы добавилось само? Тут всё просто - в процедуре события вышеназванных объектов пробегись по контролам (по тем где значения есть!) и присвой им их дефолтное значение. Далее сохрани новую запись Код: vbnet 1.
Усё. Погоди, мы же и так присваиваем этим полям дефолты Код: vbnet 1.
Ты прости, пожалуйста, я тут с питона))) Логика немного другая... Если мы контролу присвоили уже дефолтное значение откуда тут появится Dirty? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 15:07 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
HBвстречаются ситуации, когда ничего менять в полях не надо. Однако, по понятным причинам, пока запись не редактируется, она в таблицу не заносится. Так надо начать редактирование. Например скопировать/вставить значение или добавить в конце текста пробел. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 15:38 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Так надо начать редактирование. Например скопировать/вставить значение или добавить в конце текста пробел. Это понятно, только тут появляется опасность ошибки оператора, например, забудет убрать пробел, или откопипастит не то... и тогда в первом случае данные по полю уже не сгруппировать, а во втором вообще непонятно что произойдет, но точно, ничего хорошего. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 17:23 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
И пробела не нужно - достаточно нажать Enter, находясь в любом поле новой записи. Запись "оживет", и можно ее сохранить, перейдя, например, в предыдущую запись или в любую другую. Можно сымитировать нажатие Enter через SendKeys, а затем сразу выполнить Dirty=False. Но это сомнительный способ, хотя бы потому, что начиная с Win7 операц. система трактует SendKeys как "потенциально вредоносную" команду (просто так, на всякий случай) и нужно проделать предварительно некоторые манипуляции с учетной записью пользователя, чтобы SendKeys работала. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 18:55 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Вот решение: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Спасибо коллеге Панургу . Как только мы присваиваем значению поля его дефолтное значение Me.a.Value = Me!a, тут же происходит инициализация записи данных в таблицу. Вуаля))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 19:06 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Думаю, даже без поля b обойтись! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 19:07 |
|
Значение полей формы из предыдущей записи
|
|||
---|---|---|---|
#18+
Финальная рабочая версия скрипта: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2017, 19:29 |
|
|
start [/forum/topic.php?fid=45&fpage=84&tid=1612771]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 154ms |
0 / 0 |