Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Итак база MS SQL 2000, есть TADOQUERY, TDATASETPROVIDER и TCLIENTDATASET так вот говорю TCLIENTDATASET.INSERT, далее TCLIENTDATASET.POST и в конце TCLIENTDATASET.ApplyUpdates(-1); запись добавляется но вот значение одного из полей которое IDENTITY остается пустым, хотя в базе оно уже не пустое, в чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2004, 17:38 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
создай sp в ее конце select @@identity запрос открывай оупеном и читай значение fields [0] и потом - в данной модели будет максимальная засчита - если вася пупкин начнет буянить - мона просто запрет на ран sp поставить и все .... соответственно если он и дальше сделать sp для вставки и удаления и килять неблагонадежных юзеров - особенно если операция важная ... и вааще - юзера тока sp должны ранить и данные из вьюхов юзать - делфя ето юрезувмордие - sp - логика и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 02:06 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Как заколебали эти черно-белые взгляды на мир.... Лучше просто посмотрите здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 07:06 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Создай ХП, в ее конце (после INSERT) делай RETURN SCOPE_IDENTITY() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 09:01 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Да я и без SP могу @@IDENTITY получить, вопрос в том почему оно автоматически не возвращается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 10:13 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
А с чего ты взял, что оно должно автоматически возвращаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 10:42 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Было бы логично предположить что-должны, тем более если использовать TADOQuery то оно возвращается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 10:51 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 10:53 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
легко: создаешь табличку с полем IDENTITY создаем формочку туда TADOQuery, TDATASource, TDBGrid открываем TADOQuery, ну и в рантайм, добавь запись поле IDENTITY заполниться автоматически, кстати включи Profiler и посмотри что идет с клиента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 11:30 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
запрос батенька, на то и запрос ... не хочу вас огорчать, но вы НИКОГДА двигаясь в предложенном вами направлении не получите свой злосчастный identity ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 14:14 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
О каком направлении идет речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 14:21 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
TADOQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 14:22 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Если я использую просто TADOQutry то как раз значение IDENTITY возвращается автоматически ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 14:44 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Цитата из приведенной мной ссылки: >Note: Note the call to ClientDataset.Refresh in the code above. It is used to retrieve the autoinc values with the values that were assigned to the table into the ClientDataset. The TDatasetProvider.Options.poAutoRefresh flag should make the call to Refresh obsolete when it gets implemented. Also, if your database server supports it (e.g. InterBase generators or MS SQL @@identity), you can set DatasetProvider.Options.poPropogateChanges to true and set DeltaDS.FieldByName('ID').NewValue to the new autoinc value in DatasetProvider.BeforeUpdateRecord or DatasetProvider.AfterUpdateRecord. Since we can't accomplish this with a simple one-table Paradox sample, we will use the Refresh method instead. You could also set up a separate key table that keeps track of the IDs assigned to a specific table and use the same technique. А сам по себе provider конечно не знает, что в датасете что-то изменилось... 2 KirillovA: Мозги человеку не пудрите, да ?! :-) ADO возвращает identity на клиента автоматически давным давно - с версии 2.1 по-моему... (У MS есть Q по этому поводу). TADO* также умеет обновлять у себя identity поле (по крайней мере у меня в D7). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 15:40 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
авторADO возвращает identity на клиента автоматически давным давно - с версии 2.1 по-моему... (У MS есть Q по этому поводу). TADO* также умеет обновлять у себя identity поле (по крайней мере у меня в D7). и даже в режиме BatchUpdates? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 16:04 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Естественно нет - сами-то подумайте - batchupdate есть единая неделимая операция, в т.ч. вставки пачки записей. В этом случае только requery поможет. Но для ХП со вставкой пачки записей тоже надо свой механизм передачи клиенту пачки identity делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 16:29 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
авторЕстественно нет - сами-то подумайте - batchupdate Спасибо, а то я не знал. . А вы не смотрели профайлером, как ADO возвращает значение. Посмотрите, будет очень любопытно. Или проведите простой эксперимент, когда у вас на таблице, которую вы редактируете через TADOQuery (где инкрементое поле вытаскивается автоматом), навешен триггер FOR INSERT, который вставляет запись в другую таблицу с identity. Вы получите лажу в новом значении identity. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 17:00 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Естественно, что значение identity получается ADO как SELECT @@IDENTITY, MS в Q-шке об этом так и пишет. Дык если ЭТО уже реализовано, зачем самому ваять то же самое... А если надо вставлять попутно записи еще в другие таблицы - тогда уж определяться надо - возвращать на место правильный identity в триггере (что IMHO более правильно) или использовать какие-то другие методы (типа ХП). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 17:11 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Mik ProkoshinА сам по себе provider конечно не знает, что в датасете что-то изменилось... Понятно значит в этих событиях надо самому вытасикать значение IDENTITY ну что-же будем вытаскивать, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 17:16 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Зачем чего-то вытаскивать ? Таки вынудили написать код... :-) Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 17:35 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
при обработке события говорит что идентити поле кэннот би модифиелд... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 17:50 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Угу. Очередная фенька Багланда, забыл я сразу сказать. Поле IDENTITY в ADOQuery должно быть TIntegerField или еще какое Int, но только не TAutoIncField. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2004, 18:54 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Дейсвительно теперь ошибка не возникает, но поле все равно NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2004, 10:10 |
|
||
|
не возращаются значения INDENTITY после INSERT
|
|||
|---|---|---|---|
|
#18+
Тэкс. Что значит поле null ? В обработчик ProviderAfterUpdateRecord попадаем или не попадаем ? Что присваивается в обработчике (значение identity правильно ли присвоилось для ADOQuery) ? Как сказано в посте выше poPropagateChanges установлено ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2004, 12:01 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32369620&tid=2115164]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 403ms |

| 0 / 0 |
