Форум: "Базы";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
ВнизOracle+DOA Найти похожие ветки
← →
WellSlava (2006-04-04 09:29) [0]У меня naraz проблемма: есть редактируемый набор данных (так неоходимо, компонент TOracleDataSet). При редактировании записей все нормально, но при встатвке ругается на поле первичного ключа, что оно должно иметь значение. Поле первичного ключа не Sequence, а генерится по другому в триггере before insert.
Вопрос: можно ли сделать так, чтобы добавлять запись можно было бы также в этом наборе данных? Если можно, то как?
← →
Reindeer Moss Eater © (2006-04-04 09:30) [1]TField.Required
← →
WellSlava (2006-04-04 09:44) [2]Добавил поля как объекты, у каждого поля Required = true; Все равно выдает ошибку Field "ID_d" must have a value
← →
Sergey13 © (2006-04-04 09:49) [3]2[2] WellSlava (04.04.06 09:44)
> у каждого поля Required = true
У ID False поставь.
>Поле первичного ключа не Sequence, а генерится по другому в триггере before insert.
Зря.
← →
WellSlava (2006-04-04 09:53) [4]спасибо... получилось..
Я понимаю, что лучше Sequence, но оно должно быть не 1,2,3... а нести должно информацию типа 100230034
← →
Sergey13 © (2006-04-04 09:58) [5]2 [4] WellSlava (04.04.06 09:53)
> но оно должно быть не 1,2,3... а нести должно информацию типа 100230034
В этом и ошибка. Не должно оно ничего нести кроме уникальности. Если нужен альтернативный ключ - сделай его отдельным полем. Иначе, в случае перекодировки (а это случается к сожалению), получишь здоровенный геморой.
← →
WellSlava (2006-04-04 12:26) [6]блин.... опять что-то не то... пишу все этапы
1. пложил на форму компонент TOracleDataSet
2. пишу Select для редактируемого DataSet-a (Select RowID...)
3. проверяю: редактирование работает как надо - изменил запись, перешел на другую, там изменил вернулся обратно опять что-то изменил (то же поле или разные - не важно) все работает. Но не работает добавление записи!!!
4. добавляю поля как объекты, выставляю где надо и как надо Required - запись добавляет. Но изменить дает только один раз!!! Если перешел на другую запись, возвращаюсь обратно хочу изменить выдает "Record has been changed by another user".
5. удаляю поля-объекты, т.е. убираю то, что делел в п.4. Проверяю - редактировать дает только один раз и запись не добавляет.
Кто-нибудь знает в чем дело?
← →
Курдль © (2006-04-04 12:32) [7]Пункт 4 не раскрыт :(
Что значит "добавляю поля как объекты"?
← →
Sergey13 © (2006-04-04 12:39) [8]2[6] WellSlava (04.04.06 12:26)
Параметры ОраСессии и текст запроса опубликуй.
← →
WellSlava (2006-04-04 12:58) [9]запрос Select D.RowId, D.* From Dicts D
а какие именно параметры? свойства TOraclesesion?
← →
Sergey13 © (2006-04-04 13:00) [10]2[9] WellSlava (04.04.06 12:58)
> свойства TOraclesesion?
Угу.
← →
WellSlava (2006-04-04 13:19) [11]BytePerCharacter = bc1Byte
ConnectAs = caNormal
DesignConnection = False
IsolationLevel = ilUnchanged
MessageTable =
MTSOptions = [moImplicit,moUniqueServer]
NullValue = nvUnAssigned
OptimizerGoal = ogUnchanged
Pool =
Pooling = spNone
Preferences = (TSessionPreferences)
ConvertCLRF = True
NullLOBIsEmpty = False
NullObjectIsEmpty = False
SmallIntPrecision = -1
TemporaryLOB = tlCache
TimeStampAsString = False
TrimStringFields = True
UseOSI7 = False
ZeroDateIsNull = True
RollbackOnDisconnect = False
SQLTrace = stUnchanged
StatementCache = False
StatementCacheSize = 20
ThreadSave = False
← →
Sergey13 © (2006-04-04 13:32) [12]2 [11] WellSlava (04.04.06 13:19)
Это только с этим датасетом "глюки", или с любым?
Тригер на ID можно глянуть? Он срабатывает? ИД-шник появляется? Правильный?
← →
WellSlava (2006-04-04 13:39) [13]да мне только этот датасет и нужно так делать... остальное делаю через Insert into... триггер срабатывает, ID генерится правильно...
после п. 4 (см. выше) все работает как надо, но только один раз дает менять... я пробовал делать CommitUpdates - все равно ошибка
← →
Sergey13 © (2006-04-04 13:53) [14]2[13] WellSlava (04.04.06 13:39)
У тебя ОраМонитор из ДОА не стоИт случайно? Посмотреть бы что в Оракл уходит. Странно это все. Глянуть бы еще свойства дататасета, аналогично [11].
← →
WellSlava (2006-04-04 14:04) [15]Монитора нет... Свойства датасета - все по умолчанию - ничего не менял
← →
ANB © (2006-04-04 14:19) [16]
> WellSlava (04.04.06 14:04) [15]
> Монитора нет... Свойства датасета - все по умолчанию - ничего
> не менял
По всей видимости, твой новый ID не приехал в набор данных. Надо зарефрешить НД после вставки. Вообще, в DOA лучше не делать редактируемые наборы данных - замучаешься. ODAC для этого лучше приспособлен.
← →
WellSlava (2006-04-04 14:27) [17]
> По всей видимости, твой новый ID не приехал в набор данных.
> Надо зарефрешить НД после вставки. Вообще, в DOA лучше
> не делать редактируемые наборы данных - замучаешься. ODAC
> для этого лучше приспособлен.
вот именно!!! нашел!!
в RefrechOptions надо выставить roAfterInsert и roAfterUpdate в true!!!
всем спасибо.
← →
Sergey13 © (2006-04-04 14:56) [18]2[16] ANB © (04.04.06 14:19)
> По всей видимости, твой новый ID не приехал в набор данных.
ИД ему пофиг вроде, для этого. Если мне память не изменяет, он работает напрямую с RowID (для чего он собственно и нужен в "живом" запросе).
> Вообще, в DOA лучше не делать редактируемые наборы данных - замучаешься.
А мужики то не знают!!! 8-)
← →
ANB © (2006-04-04 17:24) [19]
> > Вообще, в DOA лучше не делать редактируемые наборы данных
> - замучаешься.
> А мужики то не знают!!! 8-)
доступ к rowid есть не всегда.
← →
ANB © (2006-04-04 17:25) [20]
> ИД ему пофиг вроде, для этого.
дык rowid тоже не приехал.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c