Вниз
Скачать: CL | DM;

работа с DataSource1.DataSet.Delete   Найти похожие ветки 

← →
-=snoop=- ©   (2005-07-04 13:53) [0]

на форме лежит объект 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


← →
Ega23 ©   (2005-07-04 14:05) [1]

Наверное, следует удалять не строки в наборе данных, а записи в БД, а потом набор данных переоткрывать?


← →
Anatoly Podgoretsky ©   (2005-07-04 14:05) [2]

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


← →
-=snoop=- ©   (2005-07-04 14:14) [3]

что нашел в нете

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"])

вернет значение текущей записи


← →
Johnmen ©   (2005-07-04 14:15) [4]

Просто у тебя нет ключевой информации для однозначной идентификации записи в наборе данных (или курсоре).


← →
Anatoly Podgoretsky ©   (2005-07-04 14:25) [5]

-=snoop=- ©   (04.07.05 14:14) [3]
Пример правильный и ошибка тоже правильная, а ты находишь в этом противоречие?


← →
-=snoop=- ©   (2005-07-04 14:34) [6]

да вижу, в примере не передается параметр, который указывает на запись


← →
Slym ©   (2005-07-04 14:43) [7]

Сначала сохраняем букмарки (при движении по 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;


← →
Slym ©   (2005-07-04 14:47) [8]

Фу гоню
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:59) [9]

Или попробуй так
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;


← →
-=snoop=- ©   (2005-07-04 15:04) [10]

2Slym спасибо
а может есть линк,на что почитать?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.024 c
1-1121956555
Андрей Молчанов
2005-07-21 18:35
2005.08.14
отключить RichEdit


14-1122284005
MegaVolt
2005-07-25 13:33
2005.08.14
Что именно я в правилах нарушил?


10-1099318222
AlexGof
2004-11-01 17:10
2005.08.14
Надо DCOM регистрировать на всех клиентах ?


9-1114076133
Lostcoder
2005-04-21 13:35
2005.08.14
Размер VertexBuffer


14-1121798060
Керк
2005-07-19 22:34
2005.08.14
Вся правда о Гагарине




   Наверх