|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Есть 4 поля на форме date_in - поле с датой day_in_date - поле для ввода дня (свободное поле) month_in_date - поле для ввода месяца (свободное поле) year_in_date - поле для ввода года (свободное поле) После того, как в эти свободные поля будут вводиться значения, то после проверки поле date_in должно принять соответсвующее значение. Проверка осуществляется, но как вернуть значение из datedat в date_in ? Код: vbnet 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 12:57 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh, У вас функция вообще ничего не возвращает, и работает как обычная процедура с выполнением действия внутри , типа void. Что вы хотите в конечном итоге, чтобы функция проверяла вводимое значение,является ли оно датой? (ну типа количество дней в месяце не больше 31, количество месяцев не больше 12ти,все ли части даты заполнены итд итп?) Если да, то все можно заменить одной функцией vba - IsDate(вашаПеременная) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:16 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh После того, как в эти свободные поля будут вводиться значения, то после проверки поле date_in должно принять соответсвующее значение. -что такое "соответствующее"(чему) значение -если поле типа дата/время зачем его проверять-оно не "проглотит" не правильную дату (а дату,за крайне редким исключением,надо хранить в типе дата\время) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:26 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Вот набор процедур, которые вам уже с самого начала не дадут ввести в поле (какой либо текстбокс на форме к примеру) ничего кроме даты, с умным автозавершением,доводкой и анализом вводимого значения. К примеру поле на форме называется fld_date Код: vbnet 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
А вообще можно в свойствах обычного поля на форме,в свойствах поля указать тип редактирования и форматирования как даты, и вообще вопрос отпадет. Все будет работать как надо без единой строчки кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:28 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Свободные поля для того были введены, чтобы по умолчанию, в поле year_in_date ставился бы текущий год по умолчанию при создании новой записи и если этот год надо будет поменять, то пользователь поменяет его. И фактически только в 2 поля (день и месяц) вводит пользователь данные. У меня раньше в поле даты в маске ввода находилось: 00.00.2021;0;_ Но проблема появилась тогда, когда понадобилось ввести дату 2020 года и эта маска не давала возможности ввести дату другого года. Поэтому было решено ввести эти свободные поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 14:43 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh Свободные поля для того были введены, чтобы по умолчанию, в поле year_in_date ставился бы текущий год по умолчанию при создании новой записи и если этот год надо будет поменять, то пользователь поменяет его. И фактически только в 2 поля (день и месяц) вводит пользователь данные. У меня это реализовано в примере , в предыдущем письме от меня. Можете просто скопировать весь код в модуль формы где ваше поле, и поменять везде во вставленом коде имя поля с моего fld_date на ваше имя поля в вашей базе в вашей форме. Работы на 16 секунд:) И все будет проставлятся в том ракурсе,именно как вам и нужно) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:03 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Можете выслать кусок базы с этим полем , я вам напилю по быстрому) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:05 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh, Не понятно,однако,зачем в поле дата/время маска(как не вводите дату,например так 1,1,1-она сохранится:01.01.2001)а значением по умолчанию пойдет Date,которую при вводе правьте как угодно-если же поле не трогать в тбл. запишется Date. "Все уже украдено (придумано) до нас"-к\ф Бриллиантовая рука ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:18 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
sdku Tishh, Не понятно,однако,зачем в поле дата/время маска(как не вводите дату,например так 1,1,1-она сохранится:01.01.2001)а значением по умолчанию пойдет Date,которую при вводе правьте как угодно-если же поле не трогать в тбл. запишется Date. "Все уже украдено (придумано) до нас"-к\ф Бриллиантовая рука Маска нужна была, чтобы не пользоваться календарем, клиент хочет вручную ввести день и месяц и сразу перейти на ввод следующих данных. Текущий год должен ставиться автоматически, и лишь в случае ввода другого года, ввести вручную и этот год. Если же в этом поле ничего не будет введено, естественно, должно остаться пустое поле. Маска, похоже, совсем не подходит для данного случая. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:37 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Пример в файле ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 15:55 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh, -наличие в записях пустого поля "дата" может породить проблемы(впрочем утверждать это можно видя БД и зная для чего она создается) - что проще:установить курсор перед второй точкой в поле с датой,нажать кнопку мыша и подвинуть его влево(выделить месяц и день в дате по умолчанию)и вбить новые значения или заполнить 2(никому не нужных,кроме Вас,поля) (ради чего и для кого,в очередной раз, "изобретается" велосипед) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 16:05 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh Пример в файле Ловите решение, я понял в чем у вас проблема была основная, вы тестируете на одиночной форме, и когда пытаетесь зафиксировать введенную дату ,к примеру при нажатии на Enter , курсор переходит на новую строку и вы не можете посмотреть ,что вы там вбили. Отмена Enter дело неблагодарное, поэтому с использованием небольшого костыля, удалось решить проблему вашу. Вбивайте в ваше поле (поле date_in) дату (можете 12/07 , можете так 12,04, можете так 1205 , как угодно в общем) и нажимаете на Enter , поле остается на месте, а дата автоматом по вашей логике собирается и остается в этом поле, причем в фокусе. И никаких дополнительных полей не нужно создавать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 18:21 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Лучше эту версию берите, не зависит от того, на какой записи находится курсор. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 18:43 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Сергей Лалов, Интересное решение, большое спасибо. Немного странное решение, неожиданное, и к сожалению мне не очень понятно по какому принципу работает и откуда 2021 записывается. Вот только при вводе даты, у меня работает только такой вариант 12/07 и 12,04 или же 12.04 в зависимости от системы и не работает как 1205 . И всё же хотелось бы знать, как же вернуть значение datedat из функции и присвоить ее date_in . ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 22:47 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh, Ну вот так вот и работает странно, в две строки, но работает. Там идёт снятие нажатия клавиши, если клавиша энтер то курсор переходит на следующую запись, но я его возвращаю назад при помощи метода рекордсета текущей формы. А автодоводка поля типа дата осуществляется аксессом самостоятельно, мы просто возвращаемся назад и смотрим как довелось. Просто чуть побольше узнайте, как работает аксесс. Какая у вас реально задача? Функция должна собрать дату из трех полей, проверить, и если ок-вставить в текстовое поле? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 23:55 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Чувствую что изобретаете дичь, может мне лучше вам дописать, чтобы и 1205 по умолчанию вставлял ось как 12.05.2021?) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2021, 00:05 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
В рабочем варианте этот вариант не подойдет, так как при вводе любой даты появляется дата 30.12.1899. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2021, 11:08 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh Маска нужна была, чтобы не пользоваться календарем, клиент хочет вручную ввести день и месяц и сразу перейти на ввод следующих данных. Текущий год должен ставиться автоматически, и лишь в случае ввода другого года, ввести вручную и этот год. Если же в этом поле ничего не будет введено, естественно, должно остаться пустое поле. Если у поля типа данных "дата/время", то можно вводить любой из вариантов: "12,05","12.05","12/05" или "12-05" и при нажатии "ентера" автоматически подставляется текущий год. И не нужен никакой код, разве что для автозамены "1205" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 09:11 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh В рабочем варианте этот вариант не подойдет, так как при вводе любой даты появляется дата 30.12.1899. А почему у вас в рабочем проекте при вводе любой даты вставляется неправильная дата? Я думаю в этом корень проблемы. Даже если вы вашим методом собираете из трех полей дату и вставляете её в нужное поле и на выходе получается к примеру 30.12.1899 , то это говорить о том что у вас на уровне таблицы стоит некорректный тип данных поля. Либо формат даты отличный от формата РФ, либо стоит некорректная маска , которую кто то неправильно сделал. В тестовом примере работает, если бы выслали кусочек не тестовой базы, то стало бы все ясно сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 15:31 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Beliar Tishh Маска нужна была, чтобы не пользоваться календарем, клиент хочет вручную ввести день и месяц и сразу перейти на ввод следующих данных. Текущий год должен ставиться автоматически, и лишь в случае ввода другого года, ввести вручную и этот год. Если же в этом поле ничего не будет введено, естественно, должно остаться пустое поле. Если у поля типа данных "дата/время", то можно вводить любой из вариантов: "12,05","12.05","12/05" или "12-05" и при нажатии "ентера" автоматически подставляется текущий год. И не нужен никакой код, разве что для автозамены "1205" Тип поля данных "дата/время" и если вводить без маски "12,05","12.05","12/05" или "12-05", то тогда действительно подставляется текущий год, в этом и была причина не появления года. Практически мне нужен код для автозамены "1205", только как это сделать, к сожалению не знаю, с чего начать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 19:39 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh Практически мне нужен код для автозамены "1205", только как это сделать, к сожалению не знаю, с чего начать. Я не понимаю , а зачем нужны 3 поля ? а в одном нельзя дату ввести ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 21:23 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh Тип поля данных "дата/время" и если вводить без маски "12,05","12.05","12/05" или "12-05", то тогда действительно подставляется текущий год, в этом и была причина не появления года. Практически мне нужен код для автозамены "1205", только как это сделать, к сожалению не знаю, с чего начать. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
написано на скорую руку, поэтому весьма корявенько. При применении функции CDate() может сменится формат даты. В этом случае нужно применить еще и Format() ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 14:03 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh Вот только при вводе даты, у меня работает только такой вариант 12/07 и 12,04 или же 12.04 в зависимости от системы и не работает как 1205 . Код: vbnet 1.
никак не "вкурю" о какой такой (пользовательской) функции идет речь и зачем такие заморочки? создайте программный продукт которым сможет пользоваться даже дурак - только он и будет им пользоваться или Вы очень туманно все объясняете ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 16:20 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Единственная цель, ввести только 4 цифры (день и месяц) без всяких знаков и чтобы автоматически ставился текущий год и лишь по мере необходимости иметь возможность менять сам год. А иметь дополнительно 3 поля наряду с датой не было целью, так как в самой дате мне не удалось сделать то, что хотелось. Пример с тремя полями уже есть (просто длинный код получился - таких дат 3 штуки на форме), но я пока что ищу вариант получше. Сейчас пересмотрю выше примеры и потом решу что делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 20:29 |
|
вернуть значение из Function
|
|||
---|---|---|---|
#18+
Tishh Единственная цель, ввести только 4 цифры (день и месяц) без всяких знаков и чтобы автоматически ставился текущий год Ну так правильно вам тут подсказывали уже. Что то такое: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 21:55 |
|
|
start [/forum/topic.php?fid=45&msg=40042286&tid=1609776]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
130ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 244ms |
0 / 0 |