22.03.2004, 12:43 | #1 |
Участник
|
перебрать все поля Day1.... Day31
Есть запись с набором полей 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); вообще прекращает выполнение безо всяких ошибок |
|
22.03.2004, 13:29 | #2 |
Moderator
|
Для таких задач существует тип поля Массив. Пример - EDT Dimension.
__________________
Андрей. |
|
22.03.2004, 14:20 | #3 |
Участник
|
Привет!
Если поля названы однопитно, то можно использовать макрос (см. например, класс InventOnHand.findSumJoin()
__________________
С уважением, Андрей Беседин |
|
22.03.2004, 14:54 | #4 |
Участник
|
не, макросы устаревший инструмент.
луше ими не пользоваться. best practice рекомендует использовать их только в качестве констант и для pack/unpack. Не хотел вмешиваться. Но по-моему, надо править в постановке задачи или изменять проектирование баз данных. Это бардак, а не структура база данных. Сугубое ИМХО. |
|
22.03.2004, 15:17 | #5 |
Участник
|
Полностью солидарен с Mazzy.
Полностью согласен с Best Practice Но если решать задачу нужно именно в такой постановке, то макросы - это выход (хоть и плохой) И Dron AKA Andy тоже верную идею говорит!
__________________
С уважением, Андрей Беседин |
|
22.03.2004, 15:21 | #6 |
Участник
|
for (i = 1; i <= dayofMth(endMth(_payPeriod)) ; i++)
{ fieldId = fieldName2Id(tableNum("Таблица"),"day" + int2str(i)); Таблица.(fieldId) - значение поля } со структурой базы все нормально, например так сделан ежедневный табель учета рабочего времени |
|
22.03.2004, 18:05 | #7 |
Участник
|
для ежедневного табеля именно структура и выглядит странно.
почему 31 день? почему не квартал или неделя в строчке? как будете делать запрос, чтобы узнать отработанное внемя понедельно? как будете делать запрос, чтобы сравнить отработанное в первой половине месяца время со временем, отработанным во второй половине? а первую половину одного месяца с первой половиной другого? В поставноке задачи что-нибудь про месяц было? Кто-нибудь это слово произносил? Или это выдумки программиста, чтобы потом героически преодолевать программистские трудности и динамически строить никому не нужные запросы? |
|
22.03.2004, 19:29 | #8 |
Участник
|
период попал случайно при копировании стандартного кода. Смысл не в этом вовсе, поставьте вместо периода цифру 31.
|
|