// U_Indrapportering.cpp // 21. maj 2001 // Datamatiker, Programmering af store systemer // Mikkel Munksgaard og Niels Grove-Rasmussen //--------------------------------------------------------------------- #include #pragma hdrstop #include "U_Indrapportering.h" //--------------------------------------------------------------------- #pragma resource "*.dfm" TDial_Indrapportering *Dial_Indrapportering; //--------------------------------------------------------------------- __fastcall TDial_Indrapportering::TDial_Indrapportering(TComponent* AOwner) : TForm(AOwner) { } //--------------------------------------------------------------------------- void __fastcall TDial_Indrapportering::FormActivate(TObject *Sender) { Labl_Tidspunkt->Caption = DateTimeToStr(Now()); Labl_Modtagerdata->Caption = getUserName(); Memo_Beskrivelse->Clear(); Labl_Indmelderdata->Caption = ""; } //--------------------------------------------------------------------- void __fastcall TDial_Indrapportering::CancelBtnClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TDial_Indrapportering::Labl_TidspunktClick(TObject *Sender) { Labl_Tidspunkt->Caption = DateTimeToStr(Now()); } //--------------------------------------------------------------------------- void __fastcall TDial_Indrapportering::Butn_KundeClick(TObject *Sender) { if(Dial_IndmelderKunde->ShowModal() == mrOk) { Labl_Indmelderdata->Caption = Dial_IndmelderKunde->Labl_Navndata->Caption; CBox_Udstyr->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TDial_Indrapportering::Butn_TeknikerClick(TObject *Sender) { if(Dial_IndmelderTekniker->ShowModal() == mrOk); if(Dial_IndmelderTekniker->CBox_Initialer == NULL) MessageDlg("Der er ikke valgt nogle initialer.", mtError, TMsgDlgButtons() << mbOK, 0); else Labl_Indmelderdata->Caption = Dial_IndmelderTekniker->Labl_Navndata->Caption; } //--------------------------------------------------------------------------- void __fastcall TDial_Indrapportering::OKBtnClick(TObject *Sender) { if(!setFejlmelding()) Close(); } //--------------------------------------------------------------------------- int TDial_Indrapportering::getUserId() { int tempUserId(0); TTable *user = new TTable(this); user->TableName = "T_User"; user->Active = TRUE; tempUserId = user->FieldByName("MedarbejderId")->AsInteger; delete user; return tempUserId; } //--------------------------------------------------------------------------- String TDial_Indrapportering::getUserName() { String tempUser(NULL); TQuery *medarbejder = new TQuery(Dial_Indrapportering); medarbejder->SQL->Clear(); medarbejder->SQL->Add("SELECT T_Person.Navn"); medarbejder->SQL->Add("FROM T_Person INNER JOIN T_Medarbejder ON"); medarbejder->SQL->Add("T_Person.Id = T_Medarbejder.PersonId"); medarbejder->SQL->Add("WHERE T_Medarbejder.Id = "); medarbejder->SQL->Add("'" + IntToStr(getUserId()) + "'"); medarbejder->Open(); if(medarbejder->Eof) { medarbejder->Close(); Fejl("getUserName", "Der er ingen bruger"); } else tempUser = medarbejder->FieldByName("Navn")->AsString; medarbejder->Close(); delete medarbejder; // not nessary but nice return tempUser; } //--------------------------------------------------------------------------- int TDial_Indrapportering::getIndmelderId() { int tempIndmelderId(0); TQuery *indmelder = new TQuery(this); indmelder->SQL->Clear(); indmelder->SQL->Add("SELECT Id FROM T_Person"); indmelder->SQL->Add("WHERE Navn = '" + Labl_Indmelderdata->Caption + "'"); indmelder->Open(); if(!indmelder->Eof) tempIndmelderId = indmelder->FieldByName("Id")->AsInteger; indmelder->Close(); delete indmelder; return tempIndmelderId; } //--------------------------------------------------------------------------- int TDial_Indrapportering::getUdstyrId() { int tempUdstyrId(0); TQuery *udstyr = new TQuery(this); udstyr->SQL->Clear(); udstyr->SQL->Add("SELECT Id FROM T_Udstyr"); udstyr->SQL->Add("WHERE Nummer = '" + CBox_Udstyr->Text + "'"); udstyr->Open(); if(!udstyr->Eof) tempUdstyrId = udstyr->FieldByName("Id")->AsInteger; udstyr->Close(); delete udstyr; return tempUdstyrId; } //--------------------------------------------------------------------------- int TDial_Indrapportering::getStatusId() { int tempStatusId(0); TQuery *status = new TQuery(this); status->SQL->Clear(); status->SQL->Add("SELECT Id FROM T_Status"); status->SQL->Add("WHERE Status = '" + CBox_Status->Text + "'"); status->Open(); if(!status->Eof) tempStatusId = status->FieldByName("Id")->AsInteger; status->Close(); delete status; return tempStatusId; } //--------------------------------------------------------------------------- int TDial_Indrapportering::setFejlmelding() { TTable *fejlmelding = new TTable(this); fejlmelding->TableName = "T_Fejlmelding"; fejlmelding->Active = true; fejlmelding->Insert(); // Beskrivelse ---------- if(Memo_Beskrivelse->Text != "") fejlmelding->FieldByName("Beskrivelse")->AsString = Memo_Beskrivelse->Text; else { MessageDlg("Der er ikke indtastet en fejlbeskrivelse.", mtError, TMsgDlgButtons() << mbRetry, 0); delete fejlmelding; Memo_Beskrivelse->SetFocus(); return 1; } // Tidspunkt ---------- fejlmelding->FieldByName("Tidspunkt")->AsDateTime = Labl_Tidspunkt->Caption; // UdstyrId ---------- if(getUdstyrId()) fejlmelding->FieldByName("UdstyrId")->AsInteger = getUdstyrId(); else { MessageDlg("Der er ikke valgt udstyr.", mtError, TMsgDlgButtons() << mbRetry, 0); delete fejlmelding; CBox_Udstyr->SetFocus(); return 1; } // PersonId (indmelder) ---------- if(getIndmelderId()) fejlmelding->FieldByName("PersonId")->AsInteger = getIndmelderId(); else { MessageDlg("Der er ikke valgt indmelder.", mtError, TMsgDlgButtons() << mbRetry, 0); delete fejlmelding; Butn_Kunde->SetFocus(); return 1; } // MedarbejderId (user) ---------- fejlmelding->FieldByName("MedarbejderId")->AsInteger = getUserId(); // StatusId ---------- if(getStatusId()) fejlmelding->FieldByName("StatusId")->AsInteger = getStatusId(); else { MessageDlg("Der er ikke valgt status.", mtError, TMsgDlgButtons() << mbRetry, 0); delete fejlmelding; CBox_Status->SetFocus(); return 1; } fejlmelding->Post(); delete fejlmelding; return 0; } //--------------------------------------------------------------------------- void TDial_Indrapportering::Fejl(const String& metode, const String& meddelelse) { MessageDlg("Fejl i Dial_Indrapportering." + metode + ":\n\n" + meddelelse + ".", mtError, TMsgDlgButtons() << mbAbort, 0); exit(EXIT_FAILURE); } //---------------------------------------------------------------------------