Подскажите пож. Почему если запись создал админ то создается одна запись (нормально) Если юзер то дополнительно добавляется пустая строчка. Заранее спс.
51 2016-10-02 15:58:04
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
52 2016-09-12 20:09:03
Re: Связанные списки (например: Страна > Область > Город) (15 replies, posted in FAQ)
спс
54 2016-09-11 08:11:30
Re: Вывод данных из грида в подвал. (10 replies, posted in Russian)
??? Мне еще ждать от вас помощи ? или нет.
55 2016-09-08 09:49:57
Re: Вывод данных из грида в подвал. (10 replies, posted in Russian)
ExpD1 результат. 7 колонка. Купить это Up продать это Dn.Главная таблица вклатка математический анализ
56 2016-09-08 04:10:49
Re: Вывод данных из грида в подвал. (10 replies, posted in Russian)
К сожалению проект не приложился, проверьте что его размер не превышает 3мб.
Получилось скачать проект ?
57 2016-09-07 07:48:05
Re: Связанные списки (например: Страна > Область > Город) (15 replies, posted in FAQ)
Не получилось загрузить. Сссылка https://cloud.mail.ru/public/GdDX/gURAGPfgD
58 2016-09-07 07:46:53
Re: Связанные списки (например: Страна > Область > Город) (15 replies, posted in FAQ)
Просьба. Подскажите пож где я прокололся. Уже 2 дня мучаюсь. Сделал по аналогии вашего проекта.Но почему-то в таблицу данные ложаться а в комбобоксе не отображаются. Заранее спс. Архив прилагаю.
59 2016-09-07 04:12:14
Re: Вывод данных из грида в подвал. (10 replies, posted in Russian)
https://cloud.mail.ru/public/8u7h/MPodEGzju Сссылка на проект
60 2016-09-06 18:54:06
Re: Вывод данных из грида в подвал. (10 replies, posted in Russian)
Приложите пожалуйста ваш проект, постараюсь помочь.
проект в ахиве
61 2016-09-03 15:50:25
Topic: Вывод данных из грида в подвал. (10 replies, posted in Russian)
Есть главная таблица. В ней колонка, в которой только 2 значения (купил и продал). Нудно вывести данные в подвал под этой колонкой в процентном соотношении или отдельно в TextBox. (купил + продал=100%) Должно выглядеть приблизительно так- (купил 70% продал 30%)
Подскажите пож скрипт как это сделать. Буду вам очень признателен. Заранее спс.
62 2016-09-03 14:42:06
Re: Сборник скриптов по My Visual DataBase. (22 replies, posted in Russian)
Да пожалуйста, бросайте на мыло интересные листинги , добавлю. wertyby@gmail.com
Давайте сдесь выкидывать. Так проще и быстрее.
Покраска ячеек в таблице
procedure Form1_TableGrid1_OnChange (Sender: string);
var
i,c: integer;
begin
c := Form1.TableGrid1.RowCount - 1;
for i := 0 to c do
begin
if Form1.TableGrid1.Cells[3,i] = 'Да' then Form1.TableGrid1.Cell[3,i].Color := clRed;
if Form1.TableGrid1.Cells[3,i] = 'Нет' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
end;
end;
63 2016-09-03 13:06:03
Re: Сборник скриптов по My Visual DataBase. (22 replies, posted in Russian)
Как вывести сумму в подвал таьлицы
procedure Form1_Button7_OnClick (Sender: string; var Cancel: boolean);
begin
end;
procedure Form1_GridAbonent_OnChange (Sender: string);
var
i,c, q: integer;
begin
q := 0;
c := Form1.GridAbonent.RowCount - 1;
for i := 0 to c do
if ValidInt(Form1.GridAbonent.Cells[3, i]) then q := q + StrToInt(Form1.GridAbonent.Cells[3, i]);
Form1.GridAbonent.Columns[3].Footer.Caption := IntToStr(q); // result
end;
begin
Form1.GridAbonent.Options := Form1.GridAbonent.Options + goFooter;
end.
64 2016-09-02 11:58:20
Re: Сборник скриптов по My Visual DataBase. (22 replies, posted in Russian)
Скрипт импорта.
procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
var
OpenDialog: TOpenDialog; // объект для диалога выбора файла
sl: TStringList; // объект, представляющий из себя текстовый список
arrStr: array of string; // массив, в который будет возвращаться результат функции SplitString
i,c: integer; // числовые переменные для цикла
ValuteID: string;
sDate: string;
sval: string;
begin
OpenDialog := TOpenDialog.Create(Form1); // создаем диалог выбора файла
if OpenDialog.Execute then // запускаем диалог выбора файла, если результат выполенения True, значит файл был выбран
begin
sl := TStringList.Create; // создаем объект - текстовый список
sl.LoadFromFile (OpenDialog.FileName); // загружаем в него csv файл, который пользователь выбрал через диалог выбора файла
c := sl.Count - 1; // в переменной c будет содержаться количество строк в csv файле
for i := 0 to c do // запускаем цикл, чтобы пройтись по всем строчкам csv файла, который загрузили в объект sl (TStringList)
begin
arrStr := SplitString(sl[i], ';'); // sl[i] возвращает строку из csv файла, которую функция SplitString разделяет на столбцы. В данном csv файле в качестве разделителя столбцов используется знак ;
// date - текстовое содержимое первого столбца содержится в arrStr[0]
if arrStr[0]<>'' then // если данные есть
sDate := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', StrToDate(arrStr[0])) + '"' // приводим дату к формату, который необходим для записи в БД
else sDate := 'NULL'; // иначе значение NULL
// id_valute - текстовое содердимое второго столбца содержится в arrStr[1]
ValuteID := SQLExecute ('SELECT id FROM valute WHERE valute LIKE "' + arrStr[1] +'"'); // ищем идентификатор названия валюты
if ValuteID = '' then ValuteID := 'NULL';
// value - текстовое содержимое третьего столбца содердижится в arrStr[2]
arrStr[2] := ReplaceStr(arrStr[2], ',', '.'); // т.к. в arrStr[2] число с плавающей запятой, на всякий случай заменяем запятую на точку, т.к. для записи в БД числа с плавающей запятой используется точка
if arrStr[2] = '' then arrStr[2] := 'NULL';
// проверяем, для избежания дубликатов, данная проверка не обязательна, и зависит от вашей ситуации
sval := SQLExecute('SELECT id FROM currency WHERE (date = ' + sDate + ') AND (id_valute = ' + ValuteID + ') AND (value = ' + arrStr[2] + ') ;');
if sval = '' then // если в переменной sval - пусто, значит SQL запрос ничего не вернул, и дубликата данных нет
SQLExecute ('INSERT INTO currency (date, id_valute, value) VALUES ('+ sDate +','+ ValuteID +','+arrStr[2] +');'); // с помощью SQL запрос вставляем данные в БД
Form1.Label1.Caption := IntToStr(i) + ' of ' + IntToStr(c); // выводим в компонент надписи, какое количество строк с данными обработано
Application.ProcessMessages; // необходимо, чтобы надпись в Label один обновилась
end;
sl.Free; // уничтожаем объект, после работы с ним
Form1.TableGrid1.dbUpdate; // заставляем TableGrid обновить данные
end;
OpenDialog.Free; // уничтожаем объект, после работы с ним
end;
begin
end.
65 2016-08-03 16:55:22
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
Письмо получил огромное вам спс
66 2016-08-02 12:30:12
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
Выслал вам проект на почтовый ящик
67 2016-08-02 09:19:46
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
можно его вам выслать на почтовый ящик
68 2016-07-31 08:06:56
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
Подскажите пож. как сделать, если пользователь открывает запись главной таблицы которую он не может редактировать она была не активной. Текстовое поле
Многострочное поле Выпадающий список фото файл
69 2016-07-30 20:12:38
Re: Сборник скриптов по My Visual DataBase. (22 replies, posted in Russian)
Исходник выложен. Программа Help&Manual. Можно скачать с оффсайта. http://download.ec-software.com/help-an … p-v710.exe эта версия 3925. для себя переводил версию 3922, Немного попозже выложу полностью 3922 + перевод, т.к. скорость отдачи у оператора маленькая. Насчет лекарства к программе - вопрос риторический, если хозяин форума даст добро выложу, если нет то только в личку. Но все равно работать в программе можно только без подключения к сети.
Хотя добавлю наверное, что выбранное игоревичем направление не совсем удобное - оптимальный варианты, что бы наполнением занимался один человек а все желающие поучаствовать выкладывали бы примеры например в этой ветке.
Вы займетесь сборником скриптов ? Мы все будем вам помагать. Выкладывать примеры скриптов. У вас так красочно и грамотно оформлен сборник скриптов. Попросим админа прикрепить тему в начале форума.
70 2016-07-29 20:08:50
Re: Пишу книгу о базах данных (36 replies, posted in Russian)
Респект. Жду не дождусь главу скрипты и SQL запросы
71 2016-07-29 14:23:15
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
Огромное спс.
72 2016-07-29 12:55:48
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
var
sUser: string = '';
idUser: integer;
isAdmin: boolean = False;
isCheckBox: boolean = False;
sHello: string;
/// BAR CHART //////
{== BAR CHART ===========================================================================================}
{== BAR CHART ===========================================================================================}
procedure formIzm_CheckBox1_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;
procedure formIzm_CheckBox1_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;
procedure frmLogin_bLogin_OnClick (Sender: string; var Cancel: boolean);
var
s: string;
begin
// SQL-запрос на регистрацию пользователя и пароль
s := SQLExecute('SELECT count(id) FROM users WHERE (id = ''' + IntToStr(frmLogin.cbLogin.dbItemID) + ''') AND (password = ''' + frmLogin.edPassword.Text + ''');');
// SQL-запрос найден логин и пароль
if (s <> '0') and (s<>'') then
begin
sUser := frmLogin.cbLogin.Text; // запомнить имя пользователя
idUser := frmLogin.cbLogin.dbItemID; // запомнить идентификатор пользователя в базе
// Administrator?
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bUsers.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button5.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button1.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button4.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button6.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bDelete.Visible:=False;
// Can change CheckBox?
if SQLExecute ('SELECT CheckBox FROM users WHERE id = '+IntToStr(idUser)) = '1' then isCheckBox := True;
FormGlavn.Caption := 'User: ' + sUser;
frmLogin.Close; // Закрыть главную форму
end else MessageDlg('Некорректный пароль', mtError, mbOk, 0); // сообщение если неверный пароль
end;
procedure SavePersonal_OnShow (Sender: string; Action: string);
begin
if Action = 'NewRecord' then SavePersonal.ComboBox1.dbItemID := idUser ;
end;
// мероприятия закрытия окна для входа
procedure frmLogin_OnClose (Sender: string; Action: string);
begin
// если пользователь не определен, и Пользователь закрывает окно входа в систему, закройте главную форму
if sUser='' then FormGlavn.Close;
end;
procedure formIzm_OnShow (Sender: string; Action: string);
begin
begin
if Action = 'NewRecord' then formIzm.cbUser.dbItemID := idUser ;
end;
// удаление двойного клика по подчиненной таблице
begin
FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;
end;
// защитить от удаления
procedure FormGlavn_bDelete_OnClick (Sender: string; var Cancel: boolean);
var
sIdUser: string;
begin
if isAdmin then Exit;
sIdUser:=SQLExecute('SELECT id_users FROM TabOtkaz WHERE id='+IntToStr(FormGlavn.TableGrid2.dbItemID));
if sIdUser<>IntToStr(idUser) then
begin
Cancel := True;
ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
end;
end;
// защитить от редактирования
procedure formIzm_bOK_OnClick (Sender: string; var Cancel: boolean);
begin
if isAdmin then Exit;
if idUser<>formIzm.cbUser.dbItemID then
begin
Cancel := True;
ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
end;
end;
procedure FormGlavn_OnShow (Sender: string; Action: string);
begin
begin
frmLogin.edPassword.PasswordChar := '*';
frmLogin.ShowModal; // Форма для входа
FormGlavn.mniAbout.OnClick := @MenuClickAbout;
end;
// удаление двойного клика по главной таблице
begin
FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;
{== BAR CHART ===========================================================================================}
end;
procedure MenuClickAbout (Sender: string); // click in About menu item
begin
frmAbout.ShowModal;
end;
procedure FormGlavn_TableGrid2_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
zapolnenie();
end;
procedure FormGlavn_TableGrid2_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
zapolnenie();
end;
procedure zapolnenie ();
var
idS : string ;
begin
idS := inttostr(FormGlavn.TableGrid2.dbItemID) ;
FormGlavn.Obekt.text := SQLExecute('SELECT ob_name FROM tabobekt WHERE id =(SELECT id_tabobekt FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.Edit2.Text := SQLExecute('SELECT Name_Uzel FROM TabUselOborud WHERE id =(SELECT id_TabUselOborud FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.VneshProyavlOtkaza.Text := SQLExecute('SELECT Proyav_name FROM TabProyavlen WHERE id =(SELECT id_TabProyavlen FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.LitsoObnaruj.Text := SQLExecute('SELECT Obnarug_name FROM TabObnarug WHERE id =(SELECT id_TabObnarug FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.MetodUstraneniya.Text := SQLExecute('SELECT Metod_name FROM TabMetod WHERE id =(SELECT id_TabMetod FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.UsloviyaObnaruj.Text := SQLExecute('SELECT Usl_name FROM TabUslovia WHERE id =(SELECT id_TabUslovia FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.VidOborudovaniya.Text := SQLExecute('SELECT Vid_name FROM TabVid WHERE id =(SELECT id_TabVid FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.DefektNomer.Text := SQLExecute('SELECT DEF№ FROM tabotkaz WHERE id = '+idS ) ;
FormGlavn.Edit4.Text := SQLExecute('SELECT ZAPAS FROM tabotkaz WHERE id = '+idS ) ;
FormGlavn.Komentarii.Text := SQLExecute('SELECT Primechanie FROM tabotkaz WHERE id = '+idS ) ;
FormGlavn.Edit3.Text := SQLExecute('SELECT OtcLico FROM tabotkaz WHERE id = '+idS ) ;
end;
// открытие файла руководство пользователя
procedure FormGlavn_Button3_OnClick (Sender: string; var Cancel: boolean);
begin
OpenFile(ExtractFilePath(Application.ExeName) +'HelpR.chm');
end;
// нажатие скрытой кнопки
procedure FormGlavn_Button10_OnClick (Sender: string; var Cancel: boolean);
begin
FormGlavn.Button10.Click
end;
// дубликат таблицы
procedure FormGlavn_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
if FormGlavn.TableGrid2.dbItemID <> -1 then
begin
frmPersons.TableGrid1.dbFilter := 'id_TabOtkaz='+FormGlavn.TableGrid2.sqlValue;
frmPersons.TableGrid1.dbUpdate;
end else
begin
frmPersons.TableGrid1.dbFilter := '';
frmPersons.TableGrid1.dbUpdate;
end;
// отключенная кнопка пошаговые действия при не выделенной строке в таблице
begin
if FormGlavn.TableGrid2.SelectedRow = -1 then Cancel := True;
end;
end;
// Окрашивание строк в главной таблицы
procedure FormGlavn_TableGrid2_OnChange (Sender: string);
var
i,c,f,r: integer;
begin
c := FormGlavn.TableGrid2.RowCount - 1;
f := FormGlavn.TableGrid2.Columns.Count - 1;
for i := 0 to c do
begin
if FormGlavn.TableGrid2.Cells[0,i]='Нет'
THEN
for r := 0 to f do
FormGlavn.TableGrid2.Cell[r,i].Color := $008080FF; // закрашивание всей строки
end;
end;
// администрирование подчиненной таблицы
// защитить от редактирования подчиненной таблицы
procedure formIzm_Button2_OnClick (Sender: string; var Cancel: boolean);
var
sIdUser: string;
begin
if isAdmin then Exit;
sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
if sIdUser<>IntToStr(idUser) then
begin
Cancel := True;
ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
end;
end;
// защитить от удаления подчиненной таблицы
procedure formIzm_Button3_OnClick (Sender: string; var Cancel: boolean);
var
sIdUser: string;
begin
if isAdmin then Exit;
sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
if sIdUser<>IntToStr(idUser) then
begin
Cancel := True;
ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
end;
end;
begin
// Начала проверьте, есть ли пользователь, администратор базы данных
// если нет, создать учетную запись администратора с именем пользователя admin и паролем admin
if SQLExecute('SELECT count(id) FROM users;') = '0' then
begin
SQLExecute('INSERT INTO users (login, password, admin) VALUES ("admin", "admin", 1);');
frmLogin.cbLogin.dbItemID:=1;
frmLogin.edPassword.Text := 'admin';
end;
frmLogin.Button1.Default := True;
formIzm.cbUser.Enabled:=false;
end.
var
sUser: string = '';
idUser: integer;
isAdmin: boolean = False;
isCheckBox: boolean = False;
sHello: string;
/// BAR CHART //////
{== BAR CHART ===========================================================================================}
{== BAR CHART ===========================================================================================}
procedure formIzm_CheckBox1_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;
procedure formIzm_CheckBox1_OnMouseUp (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
if (isCheckBox) and (formIzm.bOK.dbGeneralTableId>0) then
SQLExecute('UPDATE TabOtkaz SET StatusOtkaza = ' + formIzm.CheckBox1.sqlValue + ' WHERE id = '+IntToStr(formIzm.bOK.dbGeneralTableId));
end;
procedure frmLogin_bLogin_OnClick (Sender: string; var Cancel: boolean);
var
s: string;
begin
// SQL-запрос на регистрацию пользователя и пароль
s := SQLExecute('SELECT count(id) FROM users WHERE (id = ''' + IntToStr(frmLogin.cbLogin.dbItemID) + ''') AND (password = ''' + frmLogin.edPassword.Text + ''');');
// SQL-запрос найден логин и пароль
if (s <> '0') and (s<>'') then
begin
sUser := frmLogin.cbLogin.Text; // запомнить имя пользователя
idUser := frmLogin.cbLogin.dbItemID; // запомнить идентификатор пользователя в базе
// Administrator?
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bUsers.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button5.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button1.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button4.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.Button6.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else FormGlavn.bDelete.Visible:=False;
// Can change CheckBox?
if SQLExecute ('SELECT CheckBox FROM users WHERE id = '+IntToStr(idUser)) = '1' then isCheckBox := True;
FormGlavn.Caption := 'User: ' + sUser;
frmLogin.Close; // Закрыть главную форму
end else MessageDlg('Некорректный пароль', mtError, mbOk, 0); // сообщение если неверный пароль
end;
procedure SavePersonal_OnShow (Sender: string; Action: string);
begin
if Action = 'NewRecord' then SavePersonal.ComboBox1.dbItemID := idUser ;
end;
// мероприятия закрытия окна для входа
procedure frmLogin_OnClose (Sender: string; Action: string);
begin
// если пользователь не определен, и Пользователь закрывает окно входа в систему, закройте главную форму
if sUser='' then FormGlavn.Close;
end;
procedure formIzm_OnShow (Sender: string; Action: string);
begin
begin
if Action = 'NewRecord' then formIzm.cbUser.dbItemID := idUser ;
end;
// удаление двойного клика по подчиненной таблице
begin
FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;
end;
// защитить от удаления
procedure FormGlavn_bDelete_OnClick (Sender: string; var Cancel: boolean);
var
sIdUser: string;
begin
if isAdmin then Exit;
sIdUser:=SQLExecute('SELECT id_users FROM TabOtkaz WHERE id='+IntToStr(FormGlavn.TableGrid2.dbItemID));
if sIdUser<>IntToStr(idUser) then
begin
Cancel := True;
ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
end;
end;
// защитить от редактирования
procedure formIzm_bOK_OnClick (Sender: string; var Cancel: boolean);
begin
if isAdmin then Exit;
if idUser<>formIzm.cbUser.dbItemID then
begin
Cancel := True;
ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
end;
end;
procedure FormGlavn_OnShow (Sender: string; Action: string);
begin
begin
frmLogin.edPassword.PasswordChar := '*';
frmLogin.ShowModal; // Форма для входа
FormGlavn.mniAbout.OnClick := @MenuClickAbout;
end;
// удаление двойного клика по главной таблице
begin
FormGlavn.TableGrid2.dbPopupMenu.Items[0].Enabled:= False;
end;
{== BAR CHART ===========================================================================================}
end;
procedure MenuClickAbout (Sender: string); // click in About menu item
begin
frmAbout.ShowModal;
end;
procedure FormGlavn_TableGrid2_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
zapolnenie();
end;
procedure FormGlavn_TableGrid2_OnKeyUp (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
zapolnenie();
end;
procedure zapolnenie ();
var
idS : string ;
begin
idS := inttostr(FormGlavn.TableGrid2.dbItemID) ;
FormGlavn.Obekt.text := SQLExecute('SELECT ob_name FROM tabobekt WHERE id =(SELECT id_tabobekt FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.Edit2.Text := SQLExecute('SELECT Name_Uzel FROM TabUselOborud WHERE id =(SELECT id_TabUselOborud FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.VneshProyavlOtkaza.Text := SQLExecute('SELECT Proyav_name FROM TabProyavlen WHERE id =(SELECT id_TabProyavlen FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.LitsoObnaruj.Text := SQLExecute('SELECT Obnarug_name FROM TabObnarug WHERE id =(SELECT id_TabObnarug FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.MetodUstraneniya.Text := SQLExecute('SELECT Metod_name FROM TabMetod WHERE id =(SELECT id_TabMetod FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.UsloviyaObnaruj.Text := SQLExecute('SELECT Usl_name FROM TabUslovia WHERE id =(SELECT id_TabUslovia FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.VidOborudovaniya.Text := SQLExecute('SELECT Vid_name FROM TabVid WHERE id =(SELECT id_TabVid FROM tabotkaz WHERE id = '+idS+')' ) ;
FormGlavn.DefektNomer.Text := SQLExecute('SELECT DEF№ FROM tabotkaz WHERE id = '+idS ) ;
FormGlavn.Edit4.Text := SQLExecute('SELECT ZAPAS FROM tabotkaz WHERE id = '+idS ) ;
FormGlavn.Komentarii.Text := SQLExecute('SELECT Primechanie FROM tabotkaz WHERE id = '+idS ) ;
FormGlavn.Edit3.Text := SQLExecute('SELECT OtcLico FROM tabotkaz WHERE id = '+idS ) ;
end;
// открытие файла руководство пользователя
procedure FormGlavn_Button3_OnClick (Sender: string; var Cancel: boolean);
begin
OpenFile(ExtractFilePath(Application.ExeName) +'HelpR.chm');
end;
// нажатие скрытой кнопки
procedure FormGlavn_Button10_OnClick (Sender: string; var Cancel: boolean);
begin
FormGlavn.Button10.Click
end;
// дубликат таблицы
procedure FormGlavn_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
if FormGlavn.TableGrid2.dbItemID <> -1 then
begin
frmPersons.TableGrid1.dbFilter := 'id_TabOtkaz='+FormGlavn.TableGrid2.sqlValue;
frmPersons.TableGrid1.dbUpdate;
end else
begin
frmPersons.TableGrid1.dbFilter := '';
frmPersons.TableGrid1.dbUpdate;
end;
// отключенная кнопка пошаговые действия при не выделенной строке в таблице
begin
if FormGlavn.TableGrid2.SelectedRow = -1 then Cancel := True;
end;
end;
// Окрашивание строк в главной таблицы
procedure FormGlavn_TableGrid2_OnChange (Sender: string);
var
i,c,f,r: integer;
begin
c := FormGlavn.TableGrid2.RowCount - 1;
f := FormGlavn.TableGrid2.Columns.Count - 1;
for i := 0 to c do
begin
if FormGlavn.TableGrid2.Cells[0,i]='Нет'
THEN
for r := 0 to f do
FormGlavn.TableGrid2.Cell[r,i].Color := $008080FF; // закрашивание всей строки
end;
end;
// администрирование подчиненной таблицы
// защитить от редактирования подчиненной таблицы
procedure formIzm_Button2_OnClick (Sender: string; var Cancel: boolean);
var
sIdUser: string;
begin
if isAdmin then Exit;
sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
if sIdUser<>IntToStr(idUser) then
begin
Cancel := True;
ShowMessage('У вас нет разрешения редактировать записи, которые не принадлежат вам.');
end;
end;
// защитить от удаления подчиненной таблицы
procedure formIzm_Button3_OnClick (Sender: string; var Cancel: boolean);
var
sIdUser: string;
begin
if isAdmin then Exit;
sIdUser:=SQLExecute('SELECT id_users FROM TabDeystvPerson WHERE id='+IntToStr(formIzm.TableGrid1.dbItemID));
if sIdUser<>IntToStr(idUser) then
begin
Cancel := True;
ShowMessage('У вас нет разрешения удалять записи, которые не принадлежат вам.');
end;
end;
begin
// Начала проверьте, есть ли пользователь, администратор базы данных
// если нет, создать учетную запись администратора с именем пользователя admin и паролем admin
if SQLExecute('SELECT count(id) FROM users;') = '0' then
begin
SQLExecute('INSERT INTO users (login, password, admin) VALUES ("admin", "admin", 1);');
frmLogin.cbLogin.dbItemID:=1;
frmLogin.edPassword.Text := 'admin';
end;
frmLogin.Button1.Default := True;
formIzm.cbUser.Enabled:=false;
end.
73 2016-07-29 07:08:35
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
Но все же задача стоит срыть от юзера и показать админу.
74 2016-07-28 18:40:43
Re: Авторизация при запуске программы. Права пользователей. (63 replies, posted in Russian)
Подскажите пож как срыть меню (Инструменты) в программе, чтобы они видны были только администратору. Заранее спс за ответ.
75 2016-07-28 14:20:13
Re: Тема для экспериментов и экспериментаторов ))). (3 replies, posted in Talks about all)
скиньте пож кнопочный редактор. заранее спс.