powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Проблемы перехода с BDE на ADO
15 сообщений из 15, страница 1 из 1
Проблемы перехода с BDE на ADO
    #36281001
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В течении многих лет работало несколько приложений, написанных на BDE и работающих с СУБД Informix. Когда стали переписывать одно из них, то решили работать через ADO. В результате получили следующие спецэффекты:
1) При записи через параметры даты и времени записывается только дата. Когда вместо параметра дата и время записываются строкой прямо в SQL, то все работает. Как через параметры занести дату и время.
2) Когда надо очистить поле со временем в БД раньше делали ParamByName('param').Clear и после выполнения SQL поле становилось пустым. Теперь для этой же операции написали код

Parameters.ParamByName('T_PERED').DataType:=ftDatetime;
Parameters.ParamByName('T_PERED').Value:=vaNull;
После выполения SQL в поле сидит нулевая дата (31.12.1899). Как очистить поле?
3) В БД было Memo-поле, где хранились текстовые данные, а потом стали записывать и zip-файлы. В BDE считывание этого поля шло нормально, если свойство Transliterate=false. В ADO данные считываются до первого нулевого символа. Пробовали менять тип поля с TMemoField на TBlobField, меняли различные типы в Blobfield, пробовали работать с однонаправленным курсором, работали через TADOStream, ставили большой CacheSize - ничего не помогает, считывается только первые 5 байт. При переходе на серверный курсор данные воообще перестали возращаться. Как получить данные до конца (самое важное)?
BDE через ODBC функционирует без проблем и выполняет все указанные действия.

PS ОС- Windows XP Pro SP3 Rus, Informix 11.5 TC5. Пробовал работать сначала с клиентом 2.4 (OLE DB и ODBC), потом поставил клиент 3.5 и пробовал работать через его ODBC. Ничего не помогает.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36281401
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010В течении многих лет работало несколько приложений, написанных на BDE и работающих с СУБД Informix. Когда стали переписывать одно из них, то решили работать через ADO. В результате получили следующие спецэффекты:
1) При записи через параметры даты и времени записывается только дата. Когда вместо параметра дата и время записываются строкой прямо в SQL, то все работает. Как через параметры занести дату и время.
типа пример бы, думаю должно быть .asDateTime := now;
Вы не сказали версию делфи и патчи. А это очень важно в случае ADO.

bk0010
2) Когда надо очистить поле со временем в БД раньше делали ParamByName('param').Clear и после выполнения SQL поле становилось пустым. Теперь для этой же операции написали код
Parameters.ParamByName('T_PERED').DataType:=ftDatetime;
Parameters.ParamByName('T_PERED').Value:=vaNull;
После выполения SQL в поле сидит нулевая дата (31.12.1899). Как очистить поле?Это в делфи конференции спросите.


bk00103) В БД было Memo-поле, где хранились текстовые данные, а потом стали записывать и zip-файлы. добавляете в эту-же таблицу поле с типом byte, пишете (bde) программу которая проходит по всем строкам таблицы и копирует из memo в byte. удаляете memo, переименовываете byte поле в имя memo поля.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36282267
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денисbk00103) В БД было Memo-поле, где хранились текстовые данные, а потом стали записывать и zip-файлы. добавляете в эту-же таблицу поле с типом byte, пишете (bde) программу которая проходит по всем строкам таблицы и копирует из memo в byte. удаляете memo, переименовываете byte поле в имя memo поля.
Насколько я понимаю, мемо-поле было в БДЕ, а вот в Информиксе какой тип данных использовался ?
Может там уже был BLOB типа byte ?
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36282357
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisНасколько я понимаю, мемо-поле было в БДЕ, а вот в Информиксе какой тип данных использовался ?
Может там уже был BLOB типа byte ?а точно, в informix-е тип text, меня смутило описание что сначала писали текст а потом...
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36283230
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис
типа пример бы, думаю должно быть .asDateTime := now;
Вы не сказали версию делфи и патчи. А это очень важно в случае ADO.
Пример простой: Parameters.ParamByName('T_PERED').Value:=now; (Value т. к. asDatetime в параметрах ADO нет).
Версия Delphi7 без патчей. Проблемы с ADO вроде-бы кончились в Delphi6.

Журавлев Денис
добавляете в эту-же таблицу поле с типом byte, пишете (bde) программу которая проходит по всем строкам таблицы и копирует из memo в byte. удаляете memo, переименовываете byte поле в имя memo поля.
Это недопустимо. Перестанут работать десятки программ.

vasilisМожет там уже был BLOB типа byte ?
Поле типа Memo. В этом видимо вся проблема.

Сегодня предпринимал следующие попытки решить проблему (перечисляю на случай, если кто-то еще столкнется с подобной ситуацией):
1) Пытался организовать приведение типа поля из Memo в Byte (select forma::byte forma from ...). Из
SQL-эксполорера выполняется без проблем, через ODBC возникает такая ошибка, что выносит программу (и Delphi, если пытаться выполнить запрос в Design Time) без сообщения об AV.
2) Переписал программу с ADO на dbexpress. Пока выполнялись select-ы все было хорошо, как дело дошло до insert-ов, то сразу появилось сообщение о неизвестной ошибке с номером 0. Предположил, что требуются явные транзакции. Оформил транзакции, получил на команде начала транзакции сообщение о том, что транзакция не начата. В интернете прочел, что в драйвере dbexpress для информикса ошибка: вместо begin work посылается commit и транзакции надо начинать послав SQL "begin work". Сделал, вернулась ошибка с номером 0. Взял dbexpress драйвер от Delphi2007. Изменилось сообщение об ошибке (что-то типа Unkown error mapping).
3) Плюнул, скачал ANYDAC1122, переделал программу на ANYDAC, запустил, при считывании BLOB-а получаю ошибку -11031 (Invalid cursor state).
4) Скачал с torry dbexpress драйвер для ODBC. Поставил, все сразу заработало, но оказалось, что из BLOB-а считывается на байт меньше, чем там находится. Победить не удалось. Тип BLOB-а установлен ftBlob. Возможно обрезается последний байт только в том случае, если он нулевой, но мне это не поможет: я не могу делать предположения относительно содержимого этого поля.
5) Скачал Zeos.

В понедельник попробую переделать программу на Zeos (однако на него надежды мало, так как родного драйвера к Informix у него нет, а универсальный драйвер работает через ADO).
Если не поможет, то вернемся на BDE.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36283250
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010
В понедельник попробую переделать программу на Zeos (однако на него надежды мало, так как родного драйвера к Informix у него нет, а универсальный драйвер работает через ADO).
Если не поможет, то вернемся на BDE.
Пробовал BDE => AnyDAC
полный одобрямс
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36283251
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойbk0010
В понедельник попробую переделать программу на Zeos (однако на него надежды мало, так как родного драйвера к Informix у него нет, а универсальный драйвер работает через ADO).
Если не поможет, то вернемся на BDE.
Пробовал BDE => AnyDAC
полный одобрямс
одобрямс AnyDAC'у
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36283999
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой
одобрямс AnyDAC'у
А у меня вышел не одобрямс, а Invalid cursor state.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36284312
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010А у меня вышел не одобрямс, а Invalid cursor state.
Это проблема была давным давно в 1.12 и уже года 2 как пофикшена.
Текущая версия 2.0.13. АнатоЛой говорит скорее о 2.0.11 :)
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36284326
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievЭто проблема была давным давно в 1.12 и уже года 2 как пофикшена.
Текущая версия 2.0.13. АнатоЛой говорит скорее о 2.0.11 :)
К сожалению новые версии для меня не актуальны: они не бесплатные, быстро убедить фирму закупить ее я не смогу, свои 12000 отдавать не хочу, а пиратку использовать бессмысленно - не пройдешь сертификацию и все придется переделывать.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36285368
Sevolod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bk0010,

а какая у вас версия Informix? у каждой версии свои OLEDB провайдеры для АДО. С разными глюками)
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36285709
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sevolodbk0010,

а какая у вас версия Informix? у каждой версии свои OLEDB провайдеры для АДО. С разными глюками)А кстати, да. С OLEDB лучше не связываться, берите ODBC.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36285825
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010К сожалению новые версии для меня не актуальны: они не бесплатные, быстро убедить фирму закупить ее я не смогу, свои 12000 отдавать не хочу, а пиратку использовать бессмысленно - не пройдешь сертификацию и все придется переделывать.
Есть и другие варианты. Если хотите их обсудить, то свяжитесь со мной мылом или ICQ.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36287009
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sevolodа какая у вас версия Informix? у каждой версии свои OLEDB провайдеры для АДО. С разными глюками)
Informix 11.5 TC5, пробовал Informix Connect 2.4 и Informix Connect 3.5.
Журавлев ДенисА кстати, да. С OLEDB лучше не связываться, берите ODBC.
С OLEDB уже словили проблемы с автоинкрементными полями, теперь рассчитываем только на ODBC.
Dmitry Arefiev
Есть и другие варианты. Если хотите их обсудить, то свяжитесь со мной мылом или ICQ.
Большое спасибо, но уже вернулись на BDE.
...
Рейтинг: 0 / 0
Проблемы перехода с BDE на ADO
    #36310215
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выдалось немного времени - продолжил изыскания на предмет того, на что можно перейти в Delphi с BDE для разработки под Informix (кроме Luxena - она видимо загнулась в 2006, так что это направление бесперспективно).
Zeos через ADO - те же проблемы, что и у самого ADO.
Заработало на AnyDAC второй версии через ODBC и на драйвере dbexpress Informix в Delphi 2010 (в Delphi 2007 dbexpress-ный драйвер Informix еще не работоспособен - ломается на параметрах ftDatetime).
Выводы: 1. выбор крайне не богат 2. Embarcadero (в отличие от CodeGear) не забывает про Informix - молодцы.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Проблемы перехода с BDE на ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]