26

(46 replies, posted in Russian)

Есть идин момент. При добавлении (удалении)записи график обновляется. Но если я в поиске например хочу посмотреть за 2 дня выставляю поиском показать записи с такого-то по такое. График не обновляется.

27

(46 replies, posted in Russian)

Оперативно огромное спс.

28

(46 replies, posted in Russian)

Не могли бы вы сделать пример графика со связанными списками и выборкой из главной таблицы если вас не затруднит. Как говорится пример останется на форуме. Я набросал сколько смог. В процессе поиска данные для графика брать из главной таблицы и строить график. Сделал из ваших проектов пример. Пример в сообщении и скрин. Ссылка на скрин https://cloud.mail.ru/public/2DDv/9Q3xqwnvv. Заранее спс.

29

(26 replies, posted in Russian)

DriveSoft wrote:

Игоревич
Скачал проект снова и я честно говоря запутался, дату удаления пишет в базу, судя по скрипту поле dateofbirth не является датой удаления.

Может я что-то напутал в скрипте, но дату при изменении и создании записи пишет честно (дату создания записи). Делал по вашему скрипту и возможно я что-то напутал. Дату создания записи, при удалении записи. Когда запись была создана.

30

(37 replies, posted in Russian)

Спс все работает. Я надеюсь вы функцию GetComputerName добавите в версию 2,9.

31

(37 replies, posted in Russian)

В этой версии я так понял есть баг. Создал кнопку (показать форму) выпадает ошибка. Скрин в сообщении.https://cloud.mail.ru/public/6sDi/D4AB2Q5r8

https://cloud.mail.ru/public/6sDi/D4AB2Q5r8

32

(26 replies, posted in Russian)

DriveSoft wrote:
Игоревич wrote:

Не могли бы вы посмотреть скрипт. В логах дату создания записи не ставит при удалении. А то я уже скоро глаза сломаю об экран.Заранее спс. При редактировании и добавлении ставит.

описывайте подробней, о каком поле БД идет речь, dateofbirth?


также я вижу что при удалении записи вы записываете NULL в поле datebirth

     SQLExecute ('INSERT INTO logs (username,user,datetime, action, id_emp, Obekt, Sistema, Usel, dateofbirth)' +
     'VALUES ('+ sUserName +',"'+sUser+'",'+sCurrentDate+',"Удалил",'+'NULL'+',"'+sDeletedObekt+'","'+sDeletedSistema+'","'+sDeletedUsel+'",NULL)');

Да речь идет о поле dateofbirth при удалении. Скрипт брал по одному из ваших премеров. Переделывал по другому примеру где не стоит нуль но почемуто в базу при удалении записи он не пишет дату создания. Уже перепробывал много вариантов и не получается. Все остальное получилось. И имя компьютера выводит. Ссылка на проект выше в сообщениях. Заранее спс.

33

(26 replies, posted in Russian)

Огрооооооооооооооомное спс.

34

(26 replies, posted in Russian)

Не могли бы вы посмотреть скрипт. В логах дату создания записи не ставит при удалении. А то я уже скоро глаза сломаю об экран.Заранее спс. При редактировании и добавлении ставит.

35

(26 replies, posted in Russian)

спс огромное. Только дату удаления не ставит.
и еще вопрос - в данном случае он берет имя с учетной записи операционной системы, Как сделать чтобы брал имя компьютера.

36

(26 replies, posted in Russian)

Ссылка на проект. https://cloud.mail.ru/public/9Mbm/1Pcpwg68U
В данном случае он берет имя с учетной записи операционной системы, Как сделать чтобы брал имя компьютера.

37

(26 replies, posted in Russian)

Весь код.

var
   sUser: string = '';
   idUser: integer = -1;
   isAdmin: boolean = False;
   isCheckBox: boolean = False;
   sHello: string;
   Timer: TTimer;
   /////////Переменные логов///////
   sUserName: string;
   sLastActionForm: string;
   sEmpID: string;
   sDeletedObekt: string;
   sDeletedSistema : string;
   sDeletedUsel : string;
   sDeletedID: string;
   sDeletedBirthDate: string;
{== Логи ===========================================================================================}
   // Окрашивание строк в лога

procedure FrmLogs_TableGrid1_OnChange (Sender: string);
  var
    i,c,f,r: integer;
begin
    c := FrmLogs.TableGrid1.RowCount - 1;
    f := FrmLogs.TableGrid1.Columns.Count - 1;
  for i := 0 to c do
    begin
      if FrmLogs.TableGrid1.Cells[3,i]='Вход'
          THEN
            for r := 0 to f do
               FrmLogs.TableGrid1.Cell[r,i].Color := $0080FFFF; // закрашивание всей строки
                ///закрашивание ячеек
               if FrmLogs.TableGrid1.Cells[3,i] = 'Добавил' then FrmLogs.TableGrid1.Cell[3,i].Color := $0080FF80;
               if FrmLogs.TableGrid1.Cells[3,i] = 'Удалил' then FrmLogs.TableGrid1.Cell[3,i].Color := $008080FF;
               if FrmLogs.TableGrid1.Cells[3,i] = 'Редактировал' then FrmLogs.TableGrid1.Cell[3,i].Color := clSilver;
     end;
end;


  ////////////Логи входа////////////////////////////


procedure FrmLogs_Button1_OnClick (Sender: string; var Cancel: boolean); ///////Очистить лог входа////
  var
   i,c: integer;
begin
    // запрашивает пароль, пароль: 123, если ввели не верно, действие кнопки отменяется (Cancel := True)
    if InputBox ('Запрос', 'Введите пароль', '') = '123' then
    begin

        c := FrmLogs.TableGrid1.RowCount - 1; // count of records in TableGrid
        for i :=0 to c do
            SQLExecute('DELETE FROM logs WHERE id = ' + IntToStr(FrmLogs.TableGrid1.dbIndexToID(i)) );

        FrmLogs.TableGrid1.dbUpdate;

    end;

end;

procedure FormGlavn_OnClose (Sender: string; Action: string);
begin
 SQLExecute('INSERT INTO logs (username, user, action, datetime) VALUES ('+ sUserName +',"'+sUser+'", "Выход", "'+ FormatDateTime('yyyy-MM-DD hh:mm:ss.000', now) +'"); ');
    FrmLogs.TableGrid1.dbUpdate;

  /// проверка на двойное открытие программы
  if idUser <> -1 then SQLExecute('UPDATE users SET isOnline=0 WHERE id='+IntToStr(idUser) );

    /// Создание резервной копии БД при закрытии
   CopyFile('sqlite.db', 'Backup/backup '+ FormatDateTime('dd-mm-yyyy', now)+'.db');  // запись резервного файла БД при выходе
        Timer.Free;
        frmLogin.Close;
        Exit;

end;

////////Логи редактирования БД/////////////////

 procedure formIzm_bOK_OnAfterClick (Sender: string);
 var
   sCurrentDate: string;
   sID: string;
   sObekt: string;
   sSistema: string;
   sUsel: string;
   sBirthDate: string;
   sOperation: string;
begin
     sEmpID := IntToStr(formIzm.bOK.dbGeneralTableID);
     sCurrentDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn:ss.000', now) + '"';
     sObekt   := '"'+formIzm.ComboBox1.Text+'"';
     sSistema  := '"'+formIzm.ComboBox3.Text+'"';
     sUsel  := '"'+formIzm.ComboBox7.Text+'"';

     if formIzm.DateIZM.Checked then
          sBirthDate  := '"' + FormatDateTime('yyyy-MM-DD 00:00:00.000', formIzm.DateIZM.Date) + '"'
          else sBirthDate := 'NULL';


     if sLastActionForm = 'NewRecord' then sOperation := '"Добавил"';
     if sLastActionForm = 'ShowRecord' then sOperation := '"Редактировал"';

     SQLExecute ('INSERT INTO logs (username,user, datetime, action, id_emp, Obekt, Sistema, Usel, dateofbirth)' +
     'VALUES ('+ sUserName +',"'+sUser+'",' +sCurrentDate+','+sOperation+','+sEmpID+','+sObekt+','+sSistema+','+sUsel+','+sBirthDate+')');
     FrmLogs.TableGrid1.dbUpdate;
end;

 procedure FormGlavn_bDelete_OnAfterClick (Sender: string);
var
   sCurrentDate: string;
begin
      sCurrentDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn:ss.000', now) + '"';


     SQLExecute ('INSERT INTO logs (username,user,datetime, action, id_emp, Obekt, Sistema, Usel, dateofbirth)' +
     'VALUES ('+ sUserName +',"'+sUser+'",'+sCurrentDate+',"Удалил",'+'NULL'+',"'+sDeletedObekt+'","'+sDeletedSistema+'","'+sDeletedUsel+'",NULL)');
     FrmLogs.TableGrid1.dbUpdate;
end;
                                          
{=============================================================================================}


   ////Изменение пароля пользователем


 procedure frmChangePassword_OnShow (Sender: string; Action: string);
begin
    frmChangePassword.edPassword.Clear;
    frmChangePassword.edNewPassword.Clear;
    frmChangePassword.edNewPassword2.Clear;
end;

procedure frmChangePassword_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    s: string;
begin
    // SQL-запрос для проверки пользователя и пароля
    s := VarToStr( SQLExecute('SELECT count(id) FROM users WHERE (login = ''' + sUser + ''') AND (password = ' + frmChangePassword.edPassword.sqlValue + ');') );

    // если SQL-запрос найден логин и пароль
    if (s <> '0') and (s<>'') then
    begin
        if frmChangePassword.edNewPassword.Text = frmChangePassword.edNewPassword2.Text then
        begin

            // изменить пароль
            SQLExecute('UPDATE users SET password='+frmChangePassword.edNewPassword.sqlValue + ' WHERE login = ''' + sUser + '''');
            ShowMessage('Пароль был изменен.');
            frmChangePassword.Close;

        end else ShowMessage('Разные пароли в текстовых полях "новый пароль" и "повторите новый пароль".');
    end else ShowMessage('Неправильный пароль.');
end;

 ////////////////////////////////////////////////////////

 // дубликат таблицы

procedure FormGlavn_TableGrid2_OnClick (Sender: string; var Cancel: boolean);
begin
    if FormGlavn.TableGrid2.dbItemID <> -1 then
    begin
        FormGlavn.TableGrid1.dbFilter := 'id_TabOtkaz  ='+FormGlavn.TableGrid2.sqlValue;
        FormGlavn.TableGrid1.dbUpdate;
    end else
    begin
        FormGlavn.TableGrid1.dbFilter := '';
        FormGlavn.TableGrid1.dbUpdate;
    end;
    // отключенная кнопка пошаговые действия при не выделенной строке в таблице
    ///begin
    ////if FormGlavn.TableGrid2.SelectedRow = -1 then Cancel := True;
//////end;
end;


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; // запомнить идентификатор пользователя в базе

      /////Регистрация двойного входа
          if SQLExecute( 'SELECT isOnline FROM users WHERE id='+IntToStr(frmLogin.cbLogin.dbItemID) ) = '1' then
              if mrNo = MessageDlg(('Пользователь уже в сети. Вы действительно хотите войти?'), mtInformation, mbYes+mbNo, 0) then FormGlavn.Close;

        /////Логи входа/////

         SQLExecute('INSERT INTO logs (username, user, action, datetime) VALUES ('+ sUserName +',"'+sUser+'", "Вход", "'+ FormatDateTime('yyyy-MM-DD hh:mm:ss.000', now) +'"); ');
         FrmLogs.TableGrid1.dbUpdate;
           ///////////////////

          // Administrator?    Видно только для админа
 if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True;
        FormGlavn.bUsers.Visible:=isAdmin;
        FormGlavn.Button5.Visible:=isAdmin;
        ///FormGlavn.bDelete.Visible:=isAdmin;
        FormGlavn.mniOptions.Visible := isAdmin;
        formIzm.Button6.Visible:=isAdmin;
        formIzm.Button5.Visible:=isAdmin;
        formIzm.Button7.Visible:=isAdmin;
        FormGlavn.Button1.Visible:=isAdmin;
        FormGlavn.GroupBox6.Visible:=isAdmin;
           // Can change CheckBox?
          if SQLExecute ('SELECT CheckBox FROM users WHERE id = '+IntToStr(idUser)) = '1' then isCheckBox := True;

          FormGlavn.Caption := 'User: ' + sUser;
          frmLogin.Close; // Закрыть главную форму
          SQLExecute('UPDATE users SET isOnline=1 WHERE id='+IntToStr(idUser) );
     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 ;
        /////////логи редактирования бд////
     sLastActionForm := Action;
     sEmpID := IntToStr(formIzm.bOK.dbGeneralTableId);
end;

   /////////Неактивная не своя запись//////////////////////////

 begin
    formIzm.DateIZM.Enabled := true;
    formIzm.ComboBox1.Enabled := true;
    formIzm.ComboBox3.Enabled := true;
    formIzm.Edit1.Enabled := true;
    formIzm.DBImage1.Enabled := true;
    formIzm.bOK.Enabled := true;
    formIzm.Memo1.Enabled := true;
    formIzm.ComboBox4.Enabled := true;
    formIzm.ComboBox5.Enabled := true;
    formIzm.ComboBox7.Enabled := true;
    formIzm.ComboBox2.Enabled := true;
    formIzm.ComboBox6.Enabled := true;
    formIzm.USTRsave.Enabled := true;
   
    if (Action = 'ShowRecord') and (not isAdmin) then
    begin
        if formIzm.cbUser.dbItemID <> idUser then
        begin
            formIzm.DateIZM.Enabled := false;
            formIzm.ComboBox1.Enabled := false;
            formIzm.ComboBox3.Enabled := false;
            formIzm.Edit1.Enabled := false;
            formIzm.DBImage1.Enabled := false;
            formIzm.bOK.Enabled := false;
            formIzm.Memo1.Enabled := false;
            formIzm.ComboBox4.Enabled := false;
            formIzm.ComboBox5.Enabled := false;
            formIzm.ComboBox7.Enabled := false;
            formIzm.ComboBox2.Enabled := false;
            formIzm.ComboBox6.Enabled := false;
            formIzm.USTRsave.Enabled := false;

        end;
    end;

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;
    ///////Логи изменения БД////

begin
     sDeletedObekt := FormGlavn.TableGrid2.Cells[3, FormGlavn.TableGrid2.SelectedRow];
     sDeletedSistema:= FormGlavn.TableGrid2.Cells[4, FormGlavn.TableGrid2.SelectedRow];
     sDeletedUsel:= FormGlavn.TableGrid2.Cells[5, FormGlavn.TableGrid2.SelectedRow];
     sDeletedID := IntToStr(FormGlavn.TableGrid2.dbItemID);
     sDeletedBirthDate := SQLExecute ('SELECT dateofbirth FROM logs WHERE id = ' + IntToStr(FormGlavn.TableGrid2.dbItemID) );
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;

    // нажатие скрытой кнопки  formIzm.Button12.Click;  

   

end;

procedure FormGlavn_OnShow (Sender: string; Action: string);
begin
     frmLogin.edPassword.PasswordChar := '*';
     frmLogin.ShowModal; // Форма для входа
     FormGlavn.mniAbout.OnClick := @MenuClickAbout;
     ///Дата в эдит на главной форме
     begin
        FormGlavn.Edit4.Text := FormatDateTime('DD-MM-yyyy', now);
end;

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();
  begin
     FormGlavn.DBImage1.Clear;
     FormGlavn.DBImage1.LoadFromDatabase('TabOtkaz', 'ZapasFoto', FormGlavn.TableGrid2.dbItemID);
end;
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.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.Komentarii.Text := SQLExecute('SELECT Primechanie FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Edit3.Text := SQLExecute('SELECT OtcLico FROM tabotkaz WHERE id = '+idS ) ;
 FormGlavn.Edit2.Text := SQLExecute('SELECT login FROM users WHERE id =(SELECT id_users FROM tabotkaz WHERE id = '+idS+')' ) ;

  ////FormGlavn.Edit2.Text :=  SQLExecute('SELECT city FROM City WHERE id =(SELECT id_City FROM tabotkaz WHERE id = '+idS+')' ) ;
 ///FormGlavn.DefektNomer.Text := SQLExecute('SELECT DEF№ FROM tabotkaz WHERE id = '+idS ) ;
 ////FormGlavn.Obekt.Text :=  SQLExecute('SELECT country FROM Country WHERE id =(SELECT id_Country FROM Region WHERE id = '+idS+')' ) ;
 /////FormGlavn.Edit4.Text :=  SQLExecute('SELECT region FROM Region WHERE id =(SELECT id_Region FROM City WHERE id = '+idS+')' ) ;


end;

   // открытие файла руководство пользователя

procedure FormGlavn_Button3_OnClick (Sender: string; var Cancel: boolean);

begin

    OpenFile(ExtractFilePath(Application.ExeName) +'HelpR.chm');

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 FormGlavn_TableGrid1_OnChange (Sender: string);
  var
    i,c,f,r: integer;
begin
    c := FormGlavn.TableGrid1.RowCount - 1;
    f := FormGlavn.TableGrid1.Columns.Count - 1;
  for i := 0 to c do
    begin
      if FormGlavn.TableGrid1.Cells[4,i]='Отказ'
          THEN
            for r := 0 to f do
               FormGlavn.TableGrid1.Cell[r,i].Color := $008080FF; // закрашивание всей строки
    end;
end;

  // Окрашивание строк в подчиненной таблицы

  procedure formIzm_TableGrid1_OnChange (Sender: string);

  var
    i,c,f,r: integer;
begin
    c := formIzm.TableGrid1.RowCount - 1;
    f := formIzm.TableGrid1.Columns.Count - 1;
  for i := 0 to c do
    begin
      if formIzm.TableGrid1.Cells[4,i]='Отказ'
          THEN
            for r := 0 to f do
               formIzm.TableGrid1.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;
     ///лог входа
      sUserName := '"'+GetUserName+'"';
     ////Ограничение ввыода в ГРИД
     FormGlavn.TableGrid2.dbLimit := 1000;

end.








                                                           

И если не сложно напишите пож в какой строке ошибка была. заранее спс.
Сегодня пробовал работать по сети. При входе не определяет компьютер но определяет пользователя. При удалении, редактировании или добавлении определяет компьютер но не определяет пользователя. Это косаемо логов. Подскажите пож в чем может быть дело. Заранее спс.

38

(13 replies, posted in General)

DriveSoft wrote:

rjkantor
I made some change to this pragma is works, please download latest version here:
https://www.dropbox.com/s/kfh2q7h8l73lx … a.zip?dl=0


1. You should delete sqlite.db file from your project.


2. Put PRAGMA key="password" to between begin end. in your script project.
example:

begin
    SQLExecute('PRAGMA key = ''passphrase'';');
end.

3. Save the project.
4. Copy your sqlite.dll to the project folder.
5. Run your project from the project folder. (if you run the project from MVD, your file sqlite.dll will be replaced original version)

Файл то ттю-тю

39

(26 replies, posted in Russian)

Почти все получилось остался один момент. Посмотрите пож скрипт что в нем не так. Дату, с какого компа зашли, пользователь и действие (удалил пишет) а что удалил нет.

 procedure FormGlavn_bDelete_OnAfterClick (Sender: string);
var
   sCurrentDate: string;
begin
      sCurrentDate := '"' + FormatDateTime('yyyy-MM-DD hh:nn:ss.000', now) + '"';


     SQLExecute ('INSERT INTO logs (username,user,datetime, action, id_emp, Obekt, Sistema, Usel, dateofbirth)' +
     'VALUES ('+ sUserName +',"'+sUser+'",'+sCurrentDate+',"Удалил",'+'NULL'+',"'+sDeletedObekt+'","'+sDeletedSistema+'","'+sDeletedUsel+'",NULL)');
     FrmLogs.TableGrid1.dbUpdate;
end;

И ошибок не выдает. После "Удалил", не вносит в таблицу данные Заранее спс.

40

(37 replies, posted in Russian)

Честно говоря это баги или как. У меня в колонке стоит дата и время. При попытке изменить меняется только дата.Время пропадает и без возможности восстановится. Изменить колонку типа ДА или НЕТ пропадает полностью разкраска строк.

41

(26 replies, posted in Russian)

Перед носом было не увидел. Спс

var
Timer: TTimer; 
////////  Создание резервной копии БД при выходе и закрытие программы ////////////////
    begin
        CopyFile('sqlite.db', 'Backup/backup '+ FormatDateTime('dd-mm-yyyy', now)+'.db');  // запись резервного файла БД при выходе
        Timer.Free;
        frmLogin.Close;
        Exit;
    end;

procedure OnTimer (Sender: TObject);
////////  Создание резервной копии БД через 3 часа работы //////////
    begin
        iSeconds := iSeconds + 1;
        if iSeconds > 10800 then
         begin
          iSeconds := 0;
          CopyFile('sqlite.db', 'Backup/backup '+ FormatDateTime('dd-mm-yyyy', now)+'.db'); // запись резервного файла БД каждые 3 часа (10800 секунд)
         end;
    end;
////////  СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ ПРИ ЗАПУСКЕ  ////////////////
        CopyFile('sqlite.db', 'Backup/backup '+ FormatDateTime('dd-mm-yyyy', now)+'.db');
        Timer := TTimer.Create (frmMain);
        Timer.Interval := 1000;
        Timer.Enabled := True;
        Timer.OnTimer := @OnTimer;

43

(26 replies, posted in Russian)

В таблице БД создал поле username-текст, добавил переменную

 var
sUserName: string;

procedure FormGlavn_OnClose (Sender: string; Action: string);
begin
 SQLExecute('INSERT INTO logs (username,user, action, datetime) VALUES ("''+ sUserName +''", "'+sUser+'", "Выход", "'+ FormatDateTime('yyyy-MM-DD hh:mm:ss.000', now) +'"); ');
end;

procedure frmLogin_bLogin_OnClick (Sender: string; var Cancel: boolean);  
SQLExecute('INSERT INTO logs (username,user, action, datetime) VALUES ("''+ sUserName +''","'+sUser+'", "Вход", "'+ FormatDateTime('yyyy-MM-DD hh:mm:ss.000', now) +'"); ');
         FrmLogs.TableGrid1.dbUpdate;end;

Выдает синтаксическую ошибку. Хочу сделать чтобы в логах писалось с какого компьтера заходил пользователь. Посмотрите пож где ошибка в коде, а то я уже замучался. Заранее спс.

Спс огромное. В очередной раз выручили.

Подскажите пож что в этом скрипте не так. Создал с помощью скрипта пароль для кнопки на очистку лога, но скрипт не работает. Пароль запрашивает, но нажимаешь на (да или нет или вводишь пароль не вводишь) всеравно очищает лог.

]procedure FrmLogs_Button1_OnClick (Sender: string; var Cancel: boolean);
  ///////Очистить лог входа////
var
   i,c: integer;

begin
      // запрашивает пароль, пароль: 123, если ввели не верно, действие кнопки отменяется (Cancel := True)
if InputBox ('Запрос', 'Введите пароль', '') <> '123' then Cancel := True;

     c := FrmLogs.TableGrid1.RowCount - 1; // count of records in TableGrid
     for i :=0 to c do
            SQLExecute('DELETE FROM logs WHERE id = ' + IntToStr(FrmLogs.TableGrid1.dbIndexToID(i)) );

     FrmLogs.TableGrid1.dbUpdate;

end;
] Заранее спс.

46

(2 replies, posted in Russian)

спс буду разбираться

Подскажите пож. как установить логин и пароль на файл БД (sqlite) чтобы нельзя было открыть его сторонними программами. т.е. защитить его.

Уделите внимание работе с COM портом и возможности улучшению дизайна при разработке. Вставлять свои иконки на кнопки и т.д. COM порт расширяет существенно возможности среды разработки. Появится сразу много желающих ее приобрести. Дизайн тоже очень важен. Вы добавляете не существенные вещи и повышаете версию.

Вопрос решил сам спс.

Проект у вас есть. Журнал отказов. Вы смотрели связанные списки на днях