Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 09.01.2020, 14:24   #1
rAMEO
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 42
По умолчанию

у меня есть таблица в нем четыре столбца 1 сотрудник 2 дата авторизации в проге 3 Дата выхода из проги 4 вот здесь дата и время сколько он пробыл в проге тоесть 4 столб - 3 столб
Код:
procedure TF_CRM.FormClose(Sender: TObject; var Action: TCloseAction);
var
s:string;
begin
s:=formatdatetime('dd.mm.yyyy hh:nn:ss',now());
with DM_BD.AQ_ControlAvtoriz do
  begin
    Close; 
    Sql.Clear;
    SQL.Text := format('INSERT INTO Tbl_Jurnal_Avtorizasii(ID_Sotrudnik, ProstoyVreeni_Avtoriasii, DataVremya_Avtoriasii, DataVremyaVihoda_Avtoriasii) VALUES (:p1, :p2, :p3, :p4));
    Parameters.ParamByName('p1').Value := StatusBarCRM.Panels[3].Text;{здесь фио сотрудника}
    Parameters.ParamByName('p2').Value := StrToDateTime(s)-StrToDateTime(StatusBarCRM.Panels[1].Text);
    Parameters.ParamByName('p3').Value := StrToDateTime(StatusBarCRM.Panels[1].Text);{здесь в статус баре время авторизации}
    Parameters.ParamByName('p4').Value := StrToDateTime(s);{Сдесь дата и время выхода из проги}
    ExecSQL;
    end;
end;
Прошу Вас подсказать мне оптимальный вариант решении этой задачи заранее спасибо всем
rAMEO вне форума Ответить с цитированием
Старый 09.01.2020, 16:14   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 4,956
По умолчанию

Цитата:
подсказать мне оптимальный вариант
оптимально для чего?

1.быстродействие.
убрать все Strtodatetime
хранить ВСЕ нужные отметки времени именно в формате TdateTime и не заниматься лишней работой.
Код:
Parameters.ParamByName('p4').Value := StrToDateTime(s);{Сдесь дата и время выхода из проги}
var
  r: TDateTime;
....
r:=Now; 
...
Parameters.ParamByName('p4').Value := r;{Сдесь дата и время выхода из проги}
2.написание кода
для КАЖДОГО запроса используемого в программе СВОЙ компонент( и обязательно с именем "говорящем" зачем он нужен
текст запроса пишется в инспекторе объекта (Object Inspector) и тестируется (предварительно) в каком-то SQL редакторе.
Код:
    Close; 
    Sql.Clear;
    SQL.Text := format('INSERT INTO Tbl_Jurnal_Avtorizasii(ID_Sotrudnik, ProstoyVreeni_Avtoriasii, DataVremya_Avtoriasii, DataVremyaVihoda_Avtoriasii) VALUES (:p1, :p2, :p3, :p4));
3. "разграничение полномочий" (сопровождение и модификация программы).
в DataModule DM_BD добавить процедуру(метод) записи данных о завершении сеанса работы с нужными параметрами
Код:
TDM_BD =class(TDataModule)
....
public
  procedure RegSeanse(username: string; finishdate: TDate);
...
end;
в которой уже заполнять параметры нужного SQL запроса и выполнять его.
а быть может и выполнять несколько запросов(при необходимости).
а при закрытии формы (и в других местах по необходимости) вызывать ее с нужными в данный момент параметрами.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.01.2020 в 16:26.
evg_m вне форума Ответить с цитированием
Старый 09.01.2020, 16:38   #3
rAMEO
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 42
По умолчанию

evg_m я навичек в делфи есть готовый пример если есть напишете пожалуйста
rAMEO вне форума Ответить с цитированием
Старый 09.01.2020, 16:41   #4
rAMEO
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 42
По умолчанию

Мне надо чтобы, при закрытие программы записались эти поля Пользователь, дата и время авторизации,
дата и время выхода из программы и сколько он пробыл в программе то же дата и время то есть здесь
выход дата и время - авторизовался дата и время
rAMEO вне форума Ответить с цитированием
Старый 09.01.2020, 17:18   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 4,956
По умолчанию

Цитата:
Мне надо чтобы, при закрытие программы записались эти поля Пользователь, дата и время авторизации,
1.написать запрос добавления записи.
есть.
2.если запрос с параметрами, заполнить параметры.
есть.
3.выполнить запрос.
есть.

все необходимое уже есть. что еще ?
4. выполнить написанный код.
тоже на первый взгляд есть.

Цитата:
как правельно
говорите что неправильно, какие ошибки (именно так как "пишет" компьютер).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.01.2020 в 17:23.
evg_m вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль: Помогите понять основу для написания простейшей программы. Не могу понять суть. romanya Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2016 21:35
Не могу понять spaun88 Общие вопросы Delphi 0 15.04.2010 00:41
как правельно составить запрос к базе данных? не могу найти ошибку... Человек_Борща SQL, базы данных 6 27.02.2010 18:22
Не могу понять Superlotles Помощь студентам 8 31.08.2009 20:39