![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление записей из таблицы Oracle [D5]
snl73 © (2004-11-21 10:04:00)Hi, многоуважаемый All!
Для доступа к Oracle использую DOA 3.4.5
У меня такие вопросы:
1) Удаление записи из базы.
Делаю так:
на форме лежит компонент OracleQuery.
Добавляю переменную id : String;
в SQL прописываю delete from MyTable where rowid = :id.
в обработке события на удаление прописываю:
OracleQuery.SetVariable('id', DataSet.RowId);
OracleQuery.Execute;
DataSet.Close;
DataSet.Open;
DataSet связан с той же таблицей.
после всех этих манипуляций ничего не происходит.
И еще не отслеживается RowID, хотя точно известно, что это поле есть (служебное Oracle)
Пытаюсь отследить так:
procedure TfOst.dbgNezostKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (KEY = VK_UP) or (KEY = VK_DOWN) then Label1.Caption := ' RowID = ' + DataSet.RowId;
end;
2) как перевести DataSet в режим Edit.
Конструкция DataSet.Edit вызывает exception:
OracleDataSet: Cannot modify a read-only dataset.
а при использовании ADO все работает без проблем.
Внук (2004-11-27 16:39:00) [1]>>только надо перечислять все запращиваемые поля
Не надо, достаточно написать
Select table_name.*,table_name.rowid from table_name
snl73 (2004-11-26 20:50:00) [2]Спасибо за помощь в решении проблемы. Помогло это:
> 2.Для этого в текст запроса надо ввести RowId, типа
> Select *,rowid from table_name
только надо перечислять все запращиваемые поля
Petr V. Abramov (2004-11-22 12:30:00) [3]Если есть желание все insert/update/delete делать ручками (что, IMHO, правильно) поставьте CachedUpdates в true
Sergey13 (2004-11-22 09:38:00) [4]2snl73 © (21.11.04 10:04)
1.А зачем в этом случае пользоваться rowid? Достаточно просто ID.
delete from MyTable where id = :id
OracleQuery.SetVariable('id', DataSetId.asInteger);
2.Для этого в текст запроса надо ввести RowId, типа
Select *,rowid from table_name