⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 醫院管理 還不錯 醫院管理 還不錯 醫院管理 還不錯
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    AnsiString strUptId = dmMain->qryExam->FieldByName("Id")->AsString;
    TADOQuery * qryEx = dmMain->qrySQLPlus;

    qryEx->Close();
    qryEx->SQL->Clear();
    qryEx->SQL->Add("select * from Exam where id=" + strUptId);
    qryEx->Open();

    pDlg->Caption = "修改";

    pDlg->dtpExamDate->Date = qryEx->FieldByName("ExamDate")->Value;
    pDlg->dtpExamTime->Time = qryEx->FieldByName("ExamTime")->Value;
    pDlg->mmoRemark->Text = qryEx->FieldByName("ExamRemark")->AsString;
    pDlg->mmoOpinon->Text = qryEx->FieldByName("ExamOpinon")->AsString;
    pDlg->rdoExamKind->ItemIndex = qryEx->FieldByName("ExamKind")->Value;
    pDlg->rdoExamResult->ItemIndex = qryEx->FieldByName("ExamResult")->Value;




    if (pDlg->ShowModal() == mrOk)
    {
        qryEx->Close();
        qryEx->SQL->Clear();
        qryEx->Prepared = true;

        qryEx->SQL->Add( "update Exam set ExamKind=" + IntToStr(pDlg->rdoExamKind->ItemIndex) + ","
                         + "ExamDate='" + DateToStr(pDlg->dtpExamDate->Date) + "',"
                         + "ExamTime='"   + TimeToStr(pDlg->dtpExamTime->Time) + "',"
                         + "ExamResult=" + IntToStr(pDlg->rdoExamResult->ItemIndex) + ","
                         + "ExamRemark='" + pDlg->mmoRemark->Text + "',"
                         +  "ExamOpinon='" + pDlg->mmoOpinon->Text + "',"
                         + "OptId=" + gLogonInf.m_strOptId  + ","
                         + "OptDate=Date() where id=" + strUptId);

        //ShowMessage(qryEx->SQL->Text);
        qryEx->ExecSQL();
        qryEx->Prepared = false;

        dmMain->qryExam->Close();
        dmMain->qryExam->Open();

    }
    delete pDlg;

    dmMain->qryExam->Close();
    dmMain->qryExam->Open();

}
//---------------------------------------------------------------------------







void __fastcall TfrmMain::miModiMedicalClick(TObject *Sender)
{
    if (dmMain->qryMedical->RecordCount < 1)
    {
        return;
    }

    TfrmMedical * pDlg = new TfrmMedical(this);
    pDlg->Caption = "修改";

    AnsiString strMedicalId = dmMain->qryMedical->FieldByName("Id")->AsString;
    TADOQuery * qryEx = dmMain->qrySQLPlus;

    qryEx->Close();
    qryEx->SQL->Clear();
    qryEx->SQL->Add("select * from Medical where id=" + strMedicalId);
    qryEx->Open();
    if (qryEx->RecordCount < 1)
    {
        return;
    }

    pDlg->chkDrug->Checked = qryEx->FieldByName("IsDrug")->AsInteger == 1;
    pDlg->chkInjection->Checked = qryEx->FieldByName("IsInjection")->AsInteger == 1;
    pDlg->chkPregnancy->Checked =qryEx->FieldByName("IsPregnancy")->AsInteger == 1;
    pDlg->chkEkg->Checked  =qryEx->FieldByName("IsEkg")->AsInteger == 1;
    pDlg->chkSplint->Checked  =qryEx->FieldByName("IsSplint")->AsInteger == 1;
    pDlg->chkWound->Checked  =qryEx->FieldByName("IsWound")->AsInteger == 1;
    pDlg->chkOxygen->Checked  =qryEx->FieldByName("IsOxygen")->AsInteger == 1;
    pDlg->chkVaccination->Checked  =qryEx->FieldByName("IsVaccination")->AsInteger == 1;
    pDlg->chkSickLeave->Checked  =qryEx->FieldByName("IsSickLeave")->AsInteger == 1;
    pDlg->chkReferral->Checked  =qryEx->FieldByName("IsReferral")->AsInteger == 1;

    pDlg->dtpMedicalDate->Date = qryEx->FieldByName("MedicalDate")->Value;
    pDlg->mmoComplaint->Text = qryEx->FieldByName("Complaint")->AsString;
    pDlg->mmoCheckUp->Text = qryEx->FieldByName("CheckUp")->AsString;
    pDlg->mmoCheckResult->Text = qryEx->FieldByName("CheckResult")->AsString;

    pDlg->mmoRemark->Text = qryEx->FieldByName("Remark")->AsString;
    pDlg->mmoHealthEdu->Text = qryEx->FieldByName("HealthEdu")->AsString;

    if (pDlg->chkDrug->Checked)
    {
        qryEx->Close();
        qryEx->SQL->Clear();
        qryEx->SQL->Add("select * from Drug where MedicalId=" + strMedicalId);
        qryEx->Open();
        while (!qryEx->Eof)
        {
            TListItem * li = pDlg->lvDrug->Items->Add();
            AnsiString strNum = qryEx->FieldByName("Number")->AsString;
            AnsiString strPrice =qryEx->FieldByName("Price")->AsString;

            li->Caption = qryEx->FieldByName("Mode")->AsString;
            li->SubItems->Add(qryEx->FieldByName("Name")->AsString);
            li->SubItems->Add(strNum);
            li->SubItems->Add(qryEx->FieldByName("Unit")->AsString);
            li->SubItems->Add(strPrice);
            AnsiString strTotalPrice;


            if (strNum == "")
            {
                strNum = "0";
            }

            if (strPrice == "")
            {
                strPrice = "0";
            }

            strTotalPrice.sprintf("%.2f", atof(strPrice.c_str()) * atof(strNum.c_str()));
            li->SubItems->Add(strTotalPrice);
            qryEx->Next();
        }
    }
    if (pDlg->chkInjection->Checked)
    {
        qryEx->Close();
        qryEx->SQL->Clear();
        qryEx->SQL->Add("select * from Injection where MedicalId=" + strMedicalId);
        qryEx->Open();
        while (!qryEx->Eof)
        {
            TListItem * li = pDlg->lvInjection->Items->Add();
            AnsiString strNum = qryEx->FieldByName("Number")->AsString;
            AnsiString strPrice =qryEx->FieldByName("Price")->AsString;

            li->Caption = qryEx->FieldByName("Mode")->AsString;
            li->SubItems->Add(qryEx->FieldByName("Name")->AsString);
            li->SubItems->Add(strNum);
            li->SubItems->Add(qryEx->FieldByName("Unit")->AsString);
            li->SubItems->Add(strPrice);
            AnsiString strTotalPrice;


            if (strNum == "")
            {
                strNum = "0";
            }

            if (strPrice == "")
            {
                strPrice = "0";
            }

            strTotalPrice.sprintf("%.2f", atof(strPrice.c_str()) * atof(strNum.c_str()));
            li->SubItems->Add(strTotalPrice);
            qryEx->Next();
        }
    }
    if (pDlg->chkOxygen->Checked)
    {
        qryEx->Close();
        qryEx->SQL->Clear();
        qryEx->SQL->Add("select * from OxyGen where MedicalId=" + strMedicalId);
        qryEx->Open();
#ifdef _DEBUG

        ShowMessage("Open Oxygen ok");
#endif

        pDlg->dtpOxygenStartDate->Date = qryEx->FieldByName("StartDate")->Value;
        pDlg->dtpOxygenStartTime->Time = qryEx->FieldByName("StartTime")->Value;
        pDlg->dtpOxygenEndDate->Date = qryEx->FieldByName("EndDate")->Value;
        pDlg->dtpOxygenEndTime->Time = qryEx->FieldByName("EndTime")->Value;
        pDlg->edtStreamSize->Text = qryEx->FieldByName("StreamSize")->AsString;

    }

    if (pDlg->chkVaccination->Checked)
    {

        qryEx->Close();
        qryEx->SQL->Clear();
        qryEx->SQL->Add("select * from Vaccination where MedicalId=" + strMedicalId);
        qryEx->Open();
#ifdef _DEBUG

        ShowMessage("Open Vaccination ok");
#endif

        pDlg->cboVaccinationDrug->Text = qryEx->FieldByName("Name")->AsString;
        pDlg->edtVaccinationNum->Text = qryEx->FieldByName("Number")->AsString;
        pDlg->cboVaccinationUnit->Text = qryEx->FieldByName("Unit")->AsString;
        pDlg->edtVaccinationPrice->Text = qryEx->FieldByName("Price")->AsString;
    }

    if (pDlg->chkSickLeave->Checked)
    {
        qryEx->Close();
        qryEx->SQL->Clear();
        qryEx->SQL->Add("select * from SickLeave where MedicalId=" + strMedicalId);
        qryEx->Open();
#ifdef _DEBUG

        ShowMessage("Open SickLeave ok");
#endif

        pDlg->edtSickLeaveNum->Text = qryEx->FieldByName("DayNum")->AsString;
    }

    if (pDlg->ShowModal() != mrOk)
    {
        delete pDlg;

        return;
    }

    AnsiString strDrug = pDlg->chkDrug->Checked ? "1" : "0";      //1
    AnsiString strInjection = pDlg->chkInjection->Checked ? "1" : "0";         //2
    AnsiString strPregnancy = pDlg->chkPregnancy->Checked ? "1" : "0";            //3
    AnsiString strEkg = pDlg->chkEkg->Checked ? "1" : "0";               //4
    AnsiString strSplint = pDlg->chkSplint->Checked ? "1" : "0";                  //5
    AnsiString strWound = pDlg->chkWound->Checked ? "1" : "0";                     //6
    AnsiString strOxygen = pDlg->chkOxygen->Checked ? "1" : "0";                        //7
    AnsiString strVaccination = pDlg->chkVaccination->Checked ? "1" : "0";                     //8
    AnsiString strSickLeave = pDlg->chkSickLeave->Checked ? "1" : "0";                        //9
    AnsiString strReferral = pDlg->chkReferral->Checked ? "1" : "0";                        //10

    //Write the Main Talbe

    qryEx->Close();
    qryEx->SQL->Clear();
    AnsiString strFmt = "update Medical set MedicalDate='%s',Complaint='%s',"
                        "CheckUp='%s',CheckResult='%s',IsDrug=%s,IsInjection=%s,"
                        "IsOxygen=%s,IsPregnancy=%s,IsEkg=%s,IsSplint=%s,IsVaccination=%s,"
                        "IsWound=%s,IsReferral=%s,IsSickLeave=%s,Remark='%s',HealthEdu='%s',OptId=%s,OptDate=Date() where id=%s";

    AnsiString strExec;
    strExec.sprintf(strFmt.c_str(),
                    DateToStr(pDlg->dtpMedicalDate->Date),
                    pDlg->mmoComplaint->Text.c_str(),
                    pDlg->mmoCheckUp->Text.c_str(),
                    pDlg->mmoCheckResult->Text.c_str(),
                    strDrug,
                    strInjection,
                    strOxygen,
                    strPregnancy,
                    strEkg,
                    strSplint,
                    strVaccination,
                    strWound,
                    strReferral,
                    strSickLeave,
                    pDlg->mmoRemark->Text.c_str(),
                    pDlg->mmoHealthEdu->Text.c_str(),
                    gLogonInf.m_strOptId.c_str(),
                    strMedicalId);

    qryEx->SQL->Add(strExec);

#ifdef _DEBUG

    ShowMessage(strExec);
#endif

    qryEx->ExecSQL();

    //get just insert record no

    qryEx->Close();

    qryEx->SQL->Clear();

    if (pDlg->chkDrug->Checked)
    {
        qryEx->SQL->Clear();
        qryEx->SQL->Add("delete from Drug where MedicalId=" + strMedicalId);
        qryEx->ExecSQL();

        for (int i = 0; i < pDlg->lvDrug->Items->Count; ++i)
        {
            AnsiString strFmt = "insert into Drug "
                                "(MedicalId,[Mode],[Name],[Unit],"
                                "[Price],[Number],OptId) values"
                                " (%s,'%s','%s','%s',%s,%s,%s)";

            AnsiString strExec;

            strExec.sprintf(strFmt.c_str(),
                            strMedicalId,
                            pDlg->lvDrug->Items->Item[i]->Caption,
                            pDlg->lvDrug->Items->Item[i]->SubItems->Strings[0],
                            pDlg->lvDrug->Items->Item[i]->SubItems->Strings[2],
                            pDlg->lvDrug->Items->Item[i]->SubItems->Strings[3],
                            pDlg->lvDrug->Items->Item[i]->SubItems->Strings[1],

                            gLogonInf.m_strOptId.c_str());

            qryEx->SQL->Clear();
#ifdef _DEBUG

            ShowMessage(strExec);
#endif

            qryEx->SQL->Add(strExec);
            qryEx->ExecSQL();
        }
    }

    if (pDlg->chkInjection->Checked)
    {
        qryEx->SQL->Clear();
        qryEx->SQL->Add("delete from Injection where MedicalId=" + strMedicalId);
        qryEx->ExecSQL();

        for (int i = 0; i < pDlg->lvInjection->Items->Count; ++i)
        {
            AnsiString strFmt = "insert into Injection "
                                "(MedicalId,[Mode],[Name],[Unit],"
                                "[Price],[Number],OptId) values"
                                " (%s,'%s','%s','%s',%s,%s,%s)";

            AnsiString strExec;

            strExec.sprintf(strFmt.c_str(),
                            strMedicalId,
                            pDlg->lvInjection->Items->Item[i]->Caption,
                            pDlg->lvInjection->Items->Item[i]->SubItems->Strings[0],
                            pDlg->lvInjection->Items->Item[i]->SubItems->Strings[2],
                            pDlg->lvInjection->Items->Item[i]->SubItems->Strings[3],
                            pDlg->lvInjection->Items->Item[i]->SubItems->Strings[1],

                            gLogonInf.m_strOptId.c_str());

            qryEx->SQL->Clear();
#ifdef _DEBUG

            ShowMessage(strExec);
#endif

            qryEx->SQL->Add(strExec);
            qryEx->ExecSQL();
        }
    }

    if (pDlg->chkOxygen->Checked)
    {
        qryEx->SQL->Clear();
        qryEx->SQL->Add("delete from Oxygen where MedicalId=" + strMedicalId);
        qryEx->ExecSQL();
        AnsiString strFmt = "insert into Oxygen(MedicalId,StartDate,"
                            "StartTime,EndDate,EndTime,StreamSize,OptId) "
                            " values (%s,'%s','%s','%s','%s','%s',%s)";

        AnsiString strExec;

        strExec.sprintf(strFmt.c_str(),
                        strMedicalId,
                        DateToStr(pDlg->dtpOxygenStartDate->Date),
                        TimeToStr(pDlg->dtpOxygenStartTime->Date),
                        DateToStr(pDlg->dtpOxygenEndDate->Date),
                        TimeToStr(pDlg->dtpOxygenEndTime->Date),
                        pDlg->edtStreamSize->Text.c_str(),

                        gLogonInf.m_strOptId.c_str());

        qryEx->SQL->Clear();
#ifdef _DEBUG

        ShowMessage(strExec);
#endif

        qryEx->SQL->Add(strExec);
        qryEx->ExecSQL();
    }

    if (pDlg->chkVaccination->Checked)
    {
        qryEx->SQL->Clear();
        qryEx->SQL->Add("delete from Vaccination where MedicalId=" + strMedicalId);
        qryEx->ExecSQL();
        AnsiString strFmt = "insert into Vaccination "
                            "(MedicalId,[Name],[Unit],"
                            "[Price],[Number],OptId) values"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -