![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#5
|
|||
|
|||
|
Вот кусок из моего кода, как раз множественный выбор в сетке с последующей вставкой записей на базе выбранных. На основе книги Кэнту. Сделано для Oracle, но идея та же самая.
... var i:integer; Bookmarklist:Tbookmarklist; Bookmark:TBookmark; tmpstr:String; begin Bookmarklist:=ToolTipsDBGrid2.SelectedRows; if Bookmarklist.Count<=0 then exit; if DBLookupComboBox1.KeyValue=null then exit; tmpstr:='Сохранить '+inttostr(Bookmarklist.Count)+' записей?'; if application.MessageBox(pchar(tmpstr),'',mb_yesno+m b_iconquestion)= IDno then exit; Bookmark:=oraquery2.GetBookmark; try if Bookmarklist.Count=0 then begin showmessage('предметы не выбраны'); exit; end; try Qinsert.ParamByName(<имя поля>).AsInteger:=DBLookupComboBox1.KeyValue; for i:=0 to Bookmarklist.Count-1 do begin oraquery2.GotoBookmark(pointer(Bookmarklist[i])); Qinsert.ParamByName(<имя поля ключа>).AsInteger:=oraquery2.Fieldbyname(<имя поля ключа>).AsInteger; Qinsert.Execute; end; ShowMessage('Записи добавлены'); OraQuery5.Refresh; ToolTipsDBGrid1.SetFocus; Except on E:Eoraerror do begin if e.ErrorCode=1 then MessageDlg('Запись уже существует. Код ошибки '+inttostr(e.ErrorCode),mtError,[mbOk],0) else MessageDlg('Ошибка записи. Код ошибки '+inttostr(e.ErrorCode),mtError,[mbOk],0); end; end; finally oraquery2.GotoBookmark(Bookmark); oraquery2.FreeBookmark(Bookmark); OraQuery5.Refresh; ToolTipsDBGrid1.SetFocus; end; end; Последний раз редактировалось Joe88, 14.10.2025 в 11:24. |