Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с 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]

Верь ему, сказано что пытаешь удалить более одной записи, значит так и есть.


Наверх

Титульная страница Поиск, карта сайта Написать письмо