Конференция "Базы" » Ms SQL server через ADO-Native Client простой селект [D7, MSSQL]
 
  • Rule © (03.07.09 14:54) [20]
    ну вот например вот такая конструкиця ругается типа "Ошибка при выполнении многоступенчатой операции бла бла бла"
    showmessage((ADataSet as TADOQuery).Recordset.Fields[4].Value);
    Как его привести к тексту.
    Я так понимаю это OleVartiant и ему четко нада сказать что он строка. Вот как ?
  • Rule © (03.07.09 14:56) [21]
    будет ли правильным и безопасным явное приведение к строке ? ведь это по сути не совсем строка
  • Rule © (03.07.09 14:58) [22]
    попробовал привести явно таже ошибка:
    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project raised exception class EOleException with message 'Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний'. Process stopped. Use Step or Run to continue.
    ---------------------------
    OK   Help  
    ---------------------------
  • sniknik © (03.07.09 15:39) [23]
    > showmessage((ADataSet as TADOQuery).Recordset.Fields[4].Value);
    > ему четко нада сказать что он строка. Вот как ?
    попробуй так (типа xml в вариантах тоже нет, а значит автопреобразование тоже не сработает, но по сути то это тот же текст), без гарантий, но ...
    var
     v: variant;
    begin
     ADODataSet1.Open;
     v:= ADODataSet1.Recordset.Fields['body'].Value;
     FindVarData(v).VType:= varString;
     ShowMessage(v);

  • Rule © (03.07.09 16:08) [24]
    v := ADODataSet1.Recordset.Fields['body'].Value;
    Вот тут валится с той-же ошибкой. Видимо тут проблемма как раз в том что не может он этот OleVariant ни к чему преобразовать :-) вот такая шняга нехорошая
  • Rule © (03.07.09 18:38) [25]
    Ну проблемму вроде решил кастингом к  nvarchar(MAX), по документации размер этого типа данных равен 2^32-1 так что должно влезть.
 
Конференция "Базы" » Ms SQL server через ADO-Native Client простой селект [D7, MSSQL]
Есть новые Нет новых   [134473   +32][b:0][p:0.001]