Обработка пакетом файлов

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Обработка пакетом файлов

Сообщение gopstop2007 »

Как выполнить одинаковые действия над многими файлами, FILE_A01, FILE_A02, ..., FILE_A20 в их копии только в другом драйвере FILE_B01, FILE_B02, ..., FILE_B20?

Код: Выделить всё

LOOP  
    DO OpenFiles
    
    STREAM(FILE_B01)
    IF RECORDS(FILE_A01)
        SET(FILE_A01)
        Loop while Access:FILE_A01.Next() = Level:Benign     
            CLEAR(FB01:RECORD)
            FB01:RECORD = FA01:RECORD
            APPEND(FILE_B01)
            IF ERRORCODE()
                Message('Ошибка: '&ERRORCODE() &' : '& ERRORFILE(),'Ошибка')
                BREAK
            END    
        END
    ELSE
        BREAK       
    END
    BUILD(FILE_B01)
    FLUSH(FILE_B01)
END
Никогда не приходилось с таким сталкиваться, прошу помощи :)
Спасибо за внимание
Последний раз редактировалось gopstop2007 03 Июль 2020, 16:40, всего редактировалось 1 раз.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Обработка пакетом файлов

Сообщение gopstop2007 »

вот что у меня получилось, поправьте если что то не так, спасибо

Процедура OneFillToTwo((FileManager pFM,FileManager pFM2)

Код: Выделить всё

    pFM.Open; pFM.UseFile
    pFM2.Open; pFM2.UseFile

    IF RECORDS(pFM.File)
        SET(pFM.File)
        Loop while pFM.Next() = Level:Benign 
            CLEAR(pFM2.File)						! CLEAR(my:RECORD)
            pFm2.File{PROP:Record} = pFm.File{PROP:Record}		! pFM:RECORD = pFM:RECORD
            pFM2.Insert()
            IF ERRORCODE()
                Message('Ошибка: '&ERRORCODE() &' : '& ERRORFILE(),'Ошибка')
                RETURN 0
            END    
        END
    ELSE
        RETURN 0
    END
    pFM.close()
    pFM2.close()
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Обработка пакетом файлов

Сообщение kreator »

Маленькая ремарка. Давно делал подобное. Была проблема при присвоении целой записью с NULL'ами. Пришлось явно делать setnull.
We are hard at work… for you. :)
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

Обработка пакетом файлов

Сообщение porutchik »

gopstop2007 писал(а): 03 Июль 2020, 11:29 IF NOT RECORDS(FILE_A01)
BREAK
END

STREAM(FILE_B01)
IF RECORDS(FILE_A01)
зачем второй IF RECORDS ?
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Обработка пакетом файлов

Сообщение gopstop2007 »

porutchik писал(а): 03 Июль 2020, 16:32 зачем второй IF RECORDS ?
кусок готового кода выдрал, между ними еще кое что было из третьего :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Обработка пакетом файлов

Сообщение gopstop2007 »

gopstop2007 писал(а): 03 Июль 2020, 13:56

Код: Выделить всё

            CLEAR(pFM2.File)						! аналог CLEAR(my2:RECORD)
            pFm2.File{PROP:Record} = pFm.File{PROP:Record}		! аналог my2:RECORD = my1:RECORD
Ошибся в данном коде, нужна помощь как подменить CLEAR(my2:RECORD) и my2:RECORD = my1:RECORD подскажите как правильно?
Заранее благодарю.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Обработка пакетом файлов

Сообщение kreator »

Может вот так:

Код: Выделить всё

rec1 &= pFm.File{PROP:Record}
rec2 &= pFm2.File{PROP:Record}
rec1 = rec2 или rec1 :=: rec2
Объявление:

Код: Выделить всё

rec1	&Group
rec1	&Group
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Обработка пакетом файлов

Сообщение gopstop2007 »

kreator писал(а): 05 Июль 2020, 21:23 Может вот так:

Код: Выделить всё

rec1 &= pFm.File{PROP:Record}
rec2 &= pFm2.File{PROP:Record}
rec1 = rec2 или rec1 :=: rec2
так делал rec1 :=: rec2 не работало, спасибо kreator так заработало rec1 = rec2 :ty:
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Обработка пакетом файлов

Сообщение Admin »

Очень странно.

Код: Выделить всё

rec1 :=: rec2
Обязано работать независимо от того группа это или ссылка на группу.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить