if strtoint(currtostr(d))<13 then
Begin
result:=''+currtostr(m)+'/'+currtostr(d)+'/'+currtostr(g)+'';
End
Else
Begin
result:=''+currtostr(d)+'/'+currtostr(m)+'/'+currtostr(g)+'';
end;
end;
Данную функцию можно использовать следующим образом: «FMain.Data2(dtp.Date)». Эту функции можно разместить в главной форме.
После того как мы разработали все таблицы нам нужно предоставить хранимую информацию в подобающем виде, а именно в виде запросов и отчетов. Разработаем один отчет «Средний балл студентов группы за период» и графический отчет «Частота получений определенных оценок студентами определенной группы за период».
Для того чтобы вызывать запрос или отчет нам нужно сделать в меню соответствующие кнопки. Вы уже знаете, как это делать. Создадим новую форму и назовем ее «FZapros». Разместим на этой форме «ToolBar». На нем разместим два «DataTimePicker» и «Combobox», а также одну кнопку для выполнения запроса. Так же на форму разместим «DBGrid». На «DataModule» создадим новый набор данных и соединим его с новым «DataSource», который, в свою очередь, соединим с «DBGrid» на форме. Теперь напишем код в размещенной на форме нами кнопке. Код выглядеть следующим образом:
dm.Temp2.Active:=false;
dm.Temp2.CommandText:='select fio_st,nazv_zv,avg(oc_ej) FROM kadri,zvanie,eljur,uchgr WHERE (id_ug = id_ug_st ) AND (id_st = id_st_ej) AND (id_zv = id_zv_st) AND (data_ej BETWEEN #'+fmain.data2(fzapros.dtp1.date)+'# AND #'+fmain.data2(fzapros.dtp2.date)+'#) AND (nazv_ug = "'+fzapros.cb.Text+'") GROUP BY fio_st, nazv_zv';
dm.Temp2.Active:=true;
Также не забудьте, что при вызове формы каждый раз нужно очищать и заполнять выпадающий список. В итоге должна получиться форма похожая на ту, что изображена на рисунке 28.
Рисунок 28 – «Форма запроса»
Теперь нам осталось сделать последний шаг – сделать графический отчет о популярности оценок среди студентов какой-либо группы за определенный период. Создадим такую же форму, как и форма для запроса только вместо «DBFrid» разместим на ней «Chart» с вкладки «Additional». После чего дважды щелкнем по «Chart1» и справа нажмем на кнопку «Add», после чего появится форма с видами графиков. Нам нужно круговая диаграмма «Pie» ее мы и выберем. Код кнопки для построения графика будет выглядеть следующим образом:
procedure TFotchet.ToolButton5Click(Sender: TObject);
var oc:string;
Begin
if cb.Text='' then
Begin
showmessage('Нужно выбрать группу');
exit;
end;
chart1.Series[0].Clear;
oc:='2';
While strtoint(oc)<= 5 do
Begin
dm.Temp4.Active:=false;
dm.Temp4.CommandText:='select count(oc_ej) FROM kadri,eljur,uchgr WHERE (id_ug = id_ug_st ) AND (id_st = id_st_ej) AND (data_ej BETWEEN #'+fmain.data2(fotchet.dtp1.date)+'# AND #'+fmain.data2(fotchet.dtp2.date)+'#) AND (nazv_ug = "'+fotchet.cb.Text+'") AND (oc_ej = '+oc+')';
dm.Temp4.Active:=true;
Fotchet.Chart1.Series[0].AddY(dm.TEMP4.Fields[0].asinteger,oc);
oc:=inttostr(strtoint(oc)+1);
end;
end;
В итоге должна получиться форма изображенная на рисунке 29.
Рисунок 29 – «Графический отчет»
Теперь нужно разграничить права доступа к разработанному нами приложению. Это можно сделать с помощью парольной формы. Создадим новую форму и назовем ее «Fpass» и сохраним под именем «Pass». Список пользователей будет браться из базы данных и представлен в виде выпадающего списка. Внешний вид данной формы представлен на рисунке 30.
Рисунок 30 – Авторизация пользователя
Нам нужно сделать так чтобы эта форма загружалась в самом начале. Для этого проделаем следующие действия «Project\options». Выбираем пункт «Form» и в списке «MainForm» выбираем форму «FPass». Скриншот представлен на рисунке 31.
Рисунок 31 – Определение основной формы
Теперь зайдем ан форму «Main» и зайдем в свойство «OnShow» и вырежем оттуда следующий код: «dm.Conn.Connected:=true;» и вставим данный код в свойство «OnShow» формы «FPass». Так же в данное свойство нужно вставить код для выгрузки имен пользователей. Код будет выглядеть следующим образом:
dm.Conn.Connected:=true;
dm.temp4.Active:=false;
dm.temp4.CommandText:='Select name FROM PAss';
dm.temp4.Active:=true;
While not dm.temp4.Eof do
Begin
cb.Items.Add(dm.temp4.Fields[0].AsString);
dm.temp4.Next;
end;
Теперь нужно написать код в кнопки формы «FPass». Напишем код для кнопки «Отмена». При нажатии данной кнопки должен задаваться вопрос и при положительном ответе на него программа должна закрыться. Код представлен ниже:
if application.MessageBox(Вы хотите выйти из программы?','Выход из программы', mb_yesno+mb_iconQuestion)=idyes then
Begin
application.Terminate;
End
Создадим новые глобальные переменные «namePol». После чего напишем код для кнопки «Вход». Данный код представлен ниже. Также нужно учесть, что у разных пользователей будут разные права.
{1}if (cb.Text='') OR (e.Text='') then showmessage(Введены не все данные')
Else
Begin
{4} dm.temp4.Active:=false;
{5} dm.temp4.CommandText:='Select * FROM Pass WHERE (name = "'+cb.Text+'") AND (pass = "'+e.Text+'")';
{6} dm.temp4.Active:=true;
{7} if dm.temp4.Fields[0].AsString='' then showmessage('Неверные имя или пароль')
Else
Begin
{10} if cb.Text='Пользователь' then
Begin
{12} fpass.Hide;
{13} fmain.Show;
{14} dm.N13.Visible:=false;
{15} dm.N11.Visible:=false;
{16} namePol:=cb.Text;
End
Else
Begin
{20} fpass.Hide;
{21} fmain.Show;
{22} namePol:=cb.Text;
{23} end;
{24} end;
{25} end;
{1} Проверяем, введены ли все данные
{4}-{6} Запрос к БД
{7} Проверяем, есть ли такая запись в БД
{10} Если запись есть, то проверяем, что за пользователь
{12} Скрыть форму
{13} Показать форму
{14,15} Делаем кнопки невидимыми
Далее по аналогии.
Теперь перейдем на форму «Fmain» и в свойстве «CloseQuery» наберем тот же код, что и для кнопки «Отмена».
Наша программа практически готова осталось только немного украсить главную форму программы. Для этого можно разместить на ней какой-нибудь изображение, чтобы она не смотрелась так скучно. Для этого можно воспользоваться компонентом «Image» с вкладки «Additional». Разместите его на форме, сделайте так чтоб он занимал все свободное пространство, и дважды щелкните по нему. В появившемся окне нажмите кнопку «Load» и выбирайте картинку, которая вам понравится. Должно получиться примерно то, что изображено на рисунке 30.
Рисунок 30 - «Главная форма»
Все наша программа готова, но запомните что предложенный вариант разработке один из многих возможных. Экспериментируйте, меняйте, придумываете свои пути и тогда вы будите развиваться!
Коли вопросы будут … пишите
http://vk.com/id4560920 :)