![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с DataSource1.DataSet.Delete
-=snoop=- © (2005-07-04 13:53:00)на форме лежит объект TDBGrid .DataSource берет данные с ADOQuerry. Не могу отработать удаление выдеоенной строки
отработка данного кода
form1.DBGrid1.DataSource.DataSet.GotoBookmark (pointer(form1.DBGrid1.SelectedRows.Items[i])) ;
form1.ataSource1.DataSet.Delete() ;
вызывает ошибку
Multiple-step operation generated errors. Check each status value
-=snoop=- (2005-07-04 15:04:00) [1]2Slym спасибо
а может есть линк,на что почитать?
Slym (2005-07-04 14:59:00) [2]Или попробуй так
with form1.DBGrid1 do
begin
DataSource.DataSet.DisableControls;
try
for i:=0 to SelectedRowCount-1 do
begin
DataSource.DataSet.BookMark:=SelectedRows.Items[i];
DataSource.DataSet.Delete;
end;
finally
DataSource.DataSet.EnableControls;
end;
end;
Slym (2005-07-04 14:47:00) [3]Фу гоню
for i:=form1.DBGrid1.SelectedRowCount-1 downto 0 do
StringList.Add(form1.DBGrid1.SelectedRows.Items[i]);
for i:=0 to List.Count-1 do
begin
Dataset.Bookmark:=StringList[i];
Dataset.Delete;
end;
Slym (2005-07-04 14:43:00) [4]Сначала сохраняем букмарки (при движении по Dataset SelectedRows очищается!)
for i:=form1.DBGrid1.SelectedRowCount-1 downto 0 do
List.Add(Dataset.GetBookmark);
for i:=0 to List.Count-1 do
begin
Dataset.GotoBookmark(List[i]);
Dataset.FreeBookmark(List[i]);
Dataset.Delete;
end;
-=snoop=- (2005-07-04 14:34:00) [5]да вижу, в примере не передается параметр, который указывает на запись
Anatoly Podgoretsky (2005-07-04 14:25:00) [6]-=snoop=- © (04.07.05 14:14) [3]
Пример правильный и ошибка тоже правильная, а ты находишь в этом противоречие?
Johnmen (2005-07-04 14:15:00) [7]Просто у тебя нет ключевой информации для однозначной идентификации записи в наборе данных (или курсоре).
-=snoop=- (2005-07-04 14:14:00) [8]что нашел в нете
Procedure TMaintainTemplateFrm.DeleteBtnClick(Sender: TObject);
begin
If MessageDlg('Delete this record', mtConfirmation,
[MBYes, MBNo], 0) = mrYes Then
DataSource1.DataSet.Delete;
End;
я ведь стою на записи в курсоре и работа происходит с ней, пример конечно не может и не правилен, но код
showmessage(form1.DBGrid1.DataSource.DataSet.FieldValues['lbl_name'])
вернет значение текущей записи
Ega23 (2005-07-04 14:05:00) [9]Наверное, следует удалять не строки в наборе данных, а записи в БД, а потом набор данных переоткрывать?
Anatoly Podgoretsky (2005-07-04 14:05:00) [10]Верь ему, сказано что пытаешь удалить более одной записи, значит так и есть.