|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Даты начальная и конечная берутся из полей формы и присваиваются переменным DateStart и DateEnd Далее запросом к базе (в диапазоне номеров месяцев этих переменных), к таблице, где хранятся плановые показатели я получаю набор этих самых плановых показателей (dao recordset) и далее в цикле умножаю i-й показатель на i-е значение этой самой функции. По окончанию цикла имею сумму как план на указанный диапазон ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 12:00 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
То есть есть три передачи дат: 1) из поля формы в DateStart и DateEnd 2) из DateStart и DateEnd в запрос к БД 3) из DateStart и DateEnd в функцию поля формы - просто текст или используется календарь? переменные DateStart и DateEnd какого типа? Каким образом выполняется запрос к БД - типизированные параметры или простой текст запроса? какая СУБД? какого типа параметры функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 12:39 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
мда .... :) интерфейс и сама база реализованы на акцессе, потом морду буду переделывать на winform 1. "просто" текстовые поля с маской, формат поля - Краткий формат даты, маска - 00.00.0000;0;_ без календаря; 2. обе переменные DateStart и DateEnd типа Date; 3. Запрос к БД (mdb) для "вытаскивания" планового задания по каждому месяцу: Примерно так: strSQL = "SELECT KoDnPlan FROM tPrikaz WHERE NomMonth Between " & Month(Format(DateStart,""MM\/dd\/yyyy"")) & " AND " & Month(Format(DateEND,""MM\/dd\/yyyy"")) где KoDnPlan - тот самый плановый показатель (хитрость или не хитрость заключается в том, что его можно вообще не хранить в базе, т.к. можно просто рассчитать, т.к. дается план на не месяц, а на год, допустим, за год нужно пролечить 8250 больных, следовательно, месячный план равен Round(ГодовойПлан/12) .... но тут набегает ошибка округления .... поэтому пока, чтобы не мудрить, решил хранить в простецкой табличке) NomMonth - номер месяца и далее: set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) 4. функция собственно: Public Function fnProcZap(dtStart As Date, dtEnd As Date, iMonth As Integer) As Double ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 13:26 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
По пунктам (по моей нумерации): 1) как происходит преобразование из текста в дату? (из поля формы в DateStart и DateEnd) 2) зачем тут лишние преобразования??? сначала преобразовываете из даты в строку (функцией format), а потом неявно обратно в дату, при использовании функции Month Код: vbnet 1.
3) При вызове функций никаких преобразований не надо Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 13:42 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Инициализация переменных происходит при вызове функции (показал не полностью), которая в свою очередь вызывается при нажатии кнопки на форме; эта функция проверяет содержимое полей и если они "правильные", возвращает истину: Код: 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.
Модератор: Учимся использовать тэги оформления кода - FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 16:26 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
А где происходит конвертация текста в дату? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 18:46 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.ProА где происходит конвертация текста в дату? Хм ... хороший вопрос ... получается, что нет никакой конвертации ... сами переменные описаны в модуле: '************************************************ 01-02-2014 ************************************************** ' Глобальные переменные для работы с отчетами ' Public dtDateReportStart As Date Public dtDateReportEnd As Date ну а присвоение в уже показанной функции: If Not IsDate(txtDateStart) Or Not IsDate(txtDateEnd) Then MsgBox "Укажите дату начала и окончания формирования отчета!", vbCritical, "Ошибка" txtDateStart.SetFocus Exit Function Else dtDateReportStart = txtDateStart dtDateReportEnd = txtDateEnd End If ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 18:57 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Я, кажется, попросил использовать тэги оформления кода.... стало быть конвертация просиходит здесь.... неявная Код: vbnet 1. 2.
это, в принципе запись аналогична такой Код: vbnet 1. 2.
у нее есть недостаток, если на компьютере установлены региональные стандарты "Английский (США)" (или многие другие), то дата типа "10.05.2014" распознана не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 19:00 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
про тэги учту, не обратил внимания ... так стало быть нужно было бы явно преобразовывать? Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 19:09 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
желательно всегда преобразовывать явно, это лучше с точки зрения понимания того, что вы делаете, взять к примеру ваш код: Код: vbnet 1.
- тут одно явное и два неявных преобразования, а нужно было лишь одно - желательно явное ну и, как я уже сказал выше, если вы хотите, чтобы код работал на компьютере с любыми региональными настройками, то этот код не подойдет. Так как у вас фиксированный шаблон ввода даты, нужно вычленить оттуда по отдельности все компоненты с помощью Mid$ и собрать в дату с помощью DateValue ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 19:28 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.Pro...почему у них время не показывается как ММ:ЧЧ:СС - логичнее для них было бы) Грегорианский календарь и часы были изобретены в Европе. Календарь был тесно связан с религией, если не для религиозных же целей и изобретен. В то время, для указания даты, применялся приблизительно вот такой формат: 25-ый день декабря года Господа нашего 1750 Время не указывалось вовсе. Во-первых, до появления первых паровозов, понятия стандартного времени не существовало, т.е. в двух соседних городах время могло отличаться на час или два. А во-вторых, время узнать было зачастую не так просто как сегодня. К моменту, когда датироваться стали такие печатные издания как газеты, в целях экономии, дату стали существенно сокращать, но в дань традиции порядок не изменился, т.е. выглядело это примерно так: 25 декабря 1750 года, а в последствие перешли к еще более короткой версии: 25/12/1750 Поначалу, аналогичный формат был и в США, точнее тогда еще английской колонии. Однако после получения независимости "религиозный" формат даты утратил свою обязательность. А газеты того времени в заголовках печатали наиболее важные элементы даты, т.е. примерно так: Среда, июнь 12, 1901 или июнь 12, 1901. Год не играл большой роли, т.к. газеты за прошлый год никто не читал, а вот знать месяц было даже важнее дня. Все дело в том, что большинство газет того времени не печатались ежедневно, а раз в месяц, но для порядка день также указывался. Когда газеты стали печатать чаще, то день недели оказался на первом месте, вполне логично предположить, что в то время, знать, что сегодня понедельник важнее, чем знать, что сегодня 7 апреля. Некоторые утверждают, что такой порядок невольно заставлял задуматься о дате и человек ее проще запоминал, но это лишь утверждения. Со временем, формат сократился: июнь/12/1901, а потом еще сократился 6/12/1901. Время приобрело свою техническую и научную важность в эру индустриализации и не имело ничего общего с религией, соответственно, и стандарт был принят исходя из научных логических соображений. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 01:02 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.Proжелательно всегда преобразовывать явно, это лучше с точки зрения понимания того, что вы делаете, взять к примеру ваш код: Код: vbnet 1.
- тут одно явное и два неявных преобразования, а нужно было лишь одно - желательно явное А вот тут поподробнее ... явное - это: Код: vbnet 1.
? А неявные где? Давно ничего не писал на vba, имею дело только с сишарп, который понятно, таких вещей не прощает ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 06:37 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.ProЯ считаю, что тот стандарт стандартнее, где единицы того же смысла переводятся друг в друга путем умножения на степень 10, а не какое-то произвольное число, и даты записываются в порядке увеличения или уменьшения детализации (интересно, а почему у них время не показывается как ММ:ЧЧ:СС - логичнее для них было бы) Число 10 не менее произвольно любого другого. Все остальное дело традиции и привычки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 06:52 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Александр КоротковShocker.Proжелательно всегда преобразовывать явно, это лучше с точки зрения понимания того, что вы делаете, взять к примеру ваш код: Код: vbnet 1.
- тут одно явное и два неявных преобразования, а нужно было лишь одно - желательно явное А вот тут поподробнее ... явное - это: Код: vbnet 1.
? А неявные где? Month должна брать Date, a берет-то строку. Возвращает она число, которое конкатенируется как будто оно уже строка. Вот Вам два неявных преобразования. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 07:16 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Ладно, спасибо всем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 08:02 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
i45Число 10 не менее произвольно любого другого.отнюдь, полагаю, тебе известно происхождение десятичной системы. А, коль скоро, мы считаем именно в десятичной системе, операции с умножением и делением на ее основание необычайно просты. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 09:46 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Александр Коротковимею дело только с сишарп, который понятно, таких вещей не прощаеттогда тем более удивительно отсутствие дисциплинированности в обращении с типами )) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 09:49 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.Proтогда тем более удивительно отсутствие дисциплинированности в обращении с типами )) согласен, есть о чем задуматься :) все равно я буду потом переделывать на шарпе, мне плохо становится от внешнего вида кода vba ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 11:11 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.Proi45Число 10 не менее произвольно любого другого.отнюдь, полагаю, тебе известно происхождение десятичной системы. А, коль скоро, мы считаем именно в десятичной системе, операции с умножением и делением на ее основание необычайно просты. Тем не менее его выбор изначально произволен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 02:52 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
i45произволен.хотя удивительным образом согласуется с количеством пальцев на руке ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 09:18 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.Proхотя удивительным образом согласуется с количеством пальцев на руке ) это называется антропный принцип :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 11:42 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Поэтому произволен. Было бы пальцев восемь, считали бы по основанию восемь. Могли бы считать по основанию пять, и т.д. Математически это не имеет никакого значения, а практически - дело навыка и привычки, приобретаемых в школе. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2014, 11:50 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
i45Поэтому произволен. Было бы пальцев восемь, считали бы по основанию восемь.видимо, мы разный смысл вкладываем в понятие "произвольный". В итоге мы оба имеем ввиду "причинно-следственный". )) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2014, 12:25 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.Proi45Поэтому произволен. Было бы пальцев восемь, считали бы по основанию восемь.видимо, мы разный смысл вкладываем в понятие "произвольный". В итоге мы оба имеем ввиду "причинно-следственный". )) Я вообще забыл, из-за чего все началось. :0) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2014, 12:41 |
|
|
start [/forum/topic.php?fid=60&msg=38607464&tid=2156418]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
547ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 647ms |
0 / 0 |