Страница 1 из 1

FILE:RECORDS и кодировка UTF

Добавлено: 12 Ноябрь 2024, 11:59
gopstop2007
Код для копирования двух идентичных файлов(таблиц) из SQLite (pFm3_) в Memory (pFm_) , их много более 50-и

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

    sourceRec &= pFm3_.File{PROP:Record}
    targetRec &= pFm_.File{PROP:Record}
    LOOP F = 1 TO 999
           IF WHO(targetRec,F) = '' THEN BREAK END
           Fields.AddPair(WHAT(targetRec,F),WHAT(sourceRec,F))
    END
    
    SET(pFm3_.File)
    Loop while pFm3_.Next() = Level:Benign     
           CLEAR(targetRec)
           Fields.AssignRightToLeft()
           ADD(pFM_.File);  IF ERRORCODE() THEN Message('Ошибка загрузки '& pFM_.GetName() &'!','Ошибка') END    
    END
Если возможность содержимое FILE:RECORDS преобразовать в нужную кодировку на "лету"?

Спасибо за внимание

FILE:RECORDS и кодировка UTF

Добавлено: 12 Ноябрь 2024, 12:52
Игорь Столяров
gopstop2007 писал(а): 12 Ноябрь 2024, 11:59 содержимое FILE:RECORDS преобразовать в нужную кодировку
Содержимое RECORD Вы можете преобразовать только по полям:
Т.е. что-то вроде (если я правильно понимаю Ваш скрытый код):

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

    Fields.AddPair(WHAT(targetRec,F),ConvertAnsiToUTF(WHAT(sourceRec,F)))
Делаете ещё один "нативный" имитатор SQL запросов для TPS ? ;)

FILE:RECORDS и кодировка UTF

Добавлено: 12 Ноябрь 2024, 13:14
gopstop2007
Игорь Столяров писал(а): 12 Ноябрь 2024, 12:52
gopstop2007 писал(а): 12 Ноябрь 2024, 11:59 содержимое FILE:RECORDS преобразовать в нужную кодировку
Содержимое RECORD Вы можете преобразовать только по полям:
Т.е. что-то вроде (если я правильно понимаю Ваш скрытый код):

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

    Fields.AddPair(WHAT(targetRec,F),ConvertAnsiToUTF(WHAT(sourceRec,F)))
На прототипы ругается, Fields.AddPair - присваивание полей без из значений
Игорь Столяров писал(а): 12 Ноябрь 2024, 12:52
Делаете ещё один "нативный" имитатор SQL запросов для TPS ? ;)
Решил перенести все из tps в sqlite.

FILE:RECORDS и кодировка UTF

Добавлено: 12 Ноябрь 2024, 13:33
Игорь Столяров
gopstop2007 писал(а): 12 Ноябрь 2024, 13:14 присваивание полей без из значений
Там указатели в Fields.AddPair() ... сделайте через промежуточную переменную.

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

  StringTmp = ConvertAnsiToUTF(WHAT(sourceRec,F))
  Fields.AddPair(WHAT(targetRec,F),StringTmp)
Не знааю, что включает в себя "всё", но учитывайте, что SQLite не поддерживает многозадачность и совместное использование ...

FILE:RECORDS и кодировка UTF

Добавлено: 12 Ноябрь 2024, 14:00
gopstop2007
Игорь Столяров писал(а): 12 Ноябрь 2024, 13:33
gopstop2007 писал(а): 12 Ноябрь 2024, 13:14 присваивание полей без из значений
Там указатели в Fields.AddPair() ... сделайте через промежуточную переменную.
Fields.AddPair(), это создание структуры виртуальных пар полей, сами значения присваиваются через Fields.AssignRightToLeft()
Игорь Столяров писал(а): 12 Ноябрь 2024, 13:33

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

  StringTmp = ConvertAnsiToUTF(WHAT(sourceRec,F))
  Fields.AddPair(WHAT(targetRec,F),StringTmp)
Не знаю, что включает в себя "всё", но учитывайте, что SQLite не поддерживает многозадачность и совместное использование ...
В моем случае, это важно, если БД будет использоваться в терминальном режиме.
Поэтому когда терминальный режим, схема MYSQL -> MemoryFile
когда обычный, MYSQL -> Sqlite (раньше был TPS) -> MemoryFile