Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с ADO + Oracle


lightix ©   (2004-04-29 09:48:00) 

Проблема с компонентами ADO в Builder C++ 6.0:
при использовании в свойстве CommandText компонента ADODataSetвыражения с "cast(...) as ...", невозможно выполнить Update - набор данных сбрасывается в изначальное состояние, все изменения теряются.Что делать?


lightix   (2004-05-06 15:10:00) [1]

А больше вариантов никаких нет? Хотелось бы работать с родными билдеровскими компонентами...


Erik   (2004-05-06 14:37:00) [2]

Добывить то можно, но надо сделать так чтобы он не рефрешился? Тогда только одна дорога, писать наследника от ADODataSet. Хотя для Oracle это нелучшей выбор. Легче перейти например на ODAC, если конечно нетребуется многоплатформеность.


lightix   (2004-05-06 13:37:00) [3]

А как можно обойти это? Вернее сформулирую вопрос так: Каким образом в набор данных ADODataSet можно добавить псевдостолбец?


roottim   (2004-04-30 11:01:00) [4]

засада может быть в OLEDB, что отчучтвует у директ компонент NCOCI.. без поллитры тут точно никак. Лучше найти обходной путь.


lightix   (2004-04-29 14:29:00) [5]

Дык, Витаха, это не мой вопрос, сотрудник состряпал и попросил закинуть :) а мне некогда было и прочитать че там ....
Щас объясню.
Имеем ADOConnection, который коннектится к Oracle 9 через родные Оракловые OLE DB провайдеры.
Также имеется ADODataSet, в котором помимо полей существующей таблицы, должны быть псевдостолбцы, т.е. они должны хранить данные только в наборе данных, а не в полях таблицы.
Ранее, в BCB 5 + NCOCI для этих целей использовался такой код SQL:

select field1,field2,cast(null as number) as field3,cast('' as varchar2(10)) as field4 from table1


В результате имеем в наборе данных поля field1,field2,field3,filed4, причем field3,field4 - не являются полями БД, хотя при активном датасете несут информацию.
TQuery->ProviderFlags.pflnUpdate=false для этих псевдостолбцов, для того чтобы DataSet не пытался запихнуть эти данные в таблицу.
Все замечательно работает, поля БД пишутся в таблицу, псевдостолбцы просто несут информацию которая в них записывается и т.п.

Пишется тот же самый код в ADODataSet, устанавливаем TADODataSet->ProviderFlags.pflnUpdate=false для псевдостолбцов, в результате имеем те же поля, точно так же заносим в них данные, но после сохранения данных (TADODataSet->UpdateBatch()) соджержимое псевдостолбцов исчезает, причем и данные таблицы (field1 и field2) тоже не сохраняются в БД.
Странно что никаких сообщений об ошибке и т.п. не наблюдается.


kvit   (2004-04-29 11:17:00) [6]

И действительно с формулировкой ты точно прогнал :)))


kvit   (2004-04-29 11:09:00) [7]

Сколько раз говорить: "Пиши на Делфях, а не на Билдере" :)))


roottim   (2004-04-29 10:58:00) [8]

теперь прочти свой вопрос иак, как будто ты не ты, и попробуй ответь при стольскудной формулировке. (ни кода, ни ошибок, ни сделанных попыток)


Наверх

Титульная страница Поиск, карта сайта Написать письмо