Вниз
Скачать: CL | DM;

Проблемы с ADO + Oracle   Найти похожие ветки 

← →
lightix   (2004-04-29 09:48) [0]

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


← →
roottim   (2004-04-29 10:58) [1]

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


← →
kvit ©   (2004-04-29 11:09) [2]

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


← →
kvit ©   (2004-04-29 11:17) [3]

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


← →
lightix   (2004-04-29 14:29) [4]

Дык, Витаха, это не мой вопрос, сотрудник состряпал и попросил закинуть :) а мне некогда было и прочитать че там ....
Щас объясню.
Имеем 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) тоже не сохраняются в БД.
Странно что никаких сообщений об ошибке и т.п. не наблюдается.


← →
roottim   (2004-04-30 11:01) [5]

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


← →
lightix   (2004-05-06 13:37) [6]

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


← →
Erik ©   (2004-05-06 14:37) [7]

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


← →
lightix   (2004-05-06 15:10) [8]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
7-1083354207
ArchAngel
2004-04-30 23:43
2004.05.30
Мониторинг приложений


11-1073823333
Vladimir Kladov
2004-01-11 15:15
2004.05.30
восстановить архив (WinGhost)


1-1084361662
siriusP
2004-05-12 15:34
2004.05.30
Как программно открыть в ComboBox


9-1074171885
Шишкин Илья
2004-01-15 16:04
2004.05.30
GLScene VS PowerDraw


1-1084782601
BelAS
2004-05-17 12:30
2004.05.30
Хитрая распечатка




   Наверх