Последняя версия DataExpress 3 beta от 11 августа 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

varDecimal

Все о том как сделать что-то с помощью скриптов.
jurist23rus
Эксперт
Сообщения: 2262
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

varDecimal

Сообщение jurist23rus » Вт фев 13, 2018 6:39 pm

Получаю из БД MySQL значение и никак не могу его обработать. Постоянно ошибка Invalid variant type cast. Проверил значение через VarType, показывает varDecimal (14). Как мне преобразовать Decimal к любому типу с которым можно работать?

P.S. VarCast и VarAsType вызывают ошибку Invalid variant type cast.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
admin
Разработчик
Сообщения: 3659
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: varDecimal

Сообщение admin » Вт фев 13, 2018 7:30 pm

Как пытаетесь обработать? Код можете показать?

jurist23rus
Эксперт
Сообщения: 2262
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: varDecimal

Сообщение jurist23rus » Вт фев 13, 2018 7:58 pm

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

procedure InsertRecord (Sender: TObject);
var
  SQL: string;
  v: variant;
begin
  try
    SQL := 'INSERT INTO oc_product VALUES ()';
    DBQuery (SQL);
    SQL := 'SELECT LAST_INSERT_ID()';
    DBQuery (SQL);    //направляю SQL запрос к БД MySQL, который возвращает переменную RSet класса
    //ADO.RecordSet с идентификатором последней записи
    //дальше с этим ID надо работать, например присваивать значение какому-то полю
    //в базе DX, но появляется ошибка, например
    Self['Модель'] := RSet.fields.item[0].value+'-Ш';  //ОШИБКА Invalid variant type cast
    debug (RSet.fields.item[0].value) //та же ошибка
    //пытаюсь обработать и сменить тип данных с Decimal на Double
    v := VarAsType (RSet.fields.item['LAST_INSERT_ID()'].Value, 5); // та же ошибка
  finally
    CloseConnection;
  end;
end;



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

v := VarAsType (RSet.fields.item[0].Value, varVariant);

Пытался преобразовать Decimal в Variant и получил
2018-02-13_20-26-54.png
2018-02-13_20-26-54.png (5.92 КБ) 257 просмотров
Destiny is a very convenient word for those who never take decisions.

jurist23rus
Эксперт
Сообщения: 2262
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: varDecimal

Сообщение jurist23rus » Вт фев 13, 2018 8:39 pm

Проблему помог решить SQL. Преобразовал тип в SQL с помощью cast(). После этого всё заработало.

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

'SELECT CAST(LAST_INSERT_ID() AS CHAR) AS RecId'


Но это не отменяет проблемы. В Pascal Script этот Decimal непобедим.
Destiny is a very convenient word for those who never take decisions.