Clarion - SQLite

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
pansoft
Бывалый
Сообщения: 68
Зарегистрирован: 08 Август 2011, 10:37

Clarion - SQLite

Сообщение pansoft » 28 Июнь 2017, 10:10

Добрый день!
Приложение на С10 база SQLite 3.
Вот такой код. Переносит данные из MSSQL в SQLite для дальнейшей отправки на сайт.

В результате выполнения происходит стремительное увеличение памяти выделенной под приложение.
Размер выгруженного файла 24 м, а память увеличивается на 240.
В общем DISPOSE(STT_) не срабатывает.
Экспорт запускается по расписанию каждые 3 часа. К вечеру память составляет 2G.
Может кто сталкивался.

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

Stt_&=NEW(File)
Stt_{PROP:Driver}='MSSQL'
Stt_{PROP:Owner}=GLO:ConnectionString
UnfixFormat(STT_)
STT_{PROP:SQL}='CALL spWebExport(8)'
FixFormat(Stt_)
if ERRORCODE()
    AmountErr=FILEERRORCODE()
    ThisWindow.AddMes(FILEERROR()&' FIX',2,1)
    UnfixFormat(STT_)
    DISPOSE(STT_)
    return AmountErr
END
WebPresence{PROP:SQL}='pragma journal_mode=off;'
WebPresence{PROP:Logout}=1
I=0
LOOP
    NEXT(Stt_)
    if errorcode() THEN
        break
    END
    I+=1
    AGroup&=Stt_{prop:Record}
    WPS:ItemId=WHAT(AGroup,1)
    WPS:StoreId=WHAT(AGroup,2)
    WPS:InStock=WHAT(AGroup,3)
    WPS:PriceWVat=WHAT(AGroup,4)
    WPS:ItemAmount=WHAT(AGroup,5)
    IF Access:WebPresence.TryInsert()<>Level:Benign
        I-=1
        BREAK
    END
END
CLOSE(Stt_)
COMMIT
!WebCatalog{PROP:SQL}='COMMIT;'
ThisWindow.AddMes('Наличие '&I,0,1)
UnfixFormat(STT_)
DISPOSE(STT_)

Yufil
Ветеран движения
Сообщения: 1170
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Clarion - SQLite

Сообщение Yufil » 28 Июнь 2017, 10:31

Хмм... первый раз вижу полностью динамически создаваемый файл, без текущей записи и полей. А так можно? Скорее всего, и Кларион считает, что нельзя...

pansoft
Бывалый
Сообщения: 68
Зарегистрирован: 08 Август 2011, 10:37

Clarion - SQLite

Сообщение pansoft » 28 Июнь 2017, 10:47

В других приложениях работает без проблем.
Больше грешу на SQLite.

Аватара пользователя
Admin
Администратор
Сообщения: 3482
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Clarion - SQLite

Сообщение Admin » 28 Июнь 2017, 10:49

Yufil писал(а):
28 Июнь 2017, 10:31
Скорее всего, и Кларион считает, что нельзя...
Но должно же работать если компилируется :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Admin
Администратор
Сообщения: 3482
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Clarion - SQLite

Сообщение Admin » 28 Июнь 2017, 10:51

pansoft писал(а):
28 Июнь 2017, 10:10
WPS:ItemId=WHAT(AGroup,1)
странный WHAT без &=
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Admin
Администратор
Сообщения: 3482
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Clarion - SQLite

Сообщение Admin » 28 Июнь 2017, 10:53

Хотя нашел у SV одно место

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

                 LOC:ANYField &= WHAT(SELF.FieldsGroup, LOC:IndexG)
                 LOC:ANYField = WHAT(LOC:Group, parKey{PROP:Field,LOC:IndexK})
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2322
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Clarion - SQLite

Сообщение Дед Пахом » 28 Июнь 2017, 10:55

Народ первый раз увидел DFD :idied:
С уважением, ДП

Yufil
Ветеран движения
Сообщения: 1170
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Clarion - SQLite

Сообщение Yufil » 28 Июнь 2017, 11:29

Admin писал(а):
28 Июнь 2017, 10:49
Yufil писал(а):
28 Июнь 2017, 10:31
Скорее всего, и Кларион считает, что нельзя...
Но должно же работать если компилируется :)
Можно откомпилировать замечательную программу

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

X   &LONG 
     CODE
     X=0 
Компилируется с полпинка. И должна работать...

Yufil
Ветеран движения
Сообщения: 1170
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Clarion - SQLite

Сообщение Yufil » 28 Июнь 2017, 12:54

Может быть, по концу работы просто рестартовать программу. Есть у меня такие, как раз связанные с переносом данных, никаких особых фокусов нет, а память течёт...

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

RUN( Command(0) )
HALT

pansoft
Бывалый
Сообщения: 68
Зарегистрирован: 08 Август 2011, 10:37

Clarion - SQLite

Сообщение pansoft » 28 Июнь 2017, 13:31

Перезапускали раз в сутки. Но база выросла и теперь "раз в сутки" стало не хватать.

Yufil
Ветеран движения
Сообщения: 1170
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Clarion - SQLite

Сообщение Yufil » 28 Июнь 2017, 13:54

Закончили экспортировать - срабатывает команда на перезапуск, снова экспортировали - опять перезапускаем на автомате. Или пускать через планировщик

pansoft
Бывалый
Сообщения: 68
Зарегистрирован: 08 Август 2011, 10:37

Clarion - SQLite

Сообщение pansoft » 28 Июнь 2017, 15:31

Yufil писал(а):
28 Июнь 2017, 13:54
Или пускать через планировщик
Так и делаем.

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 1393
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion - SQLite

Сообщение finsoftrz » 29 Июнь 2017, 7:23

Я всегда такие вещи через планировщик делаю, запуская программу с ключиками. Планировщик виндовый или встроенный. В последнем случае программа запускает экземпляр себя же...
Рязань решает.

Ответить