Дмитрий, подскажите а как будет выглядеть скрипт если на форме 2,3 и т.д комбобокса с multiselect, которые необходимо сохранить. Нужно использовать вложеный цикл? набросал скрипт, но что то он не правильно отрабатывает
procedure frmEmployee_OnShow (Sender: string; Action: string);
var
idEmp: string;
idUsers, idFiles: integer;
Results: TDataSet;
i,c,d: integer;
begin
isChanged := False;
frmEmployee.ComboBox2.SetAllCheckBoxes(false);
frmEmployee.ComboBox4.SetAllCheckBoxes(false);
if Action='ShowRecord' then
begin
idEmp := IntToStr(frmEmployee.Button10.dbGeneralTableID);
SQLQuery('SELECT id_Users FROM db_items WHERE id_db_main='+idEmp, Results);
SQLQuery('SELECT id_db_files FROM db_items WHERE id_db_main='+idEmp, Results);
while not Results.Eof do
begin
idFiles := Results.FieldByName('id_db_files').asInteger;
d := frmEmployee.ComboBox4.Items.Count-1;
for i := 1 to d do
begin
if frmEmployee.ComboBox4.dbIndexToID(i) = idUsers then
frmEmployee.ComboBox4.ItemsChecked[i] := True;
end;
Results.Next;
end;
while not Results.Eof do
begin
idUsers := Results.FieldByName('id_Users').asInteger;
c := frmEmployee.ComboBox2.Items.Count-1;
for i := 1 to c do
begin
if frmEmployee.ComboBox2.dbIndexToID(i) = idUsers then
frmEmployee.ComboBox2.ItemsChecked[i] := True;
end;
Results.Next;
end;
end;
end;
procedure frmEmployee_Button10_OnAfterClick (Sender: string);
var
i,c,d: integer;
idEmp: string;
idUsers: string;
idFiles: string;
begin
if isChanged then
idEmp := IntToStr(frmEmployee.Button10.dbGeneralTableID);
SQLExecute('DELETE FROM db_items WHERE id_db_main='+idEmp);
c := frmEmployee.ComboBox2.Items.Count-1;
d := frmEmployee.ComboBox4.Items.Count-1;
for i := 1 to c do
begin
if frmEmployee.ComboBox2.ItemsChecked[i] then
begin
idUsers := IntToStr(frmEmployee.ComboBox2.dbIndexToID(i));
for i := 1 to d do
begin
if frmEmployee.ComboBox4.ItemsChecked[i] then
idFiles := IntToStr(frmEmployee.ComboBox4.dbIndexToID(i));
SQLExecute('INSERT INTO db_items (id_db_main, id_db_files, id_Users) VALUES('+idEmp+','+idFiles+', '+idUsers+')');
end ;
end;
end;
end;