Конференция "Базы" » Проблема перехода с D2007 на D2009
 
  • Moiseev S. (27.02.11 13:39) [0]
    Уважаемые мастера, столкнулся со следующей проблемой. Есть проект, в недрах которого имеется строка MyDataSet.ApplyUpdates, где MyDataSet - кэшированый IBQuery. Если проект компилировать в D2007, все работает корректно, а если в D2009, именно на этой строчке вылетает исключение Variant or safe array index out of bounds. Методом проб(открыл набор, перевел в режим редактирования, попытался подтвердить изменения, причем изменений никаких не делалось) выяснил, что ошибка вылетает при наличии в IBUpdateSQL блоб полей. Поиск в инете ответа не дал. В чем может быть проблема ?
  • sniknik © (27.02.11 15:53) [1]
    в юникоде например... поиск по имени поля не нашел, значит "index out". русские буквы в названиях таблиц/полей используешь?
  • Moiseev S. (27.02.11 16:03) [2]
    2sniknic
    Нет, не использую, в блоб полях содержатся картинки  и в названиях таблиц/полей тоже только латиница.
  • sniknik © (27.02.11 18:00) [3]
    а тип поля с блобом правильно определяется при открытии? если его вручную переопределить? т.е. создать все будущие поля в рекордсете в дизайтайм явно прописав типы.
    ?
  • Moiseev S. (28.02.11 10:16) [4]
    2sniknic
    Все правильно определяется. Если смотреть набор, картинки выводятся абсолютно корректно. Блобы описаны так : длина 80, подтип Binary.
  • sniknik © (28.02.11 11:19) [5]
    > подтип Binary.
    ???
    не уверен насчет IB, но в mssql бинари это массив байт, а не блоб. возможно проблема именно в этом, в старом оно возможно не поддерживалось и приравнивалось к блобу, а в новом пытается...
  • sniknik © (28.02.11 11:22) [6]
    или имеется в виду вот это
    GRAPHIC BLOB sub_type 0 segment size 80
    типа 0 бинарные данные 1 текстовые (memo)
  • Moiseev S. (28.02.11 15:24) [7]
    >BLOB sub_type 0 segment size 80
    Ну да, именно это и имеется в виду, просто IBExpert подтип показывает не цифрой.
  • Дмитрий Белькевич (01.03.11 14:46) [8]
    Гугл по запросу "Variant or safe array index out of bounds" отадёт много ссылок - может чем-то поможет?
  • Loginov Dmitry © (02.03.11 00:08) [9]

    > Поиск в инете ответа не дал. В чем может быть проблема ?


    В D2009 имеются глюки в IBX, связанные именно с юникодом. Вероятно, они исправлены в IBX, идущей вместе в D2010 (по крайней мере, работая в D2010, пока не сталкивался с глюками IBX).
  • Anatoly Podgoretsky © (02.03.11 09:45) [10]
    > Loginov Dmitry  (02.03.2011 00:08:09)  [9]

    Они не исправлены, они замаскированы, путем изменения типа данных в рантайм,
    ANSI преобразовывают в Юникод. Просить исправить безполезно, они не понимают
    этого.
  • Inovet © (02.03.11 10:00) [11]
    > [10] Anatoly Podgoretsky ©   (02.03.11 09:45)
    > Просить исправить безполезно, они не понимают этого.

    Интересно, в чём причина, не тупые ведь, чтобы не понимать.
  • Anatoly Podgoretsky © (02.03.11 10:33) [12]
    > Inovet  (02.03.2011 10:00:11)  [11]

    Не тупые, а хитрые, им так было проще решить, чем делать правильно, хорошо
    еще что на АДО не покусились, с MS SQL полный порядок, правильно работает и
    с varchar (ftString) и с nvarchar (ftWideString).

    Мне сообвственно наплевать на ошибки в реализации с Firebird - я это не
    использую, я от этого отказался еще в 96 году.
  • Loginov Dmitry © (02.03.11 22:35) [13]
    Ошибки в библиотеке IBX не имеют отношения к Firebird. IBX разрабатывается для InterBase (это совершенно другой продукт, от которого вы отказались еще в 96г). Для FireBird разрабатывается FIBPlus (думаю там подобных ляпов поменьше), но это так... к слову.
  • Игорь Шевченко © (02.03.11 23:52) [14]

    > но это так... к слову.


    http://www.ibase.ru/components.htm

    "IBX (InterBase Express) - входит в поставку Delphi, C++Builder, Kylix, InterBase (закладка InterBase на палитре компонент). Наиболее естественный способ для работы с InterBase и Firebird из Delphi и C++Builder "

    на ibase.ru обычно знают, о чем пишут
  • Loginov Dmitry © (03.03.11 00:15) [15]
    Абсолютно все верно написано!
    Но мною было написано следующее: "ошибки в библиотеке IBX не имеют отношения к Firebird". Я не говорил, что "IBX не имеют отношения к Firebird".
    Очень замечательно, что разработчикам Firebird удается сохранить совместимость между клиентской частью СУБД и компонентами IBX. Лично я до сих пор использую IBX, а не FIBPlus, но если возникнет проблема несовместимости, то перейду на FIBPlus.
  • Moiseev S. (03.03.11 21:31) [16]
    Огромное спасибо всем за реакцию. Проблема ушла с переходом на FIB.
  • имя (17.03.11 02:49) [17]
    Удалено модератором
 
Конференция "Базы" » Проблема перехода с D2007 на D2009
Есть новые Нет новых   [134431   +15][b:0][p:0.001]