![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить идентификатор записи?
well © (2010-12-13 14:00:00)
Страницы: < 1 2 3 4 5 6 7 8 9 10 >
БД Oracle.
Есть таблица. Поле ID инкрементный идентификатор, который определяется триггером в базе.
В программе данные отображаются через DBGrid. Связь с таблицей , связь через ADOQuery.
При вставке новой записи поле ID отображается как "0", хотя реальное значение отличается от нуля.
Реальное значение появляется после
Active=false
Active=true
Либо после перезапуска программы.
Можно ли получить значение поля без перезапуска?
Anatoly Podgoretsky (2011-01-12 14:43:00) [161]> Ega23 (12.01.2011 14:21:33) [33]
Надо использовать TAdoDataset
Ega23 (2011-01-12 14:21:00) [162]
> Смотреть в код -- вот дурная привычка.
> А придерживаться разумных патернов -- нормальная привычка.
>
Дадад. И надо каждый раз писать
ADOQuery1.SQL.Clear;,
ADOQuery1.SQL.Add(....)
List.Clear;
List.Free;
ну и как апофеоз
if ADOQuery1.Active then
ADOQuery1.Close;
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from ...');
try
ADOQuery1.Open;
....
except on E: Exception do
....
end;
finally
if ADOQuery1.Active then
ADOQuery1.Close;
end;
DiamondShark (2011-01-12 14:10:00) [163]
> Ega23 © (12.01.11 11:41) [28]
> Дурная привычка, надо в код смотреть
Смотреть в код -- вот дурная привычка.
А придерживаться разумных патернов -- нормальная привычка.
Ega23 (2011-01-12 12:47:00) [164]
> TDataset базовый класс, существует с Д1
Я D1 один раз в жизни видел. Издалека.
Anatoly Podgoretsky (2011-01-12 12:16:00) [165]> Ega23 (12.01.2011 11:41:28) [28]
TDataset базовый класс, существует с Д1
Anatoly Podgoretsky (2011-01-12 12:14:00) [166]> Германн (12.01.2011 00:54:27) [27]
Ты наверно так же и Close вызываешь.
Ega23 (2011-01-12 11:41:00) [167]
> Это привычка :)
Дурная привычка, надо в код смотреть, с D5 ничего не менялось (а может и с более ранних, не знаю).
Германн (2011-01-12 00:54:00) [168]
> Это лишнее
Это привычка :)
Ega23 (2011-01-12 00:41:00) [169]
if not ADODataSet1.Active then ADODataSet1.Open;
Это лишнее, загляни в код метода Open
adigozelov (2011-01-11 22:33:00) [170]Tois nimnoska asibalsa
begin
if not ADODataSet1.Active then ADODataSet1.Open;
ADODataSet1.Properties['Update Resync'].Value:= adResyncAutoIncrement+adResyncInserts;
end;
adigozelov (2011-01-11 22:30:00) [171]Kakda ti deliyis insert adoxxx tolka citayit identiy a katoruy krome identity dayit server ili po umolconuy polyi ado ni znayit.
i ani v Dbgridi atabrajayitsa kak null ili 0
Yes metot: dinamiciski svoystva Ado Update Resync
adResyncNone Никаких обновлений данных на стороне клиента после добавления или изменения не производится
adResyncAutoIncrement После добавления новых строк считывается значение автоинкрементного поля (новое Identity) Это значение Update Resync принято по умолчанию
adResyncUpdates После изменения строки - измененная строка тут же считывается с сервера
adResyncInserts После добавления строки новая строка сразу же считывается с сервера
adResyncConflicts В случае ошибки, связанной с конфликтом при конкурирующим обновлении с сервера считывается значение строки, вызвавшей конфликт
adResyncAll Комбинация из всех возможных значений свойства Update Resync
begin
if not ADODataSet1.Active then ADODataSet1.Open;
ADODataSet1.Properties['Update Resync'].Value:= adResyncInserts+adResyncInserts;
end;
DiamondShark (2011-01-11 18:58:00) [172]
> ADO + Oracle - не самая лучшая комбинация.
Да они и по отдельности не фонтан
ANB (2010-12-27 18:16:00) [173]ADO + Oracle - не самая лучшая комбинация.
well (2010-12-15 12:27:00) [174]Перепахивать мне всё равно придётся, а главное могу делать вылазки на вражескую территорию :)
Petr V. Abramov (2010-12-13 17:04:00) [175]
> Игорь Шевченко © (13.12.10 16:57) [19]
>
>
да это понятно, только автору все перепахивать, а так малой кровью, тем более, ему, похоже, оракл - вражеская территория :)
Игорь Шевченко (2010-12-13 16:57:00) [176]
> в идеале да, только там уже сть триггер и прочая фигня
INSERT и после триггера RETURNING
Petr V. Abramov (2010-12-13 16:53:00) [177]
> Ega23 © (13.12.10 16:49) [17]
ну да, у меня такой же диагноз :)
в общем-то, на вполне определнном круге задач это не преступление и не моветон.
Ega23 (2010-12-13 16:49:00) [178]
> и insert явно ADO само формирует.
Там, судя по симптомам, DBGrid с редактированием в нём.
Petr V. Abramov (2010-12-13 16:30:00) [179]
> Игорь Шевченко © (13.12.10 16:22) [15]
>
> INSERT ... RETURNING
в идеале да, только там уже сть триггер и прочая фигня. и insert явно ADO само формирует.
Игорь Шевченко (2010-12-13 16:22:00) [180]INSERT ... RETURNING