|
06.11.2013, 12:19 | #1 |
Участник
|
Цитата:
К примеру: выбрали 5 лет - у Вас максимум 1 год, режьте год от имеющейся даты... (...12.12.12 => 12.12.11..12.12.12)
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
06.11.2013, 13:15 | #2 |
Участник
|
Цитата:
ставим фильтр на тип даты = день
а на поле Starting Date - тот самый фильтр, что указал пользователь. далее Date.Find('-') дает нам первую дату фильтра, а Date.Find('+') - последнюю. и опять же никакого разбора на точечьки |
|
06.11.2013, 13:57 | #3 |
Участник
|
имелось в виду что при наложенном фильтре по дате FIND('-') найдет самую первую запись, а FIND('+') - последнюю... аналоги FINDFIRST и FINDLAST - сортировка таблицы по данному полю через конструкцию:
SETCURRENTKEY и ASCENDING перед выборками совсем не помешает - отсортирует записи...
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
07.11.2013, 00:39 | #4 |
Administrator
|
погнали
создаем переменную типа record с субтипом Date, назовем ее _Date далее Код: _Date1 := 0D; _Date2 := 0D; _Date.SETRANGE("Period Type", _Date."Period Type"::"0"{День}); _Date.SETFILTER("Period Start", ТотСамыйДатаФильтрТупымТекстом); IF _Date.FIND('-') THEN Date1 := _Date."Period Start"; IF _Date.FIND('+') THEN Date2 := _Date."Period Start"; если фильтр ..011113, то _Date1 наверняка будет 0D или 1753-й год |
|
07.11.2013, 02:38 | #5 |
NavAx
|
Санчо, не учи плохому
Не FIND('-') и FIND('+'), а FINDFIRST и FINDLAST
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
07.11.2013, 20:12 | #6 |
Участник
|
Цитата:
см. больше тут What impact does my C/AL have on SQL? |
|
06.11.2013, 14:31 | #7 |
Участник
|
Короче я идиот, не могу сделать эту "фигню"
на OnOpenForm реквест формы.. Код: IF DateFilter='' THEN ERROR('Необходимо ввести дату периода'); Item.SETFILTER("Date Filter",DateFilter); periodstart:=Item.GETRANGEMIN("Date Filter"); periodend:=Item.GETRANGEMAX("Date Filter"); |
|
06.11.2013, 15:04 | #8 |
Участник
|
periodstart,periodend пустые при заполненом Datafilter?
|
|
06.11.2013, 15:07 | #9 |
Участник
|
если datafilter 01.01.11..31.12.11
то periodstart=01.01.11 periodend=31.12.11 так же, если дата фильтер 01.01.01 то periodstart=01.01.01 periodend=01.01.01 а если датафильтер ..01.01.11 то ошибка которую пользователь сочтет как ошибку программы скорей, чем то, что он неправильно ввел. |
|
06.11.2013, 15:12 | #10 |
Участник
|
|
|
06.11.2013, 15:13 | #11 |
Участник
|
этот способ мне кажется плохим), я его не хочу использовать, нужно ведь расширять знания, а не делать все однотипно
|
|
06.11.2013, 15:21 | #12 |
Участник
|
В этом случае Вы должны уточнить по ТЗ что должно быть в таких случаях, ибо если пользователь будет ошибаться - крайним он будет делать разработчика (проверено мною не один раз)...
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
06.11.2013, 15:30 | #13 |
Участник
|
А в чем проблема передать 2 переменные, StartDate и EndDate? Если одна из них пустая (= 0D), то отругать пользователя и попросить заполнить.
И есть ли такая необходимость узнавать даты, если они не определены? Может просто в отчете сделать не Код: SETRANGE Код: SETFILTER |
|
06.11.2013, 15:43 | #14 |
Участник
|
Цитата:
у меня на репорте, на реквест форме два поля Startingdate и endingdate, при вызове отчета, нужно передавать DateFilter в старт и енд дейт, но в DateFilter могут ввести такого рода как ..12.12.12 ДАТУ, и теория моя ломиться..\ Конечная дата получается и записывается, когда в DateFilter вписана дата в формате ..12.12.12, но сразу валиться с ошибкой, из за того, что первое поле пустое.. |
|
06.11.2013, 15:59 | #15 |
Участник
|
А вам обязательно в своем отчете использовать 2 переменные? Используйте 1 как на форме или разбирайте на составляющие. Либо через разбор точек, либо сортируйте таблицу по нужной вам дате, накладывайте фильтр и находите первую и последнюю запись, берите из них даты и передавайте в свой отчет.
|
|
06.11.2013, 16:03 | #16 |
Участник
|
Цитата:
Сообщение от Constantine
А вам обязательно в своем отчете использовать 2 переменные? Используйте 1 как на форме или разбирайте на составляющие. Либо через разбор точек, либо сортируйте таблицу по нужной вам дате, накладывайте фильтр и находите первую и последнюю запись, берите из них даты и передавайте в свой отчет.
|
|
06.11.2013, 16:10 | #17 |
Участник
|
GETRANGEMIN и GETRANGEMAX видимо не умеет работать с неопределенной датой. Разбирайте строку и ищите точки, либо ищите первую и последнюю запись.
Код: SETCURRENTKEY("Postin Date"); ASCENDING(True); IF FINDFIRST THEN // тут будет самая ранняя дата StartDate := Rec."Posting Date"; IF FINDLAST THEN // тут будет самая поздняя дата EndDate := Rec."Posting Date"; |
|
08.11.2013, 17:01 | #18 |
Участник
|
Спасибо огромное за советы ребята
есть вопрос мне нужно найти сотрудников, по полю "No. in management comp.", которое лежит на физ лице. и вывести тех у кого они есть, все это делается на Multicompany вот мой код, что неправильно работает, я хз Код: employee.CHANGECOMPANY(company.Name); employee.SETRANGE(employee."No.",PayrollLedgerEntry."Employee No."); employee.FINDFIRST; person.SETRANGE(person."No.",employee."Person No."); person1.FINDSET; person1.SETRANGE(person1."No. in management comp.",person."No. in management comp."); employee1.RESET; employee1.SETRANGE(employee1."Person No.",person1."No.");// TempPayrollAnalysisViewEntry."Employee No." :=employee1."No."; |
|
08.11.2013, 19:13 | #19 |
Участник
|
зачем на person наложен фильтр?
где этот person используется в этом коде? а потом делается поиск записи в person1 и где на него накладывались фильтры не показано вот эта строчка тоже оч странная Цитата:
Цитата:
Здесь получил общий номер, тут вот ищу его в одной фирме, тут ищу в другой. Наверное туплю под вечер, но что нужно получить физ лицо или сотрудника не понял? |
|
08.11.2013, 19:25 | #20 |
Участник
|
Цитата:
Сообщение от InTacto
зачем на person наложен фильтр?
где этот person используется в этом коде? а потом делается поиск записи в person1 и где на него накладывались фильтры не показано вот эта строчка тоже оч странная Цитата:
Цитата:
Здесь получил общий номер, тут вот ищу его в одной фирме, тут ищу в другой. Наверное туплю под вечер, но что нужно получить физ лицо или сотрудника не понял? короче говорил 20 минут с ним(не привело вообще ничего и не понятно еще больше стало),пошел поговорил еще с одним программистом,решили нужно вывести всех пользователей у которых заполнен в управленчиской компании, то есть в текущей. No. in management comp. - поле таблицы Person |
|