1 (edited by sibprogsistem 2018-10-24 13:14:53)

Topic: запрет на удаление

не могу понять как запретить удаление первой записи в таблице

как правельно записать?

procedure frmAdmin_bDelete_OnClick (Sender: TObject; var Cancel: boolean);
begin
   SQLExecute('DELETE FROM users WHERE id='+frmAdmin.tgUsers.sqlValue);
   frmAdmin.tgUsers.dbUpdate;
end;

как записать это?

2 (edited by sibprogsistem 2018-10-24 13:34:13)

Re: запрет на удаление

похоже сделал

Дмитрий, это правельное условие?

procedure frmAdmin_bDelete_OnClick (Sender: TObject; var Cancel: boolean);
begin
   if frmAdmin.tgUsers.Selected[0] then MessageBox('Вы не можете удалить администратора', 'Ошибка удаления записи', MB_OK+MB_ICONINFORMATION)else
   SQLExecute('DELETE FROM users WHERE id='+frmAdmin.tgUsers.sqlValue);
   frmAdmin.tgUsers.dbUpdate;
end;

пока работает )))

Re: запрет на удаление

Первая запись или непервая довольно условное понятие в базах данных и это может меняться в зависимости от сортировки. Можно например запрещать удалять запись с каким то определенным id, например 1,  или добавить поле в таблицу, в котором будем отмечать, возможно ли удалять запись или нет.

Dmitry.

Re: запрет на удаление

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

Re: запрет на удаление

procedure frmAdmin_bDelete_OnClick (Sender: TObject; var Cancel: boolean);
begin
   if (frmAdmin.tgUsers.dbIndexToID(0) ) then    ShowMessage('хер тебе')else
   SQLExecute('DELETE FROM users WHERE id='+frmAdmin.tgUsers.sqlValue);
   frmAdmin.tgUsers.dbUpdate;
end;

вот так и сартировка не страшна )))

Re: запрет на удаление

правильней было бы так
кнопка bDelete имеет действие "Удалить запись"

procedure Form1_bDelete_OnClick (Sender: TObject; var Cancel: boolean);
begin
    if Form1.TableGrid1.dbItemID = 1 then // если запись имеет id = 1
    begin
        ShowMessage('Вы не можете удалить эту запись');
        Cancel := True;
    end;
end;
Dmitry.

Re: запрет на удаление

подскажите: а как запретить удаление записи не по условию с ID а по условию с каким либо другим полем таблицы?

Re: запрет на удаление

Petr wrote:

подскажите: а как запретить удаление записи не по условию с ID а по условию с каким либо другим полем таблицы?

пример, когда есть поле CantDelete, тип Да/Нет

procedure Form1_bDelete_OnClick (Sender: TObject; var Cancel: boolean);
begin
    if SQLExecute('SELECT CantDelete FROM tablename WHERE id='+Form1.TableGrid1.sqlValue) = '1' then
    begin
        ShowMessage('Вы не можете удалить эту запись');
        Cancel := True;
    end;
end;
Dmitry.

Re: запрет на удаление

Спасибо!

Re: запрет на удаление

ясно, можно прирвать действие...

11 (edited by sibprogsistem 2018-10-25 10:27:23)

Re: запрет на удаление

еще вопрос

frmLogin.eStatus.text := sqlexecute('select userStatusName from userStatus where users.id_userStatus=' +inttostr(frmLogin.cbStatus.dbitemid));

не понимаю как правильн записать!?

есть две таблицы userStatus(словарь) и users(пользователи)
нужно при выборе пользователя показать  в frmLogin.eStatus.text его статус

Re: запрет на удаление

frmLogin.eStatus.text := sqlexecute('SELECT userStatus.userStatusName FROM users LEFT OUTER JOIN userStatus ON userStatus.id=user.id_userStatus WHERE users.id=' +frmLogin.cbUser.sqlValue);
Dmitry.

Re: запрет на удаление

Ага, то есть
выбрать статус пользователя из объединения данных двух таблиц по условию ON ....=.... где id пользователя равен выбранному id в combobox...
Спасибо!