курсовая работа тема акимат. Акимат. Разработка информационной системы контроля исполнения поручений для сотрудников акимата
Скачать 1.29 Mb.
|
end; procedure TFmAdminMenu.DBGrid1CellClick(Column: TColumn); begin if Column.FieldName = 'l_read' then begin DM.TbLetter.Edit; DM.TbLetter.FieldByName('l_read').AsBoolean := Not DM.TbLetter.FieldByName('l_read').AsBoolean; DM.TbLetter.Post; end; end; procedure TFmAdminMenu.Edit1Change(Sender: TObject); begin Case RadioGroup1.ItemIndex of 0 : DM.TbLetter.Locate('l_theme', Edit1.Text,[loCaseInsensitive, loPartialKey]); 1 : DM.TbLetter.Locate('l_text', Edit1.Text,[loCaseInsensitive, loPartialKey]); 2 : DM.TbLetter.Locate('l_from', Edit1.Text,[loCaseInsensitive, loPartialKey]); end; end; procedure TFmAdminMenu.SpeedButton1Click(Sender: TObject); var str : string; begin str := ''; if SpeedButton1.Caption = 'Включить фильтр' then //Если кнопка не нажата begin Label2.Visible := true; SpeedButton1.Caption := 'Отключить фильтр'; SpeedButton1.Down := true; if CheckBox1.Checked then str := str + 'l_date >= '+DateToStr(DateTimePicker1.Date)+' and l_date <= '+DateToStr(DateTimePicker2.Date); //фильтр по датам if (CheckBox2.Checked) and (DBLookupComboBox1.Text <> '')then begin if str <> '' then str := str +' and '; str := str + 'luser = '+IntToStr(DBLookupComboBox1.KeyValue); //фильтр по ответственному end; if (CheckBox3.Checked) and (DBLookupComboBox2.Text <> '')then begin if str <> '' then str := str +' and '; str := str + 'status = '+IntToStr(DBLookupComboBox2.KeyValue); //фильтр по статусу end; if (CheckBox4.Checked) and (DBLookupComboBox3.Text <> '')then begin if str <> '' then str := str +' and '; str := str + 'cat = '+IntToStr(DBLookupComboBox3.KeyValue); //фильтр по категории end; Dm.TbLetter.Filtered := false; DM.TbLetter.Filter := str; //Задаем итоговый фильтр Dm.TbLetter.Filtered := true; //ShowMessage(str); end else begin Label2.Visible := false; str := ''; SpeedButton1.Caption := 'Включить фильтр'; SpeedButton1.Down := false; Dm.TbLetter.Filtered := false; DM.TbLetter.Filter := str; Dm.TbLetter.Filtered := true; end; end; procedure TFmAdminMenu.BitBtn8Click(Sender: TObject); begin close; end; procedure TFmAdminMenu.BitBtn9Click(Sender: TObject); var i : integer; begin DM.QRUser.Active := false; DM.QRUser.Active := true; FmRCat.DBGrid1.DataSource := DM.DSRUser; FmRCat.DBNavigator1.DataSource := DM.DSRUser; FmRCat.DBChart1.Series[0].Clear; //Удалем все имеющиеся диаграммы FmRCat.DBChart1.Series[1].Clear; FmRCat.DBChart1.Series[2].Clear; FmRCat.DBChart1.Title.Text.Clear;//Удаляем текст FmRCat.DBChart1.Title.Text.Add('Сообщения по ответственным сотрудникам'); DM.QRUser.First; for i := 0 to DM.QRUser.RecordCount -1 do // begin FmRCat.DBChart1.Series[0].Add(DM.QRUser.FieldByName('Количество сообщений в работе').Value, DM.QRUser.FieldByName('ФИО ответственного').AsString + #13); FmRCat.DBChart1.Series[1].Add(DM.QRUser.FieldByName('Количество сообщений в работе').Value, DM.QRUser.FieldByName('ФИО ответственного').AsString + #13); FmRCat.DBChart1.Series[2].Add(DM.QRUser.FieldByName('Количество сообщений в работе').Value, DM.QRUser.FieldByName('ФИО ответственного').AsString + #13); //Вывод значений и подписей в цикле , DM.QRUser.Next; end; FmRCat.DBChart1.Repaint; FmRCat.Caption := 'Сообщения по ответственным сотрудникам'; FmRCat.ShowModal; end; procedure TFmAdminMenu.SpeedButton2Click(Sender: TObject); var Excel: Variant; WorkbookName: string; i, PosInc: Integer; begin DM.QRCat.Active := false; DM.QRCat.Active := true; WorkbookName := GetCurrentDir + '\Сообщения по.xlt'; Excel := CreateOleObject('Excel.Application'); try Excel.Workbooks.Open(WorkbookName); //Экспорт данных из таблиц БД: Excel.WorkSheets[1].Select; Excel.Cells[3,3] := 'Отчет по категориям'; Excel.Cells[5,2] := 'Категория'; Excel.Cells[5,5] := 'Количество сообщений'; DM.QRCat.First; PosInc := 6; //Начальная позиция //Вывод данных из БД в Excel //Цикл по всем позициям запроса for i:=0 to DM.QRCat.RecordCount-1 do begin if i <> DM.QRCat.RecordCount-1 then begin Excel.Rows.Item[PosInc+1].Select; Excel.Selection.Insert; Excel.Rows.Item[PosInc].Select; Excel.Selection.Copy; Excel.Rows.Item[PosInc+1].Select; Excel.ActiveSheet.Paste; Excel.Application.CutCopyMode := False; end; //Вывод данных в Excel Excel.Cells[PosInc,1] := IntToStr(i+1); Excel.Cells[PosInc,2] := DM.QRCat.FieldByName('category').AsString; Excel.Cells[PosInc,5] := DM.QRCat.FieldByName('Количество').AsString; PosInc := PosInc +1; DM.QRCat.Next; end; //for Excel.WorkSheets[1].Select; Excel.Visible := True; except Excel.Quit; end; end; procedure TFmAdminMenu.SpeedButton3Click(Sender: TObject); var Excel: Variant; WorkbookName: string; i, PosInc: Integer; begin DM.QRCat.Active := false; DM.QRCat.Active := true; WorkbookName := GetCurrentDir + '\Сообщения по.xlt'; Excel := CreateOleObject('Excel.Application'); try Excel.Workbooks.Open(WorkbookName); //Экспорт данных из таблиц БД: Excel.WorkSheets[1].Select; Excel.Cells[3,3] := 'Отчет по статусам'; Excel.Cells[5,2] := 'Статус'; Excel.Cells[5,5] := 'Количество сообщений'; DM.QRStatus.First; PosInc := 6; //Начальная позиция //Вывод данных из БД в Excel //Цикл по всем позициям запроса for i:=0 to DM.QRStatus.RecordCount-1 do begin if i <> DM.QRStatus.RecordCount-1 then begin Excel.Rows.Item[PosInc+1].Select; Excel.Selection.Insert; Excel.Rows.Item[PosInc].Select; Excel.Selection.Copy; Excel.Rows.Item[PosInc+1].Select; Excel.ActiveSheet.Paste; Excel.Application.CutCopyMode := False; end; //Вывод данных в Excel Excel.Cells[PosInc,1] := IntToStr(i+1); Excel.Cells[PosInc,2] := DM.QRStatus.FieldByName('status').AsString; Excel.Cells[PosInc,5] := DM.QRStatus.FieldByName('Количество').AsString; PosInc := PosInc +1; DM.QRStatus.Next; end; //for Excel.WorkSheets[1].Select; Excel.Visible := True; except Excel.Quit; end; end; procedure TFmAdminMenu.SpeedButton4Click(Sender: TObject); var Excel: Variant; WorkbookName: string; i, PosInc: Integer; begin DM.QRCat.Active := false; DM.QRCat.Active := true; WorkbookName := GetCurrentDir + '\Сообщения по.xlt'; Excel := CreateOleObject('Excel.Application'); try Excel.Workbooks.Open(WorkbookName); //Экспорт данных из таблиц БД: Excel.WorkSheets[1].Select; Excel.Cells[3,3] := 'Отчет по сотрудникам'; Excel.Cells[5,2] := 'ФИО ответственного'; Excel.Cells[5,5] := 'Количество сообщений в работе'; DM.QRUser.First; PosInc := 6; //Начальная позиция //Вывод данных из БД в Excel //Цикл по всем позициям запроса for i:=0 to DM.QRUser.RecordCount-1 do begin if i <> DM.QRUser.RecordCount-1 then begin Excel.Rows.Item[PosInc+1].Select; Excel.Selection.Insert; Excel.Rows.Item[PosInc].Select; Excel.Selection.Copy; Excel.Rows.Item[PosInc+1].Select; Excel.ActiveSheet.Paste; Excel.Application.CutCopyMode := False; end; //Вывод данных в Excel Excel.Cells[PosInc,1] := IntToStr(i+1); Excel.Cells[PosInc,2] := DM.QRUser.FieldByName('ФИО ответственного').AsString; Excel.Cells[PosInc,5] := DM.QRUser.FieldByName('Количество сообщений в работе').AsString; PosInc := PosInc +1; DM.QRUser.Next; end; //for Excel.WorkSheets[1].Select; Excel.Visible := True; except Excel.Quit; end; end; procedure TFmAdminMenu.BitBtn10Click(Sender: TObject); begin FmAbout.ShowModal; end; procedure TFmAdminMenu.BitBtn11Click(Sender: TObject); // label f; var st : string; i : integer; //счетчик писем count : integer; //Количество сообщений на сервере begin POP3.Host:= DM.TbPost.FieldByName('adress').AsString; // адресс почтового сервера POP3.Port:=110; // порт по которому будет осуществляться подключение POP3.Username:= DM.TbPost.FieldByName('login').AsString;// Логин пользователя POP3.Password:= DM.TbPost.FieldByName('pass').AsString; // пароль пользователя IdMessage.Clear; // очистка буфера для сообщения POP3.Connect; // подключение по протоколу POP3, по настрокам в компоненте IdPOP3, с именем POP3 count := POP3.CheckMessages; for i := 1 to count do // цикл получения писем begin //if POP3.CheckMessages<1 then goto f ; IdMessage.Clear; // очистка буфера для сообщения POP3.Retrieve(i,IdMessage); // получение одного сообщения DM.TbLetter.Insert; DM.TbLetter.FieldByName('l_theme').AsString := IdMessage.Subject; DM.TbLetter.FieldByName('l_from').AsString := IdMessage.From.Text; DM.TbLetter.FieldByName('l_date').AsDateTime := IdMessage.Date; DM.TbLetter.FieldByName('l_text').AsString := IdMessage.Body.Text; DM.TbLetter.Post; POP3.Delete(i); // удаление с сервера, полученного сообщения //ShowMessage(IntToStr(POP3.CheckMessages)); end; //f: POP3.Disconnect; // разрыв соединения с сервером DM.TbLetter.Close; DM.TbLetter.Open; end; procedure TFmAdminMenu.BitBtn12Click(Sender: TObject); begin FmPost.ShowModal; end; procedure TFmAdminMenu.DBGrid1DblClick(Sender: TObject); begin FmFull.Show; end; end. unit UnCat; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, Grids, DBGrids, ExtCtrls; type TFmCat = class(TForm) Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Panel4: TPanel; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; private { Private declarations } public { Public declarations } end; var FmCat: TFmCat; implementation uses UnDM; {$R *.dfm} end. unit UnDM; interface uses SysUtils, Classes, DB, ADODB, DBTables; type TDM = class(TDataModule) ADOC: TADOConnection; QLogin: TADOQuery; TbAdmin: TADOTable; DSAdmin: TDataSource; QLoginu_id: TAutoIncField; QLoginu_fio: TWideStringField; QLoginu_type: TWideStringField; TbAdminu_id: TAutoIncField; TbAdminu_login: TWideStringField; TbAdminu_password: TWideStringField; TbAdminu_fio: TWideStringField; TbAdminu_type: TWideStringField; TbAdminu_note: TWideStringField; TbLetter: TADOTable; DSLetter: TDataSource; TbLetterl_id: TAutoIncField; TbLetterl_theme: TWideStringField; TbLetterl_date: TDateTimeField; TbLetterl_from: TWideStringField; TbLetterl_imp: TWideStringField; TbLetterl_read: TBooleanField; TbLetterstatus: TIntegerField; TbLettercat: TIntegerField; TbStatus: TADOTable; TbCat: TADOTable; TbStatuss_id: TAutoIncField; TbStatusstatus: TWideStringField; TbCatc_id: TAutoIncField; TbCatcategory: TWideStringField; TbCatc_note: TWideStringField; TbNote: TADOTable; DSNote: TDataSource; DSStatus: TDataSource; DSCat: TDataSource; TbNoten_id: TAutoIncField; TbNoteletter: TIntegerField; TbNoten_text: TWideStringField; DSEvent: TDataSource; TbEvent: TADOTable; TbEvente_id: TAutoIncField; TbEventletter: TIntegerField; TbEvente_date: TDateTimeField; TbEvente_text: TWideStringField; QMan: TADOQuery; QManu_id: TAutoIncField; QManu_login: TWideStringField; QManu_password: TWideStringField; QManu_fio: TWideStringField; QManu_type: TWideStringField; QManu_note: TWideStringField; QRCat: TADOQuery; QRCatcategory: TWideStringField; QRStatus: TADOQuery; QRStatusstatus: TWideStringField; QRStatusDSDesigner: TIntegerField; QRCatDSDesigner: TIntegerField; DSRCat: TDataSource; DSRStatus: TDataSource; DSMan: TDataSource; QRUser: TADOQuery; DSRUser: TDataSource; QRUserDSDesigner: TWideStringField; QRUserDSDesigner2: TIntegerField; DSPost: TDataSource; TbPost: TADOTable; TbPostadress: TWideStringField; TbPostlogin: TWideStringField; TbPostpass: TWideStringField; TbLetterl_text: TMemoField; TbLetterluser: TIntegerField; TbLetterl_user: TStringField; TbLetterl_cat: TStringField; TbLetterl_status: TStringField; TbLetterl_text2: TStringField; TbEventluser: TIntegerField; TbEvente_user: TStringField; procedure TbLetterAfterPost(DataSet: TDataSet); procedure TbEventAfterPost(DataSet: TDataSet); procedure TbNoteAfterPost(DataSet: TDataSet); procedure TbStatusAfterPost(DataSet: TDataSet); procedure TbCatAfterPost(DataSet: TDataSet); procedure TbLetterl_textGetText(Sender: TField; var Text: String; DisplayText: Boolean); procedure TbLetterCalcFields(DataSet: TDataSet); procedure TbEventBeforeInsert(DataSet: TDataSet); procedure TbEventAfterInsert(DataSet: TDataSet); //function GrabMemoAsString(TheField : TMemoField): String; private { Private declarations } public { Public declarations } end; var DM: TDM; implementation {$R *.dfm} procedure TDM.TbLetterAfterPost(DataSet: TDataSet); begin TbLetter.Refresh; end; procedure TDM.TbEventAfterPost(DataSet: TDataSet); begin TbEvent.Refresh; end; procedure TDM.TbNoteAfterPost(DataSet: TDataSet); begin TbNote.Refresh; end; procedure TDM.TbStatusAfterPost(DataSet: TDataSet); begin TbStatus.Refresh; end; procedure TDM.TbCatAfterPost(DataSet: TDataSet); begin TbCat.Refresh; end; {function GrabMemoAsString(TheField: TMemoField): string; begin if TheField.IsNull then Result := '' else with TBlobStream.Create(TheField, bmRead) do begin if Size >= 255 then begin Read(Result[1], 255); //Result[0] := #255; end else begin Read(Result[1], Size); //Result[0] := Chr(Size); end; Free; while Pos(#10, Result) > 0 do Result[Pos(#10, Result)] := ' '; while Pos(#13, Result) > 0 do Result[Pos(#13, Result)] := ' '; end; end; } procedure TDM.TbLetterl_textGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin //Text := GrabMemoAsString(TMemoField(Sender)); //GrabMemoAsString(TMemoField(Sender)); end; procedure TDM.TbLetterCalcFields(DataSet: TDataSet); begin DM.TbLetter.FieldByName('l_text2').Value := DM.TbLetter.FieldByName('l_text').Value end; procedure TDM.TbEventBeforeInsert(DataSet: TDataSet); begin //DM.TbEvente_user.LookupCache := true; end; procedure TDM.TbEventAfterInsert(DataSet: TDataSet); begin //DM.TbEvente_user.LookupCache := false; end; end. unit UnEvent; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, Grids, DBGrids, ExtCtrls; type TFmEvent = class(TForm) Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Panel4: TPanel; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; private { Private declarations } public { Public declarations } 1> |