|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
В течении многих лет работало несколько приложений, написанных на 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. Ничего не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2009, 20:58 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
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 поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2009, 08:45 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
Журавлев Денисbk00103) В БД было Memo-поле, где хранились текстовые данные, а потом стали записывать и zip-файлы. добавляете в эту-же таблицу поле с типом byte, пишете (bde) программу которая проходит по всем строкам таблицы и копирует из memo в byte. удаляете memo, переименовываете byte поле в имя memo поля. Насколько я понимаю, мемо-поле было в БДЕ, а вот в Информиксе какой тип данных использовался ? Может там уже был BLOB типа byte ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2009, 13:37 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
vasilisНасколько я понимаю, мемо-поле было в БДЕ, а вот в Информиксе какой тип данных использовался ? Может там уже был BLOB типа byte ?а точно, в informix-е тип text, меня смутило описание что сначала писали текст а потом... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2009, 14:02 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
Журавлев Денис типа пример бы, думаю должно быть .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. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2009, 20:44 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
bk0010 В понедельник попробую переделать программу на Zeos (однако на него надежды мало, так как родного драйвера к Informix у него нет, а универсальный драйвер работает через ADO). Если не поможет, то вернемся на BDE. Пробовал BDE => AnyDAC полный одобрямс ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2009, 21:00 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
АнатоЛойbk0010 В понедельник попробую переделать программу на Zeos (однако на него надежды мало, так как родного драйвера к Informix у него нет, а универсальный драйвер работает через ADO). Если не поможет, то вернемся на BDE. Пробовал BDE => AnyDAC полный одобрямс одобрямс AnyDAC'у ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2009, 21:00 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
АнатоЛой одобрямс AnyDAC'у А у меня вышел не одобрямс, а Invalid cursor state. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2009, 20:51 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
bk0010А у меня вышел не одобрямс, а Invalid cursor state. Это проблема была давным давно в 1.12 и уже года 2 как пофикшена. Текущая версия 2.0.13. АнатоЛой говорит скорее о 2.0.11 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2009, 12:13 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
Dmitry ArefievЭто проблема была давным давно в 1.12 и уже года 2 как пофикшена. Текущая версия 2.0.13. АнатоЛой говорит скорее о 2.0.11 :) К сожалению новые версии для меня не актуальны: они не бесплатные, быстро убедить фирму закупить ее я не смогу, свои 12000 отдавать не хочу, а пиратку использовать бессмысленно - не пройдешь сертификацию и все придется переделывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2009, 12:29 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
bk0010, а какая у вас версия Informix? у каждой версии свои OLEDB провайдеры для АДО. С разными глюками) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2009, 11:16 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
Sevolodbk0010, а какая у вас версия Informix? у каждой версии свои OLEDB провайдеры для АДО. С разными глюками)А кстати, да. С OLEDB лучше не связываться, берите ODBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2009, 12:54 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
bk0010К сожалению новые версии для меня не актуальны: они не бесплатные, быстро убедить фирму закупить ее я не смогу, свои 12000 отдавать не хочу, а пиратку использовать бессмысленно - не пройдешь сертификацию и все придется переделывать. Есть и другие варианты. Если хотите их обсудить, то свяжитесь со мной мылом или ICQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2009, 13:38 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
Sevolodа какая у вас версия Informix? у каждой версии свои OLEDB провайдеры для АДО. С разными глюками) Informix 11.5 TC5, пробовал Informix Connect 2.4 и Informix Connect 3.5. Журавлев ДенисА кстати, да. С OLEDB лучше не связываться, берите ODBC. С OLEDB уже словили проблемы с автоинкрементными полями, теперь рассчитываем только на ODBC. Dmitry Arefiev Есть и другие варианты. Если хотите их обсудить, то свяжитесь со мной мылом или ICQ. Большое спасибо, но уже вернулись на BDE. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2009, 20:50 |
|
Проблемы перехода с BDE на ADO
|
|||
---|---|---|---|
#18+
Выдалось немного времени - продолжил изыскания на предмет того, на что можно перейти в Delphi с BDE для разработки под Informix (кроме Luxena - она видимо загнулась в 2006, так что это направление бесперспективно). Zeos через ADO - те же проблемы, что и у самого ADO. Заработало на AnyDAC второй версии через ODBC и на драйвере dbexpress Informix в Delphi 2010 (в Delphi 2007 dbexpress-ный драйвер Informix еще не работоспособен - ломается на параметрах ftDatetime). Выводы: 1. выбор крайне не богат 2. Embarcadero (в отличие от CodeGear) не забывает про Informix - молодцы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 21:40 |
|
|
start [/forum/topic.php?fid=44&msg=36310215&tid=1607700]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 334ms |
total: | 477ms |
0 / 0 |