![]() |
#1 |
Участник
|
![]()
Есть запись с набором полей Day1,Day2, .... , Day31
как программно перебрать их все ? st = strfmt("if ((tmpTime1.Day%1==0) && (tmpTime8.Day%1==0) && (tmpTime10.Day%1==0)) countDayHolyday++;",int2str(i)); compiler.compile(st); st = compiler.execute(st); якобы считает ( но неверно - прибавляет 3 ) а потом выдает в логе 31 запись что тело для метода %3 не найдено runbuf(st); вообще прекращает выполнение безо всяких ошибок |
|
![]() |
#2 |
Moderator
|
Для таких задач существует тип поля Массив. Пример - EDT Dimension.
__________________
Андрей. |
|
![]() |
#3 |
Участник
|
Привет!
Если поля названы однопитно, то можно использовать макрос (см. например, класс InventOnHand.findSumJoin()
__________________
С уважением, Андрей Беседин |
|
![]() |
#4 |
Участник
|
не, макросы устаревший инструмент.
луше ими не пользоваться. best practice рекомендует использовать их только в качестве констант и для pack/unpack. Не хотел вмешиваться. Но по-моему, надо править в постановке задачи или изменять проектирование баз данных. Это бардак, а не структура база данных. Сугубое ИМХО. |
|
![]() |
#5 |
Участник
|
Полностью солидарен с Mazzy.
Полностью согласен с Best Practice Но если решать задачу нужно именно в такой постановке, то макросы - это выход (хоть и плохой) И Dron AKA Andy тоже верную идею говорит!
__________________
С уважением, Андрей Беседин |
|
![]() |
#6 |
Участник
|
for (i = 1; i <= dayofMth(endMth(_payPeriod)) ; i++)
{ fieldId = fieldName2Id(tableNum("Таблица"),"day" + int2str(i)); Таблица.(fieldId) - значение поля } со структурой базы все нормально, например так сделан ежедневный табель учета рабочего времени |
|
![]() |
#7 |
Участник
|
для ежедневного табеля именно структура и выглядит странно.
почему 31 день? почему не квартал или неделя в строчке? как будете делать запрос, чтобы узнать отработанное внемя понедельно? как будете делать запрос, чтобы сравнить отработанное в первой половине месяца время со временем, отработанным во второй половине? а первую половину одного месяца с первой половиной другого? В поставноке задачи что-нибудь про месяц было? Кто-нибудь это слово произносил? Или это выдумки программиста, чтобы потом героически преодолевать программистские трудности и динамически строить никому не нужные запросы? |
|
![]() |
#8 |
Участник
|
период попал случайно при копировании стандартного кода. Смысл не в этом вовсе, поставьте вместо периода цифру 31.
|
|