powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
7 сообщений из 7, страница 1 из 1
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
    #32372131
Andrey Mamitko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

Есть БД на MS SQL Server.
В БД есть таблица, а в таблице поле ID с типом UniqueIdentifier, при этом IsRowGUID для этого поля выставлено в true, а в Default для этого поля записано (newid()).

В своем Delphi'йском проекте по средствам TADOTable или TADOQuery добираюсь до этой таблицы.

Теперь вопрос: есть ли мне какая-либо возможность после
ADOTable.Append
ADOTable.Post
узнать значение поля ID для новосозданной записи.
На всякий случай: поле ID -- первичный ключ и единственный уникальный "набор" атрибутов.


Спасибо.

PS
Я подозреваю, что не понимаю много в корне, поэтому если отправите что-нибудь почитать, будут рад.
...
Рейтинг: 0 / 0
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
    #32372150
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно зачитать хотя бы сдесь :)\r
ReadMe\r
____\r
...
Рейтинг: 0 / 0
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
    #32372175
Andrey Mamitko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо :)

Я там читал. Честно. НО:

1. У меня не Identity а IsRowGUID.
С Identity у меня подобных проблем не возникает.
На сколько я понимаю, различие "фундаментально", потому как даже когда записи таблицы редактируются в EM, после "Post" значение в ячейке сетки не отображатеся, а появляется только после, например, закрытия/открытия таблицы.

2. Если я правильно понял, проблема, обсуждаемая там, была вызвана именно наличием "промежуточного звена".


При этом, решение, которое мне нужно, должно "прозрачно" работать для Delphi'йских DB-control'ов.

Если решение моей проблемы в таком виде не существует, может быть оно найдется для ситуации, когда:

1. Набор записей для отображения получается в результате выполнения некоторого SQL выражения (странно, не правда ли :) )
2. Редактирование осуществляется SQL-выражением, в которое мне передаются Старые и Новые значения полей редактируемой записи.
3. Так же есть что-то типа OnRefresh, которое то же SQL-выражение, но вот что в него должно передаваться в случае НОВОЙ записи ("ID" не известен, а по остальным атрибутам запись не идентифицируется).

Хотя, если вставка будет осществлятся другим SQL-выражением, которое вернет ID свежесозданной записи, можно будет вызвать этот самый "Refresh" предав ему его (ID).
Только в этом случае не будет использоваться IsRowID feature SQL Server'а (так как ID будет сгенерен и вставлен руками), а зачем-то же оно нужно?! :)

Т.е. вопрос остался прежним: можно ли с IsRowID работать так же как с Identity и если можно, то как?
...
Рейтинг: 0 / 0
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
    #32372209
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уффф... юзай SP...
ну сколько можно полагаться на то что кликнул и адо все сделает за тебя ...
...
Рейтинг: 0 / 0
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
    #32372298
Andrey Mamitko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уффф... юзай SP...
ну сколько можно полагаться на то что кликнул и адо все сделает за тебя ...

Если не сложно, расскажите, пожалуйста, чуть поподробнее, как бы сделать так, что бы использование SP (или просто Batch'а генерируемого на клиенте) было прозрачно для стандартных DB-контролов (сетки, нпример).

Т.е. на какие события и/или еще как повесить выполнение этих выражений.

Интересуют, прежде всего вставка и ОБНОВЛЕНИЕ свежевствленной записи (допустим, сразу после (и даже до) insert'а я буду знать значение сурогатного первичного ключа типа IniqieIdentifier на клиенте)

PS

TADOUpdateQuery + TADOUpdateSQL пробовал, но:

1. Чего-либо, что бы помогло в плане OnRefresh там нет. Вроде бы (?)

2. Оно у меня почему-то не заработало вообще, т.е. InsertSQL не выполнялся (более того при изменении записей в TADOUpdateQuery, даже методы соответсвующие TADOUpdateSQL не вызывались)

Спасибо за терпение.
Т.е. просто человеческое спасибо.
...
Рейтинг: 0 / 0
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
    #32372302
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потратьте время и запрограммируйте то что надо именно тогда когда надо.
для дбконтролов все прозрачно. но ети контролы или компоненты за вас ничего сделать не смогут и не будут.
старайтесь абстрагироваца от автоматических вещей делаемых стандартными контролами - и чем дальше будет дистанция - тем будет более управляемой и предсказуемой прога.
апдейт квери - приведет к запарам - когда база разрастеца.
если совсем трабла - я в асе - стучись.
...
Рейтинг: 0 / 0
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
    #32372817
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работать можно, это уж в любом случае. Сделайте после Post Resync; - он вернет Вам обновленные сервером значения. Сам ADO автоматически этого не делает. Можете использовать TBetterADODataset - там resync уже имеется.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]