Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Есть БД на MS SQL Server. В БД есть таблица, а в таблице поле ID с типом UniqueIdentifier, при этом IsRowGUID для этого поля выставлено в true, а в Default для этого поля записано (newid()). В своем Delphi'йском проекте по средствам TADOTable или TADOQuery добираюсь до этой таблицы. Теперь вопрос: есть ли мне какая-либо возможность после ADOTable.Append ADOTable.Post узнать значение поля ID для новосозданной записи. На всякий случай: поле ID -- первичный ключ и единственный уникальный "набор" атрибутов. Спасибо. PS Я подозреваю, что не понимаю много в корне, поэтому если отправите что-нибудь почитать, будут рад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2004, 11:39 |
|
||
|
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2004, 12:28 |
|
||
|
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
|
|||
|---|---|---|---|
|
#18+
Спасибо :) Я там читал. Честно. НО: 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 и если можно, то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2004, 13:14 |
|
||
|
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
|
|||
|---|---|---|---|
|
#18+
уффф... юзай SP... ну сколько можно полагаться на то что кликнул и адо все сделает за тебя ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2004, 14:39 |
|
||
|
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
|
|||
|---|---|---|---|
|
#18+
уффф... юзай SP... ну сколько можно полагаться на то что кликнул и адо все сделает за тебя ... Если не сложно, расскажите, пожалуйста, чуть поподробнее, как бы сделать так, что бы использование SP (или просто Batch'а генерируемого на клиенте) было прозрачно для стандартных DB-контролов (сетки, нпример). Т.е. на какие события и/или еще как повесить выполнение этих выражений. Интересуют, прежде всего вставка и ОБНОВЛЕНИЕ свежевствленной записи (допустим, сразу после (и даже до) insert'а я буду знать значение сурогатного первичного ключа типа IniqieIdentifier на клиенте) PS TADOUpdateQuery + TADOUpdateSQL пробовал, но: 1. Чего-либо, что бы помогло в плане OnRefresh там нет. Вроде бы (?) 2. Оно у меня почему-то не заработало вообще, т.е. InsertSQL не выполнялся (более того при изменении записей в TADOUpdateQuery, даже методы соответсвующие TADOUpdateSQL не вызывались) Спасибо за терпение. Т.е. просто человеческое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2004, 17:32 |
|
||
|
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
|
|||
|---|---|---|---|
|
#18+
потратьте время и запрограммируйте то что надо именно тогда когда надо. для дбконтролов все прозрачно. но ети контролы или компоненты за вас ничего сделать не смогут и не будут. старайтесь абстрагироваца от автоматических вещей делаемых стандартными контролами - и чем дальше будет дистанция - тем будет более управляемой и предсказуемой прога. апдейт квери - приведет к запарам - когда база разрастеца. если совсем трабла - я в асе - стучись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2004, 17:46 |
|
||
|
ADO. Узнать значение "IsRowGUID" (newid()) для свежесозданнй записи
|
|||
|---|---|---|---|
|
#18+
Работать можно, это уж в любом случае. Сделайте после Post Resync; - он вернет Вам обновленные сервером значения. Сам ADO автоматически этого не делает. Можете использовать TBetterADODataset - там resync уже имеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 11:31 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32372209&tid=2115160]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 358ms |

| 0 / 0 |
