Показать сообщение отдельно
  #5  
Старый 14.10.2025, 11:21
Joe88 Joe88 вне форума
Прохожий
 
Регистрация: 14.10.2025
Сообщения: 1
Версия Delphi: D7,XE10.3
Репутация: 10
По умолчанию

Вот кусок из моего кода, как раз множественный выбор в сетке с последующей вставкой записей на базе выбранных. На основе книги Кэнту. Сделано для 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;
Ответить с цитированием