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

📄 archives_query.cpp

📁 档案管理系统源码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Archives_Query.h"  //数据记录查询窗体头文件
#include "MonthCalendar.h"   //日期选择窗体头文件
#include "DataModule.h"      //数据模块窗体头文件

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TF_Query *F_Query;
//---------------------------------------------------------------------------
__fastcall TF_Query::TF_Query(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TF_Query::FormCreate(TObject *Sender)
{   /*****数据记录查询窗体创建事件*****/
    LV_SQL->Items->Clear();  //清除ListView对象所有列表项
}
//---------------------------------------------------------------------------

void __fastcall TF_Query::BB_AddClick(TObject *Sender)
{   /*****增加按钮单击事件*****/
    if(CBE_Field->Text.IsEmpty()||CB_Cond->Text.IsEmpty()||ME_Data->Text.IsEmpty()){
      ShowMessage("查找字段、查找条件或查找值不能为空");
      ME_Data->SetFocus();  //焦点在查找值输入框
      return;
      }
    TListItem *SQL;
    SQL = LV_SQL->Items->Add();     //增加一条查找字段、查找条件和查找值到ListView内
    if(LV_SQL->Items->Count>1){
      if(RG_Cond->ItemIndex)
        SQL->Caption = "或者";      //增加查找逻辑关系值
      else
        SQL->Caption = "并且";
      }
    SQL->SubItems->Add(CBE_Field->Text); //追加查找字段
    SQL->SubItems->Add(CB_Cond->Text);   //追加查找条件
    SQL->SubItems->Add(ME_Data->Text);   //追加查找值
}
//---------------------------------------------------------------------------


void __fastcall TF_Query::CBE_FieldChange(TObject *Sender)
{   /*****查找字段ComboBoxEx对象OnChange事件*****/
    if(CBE_Field->Text=="建档日期")  //查找字段是建档日期字段时出现选择日期按钮
      SButton1->Visible = true;
    else
      SButton1->Visible = false;
}
//---------------------------------------------------------------------------

void __fastcall TF_Query::SButton1Click(TObject *Sender)
{   /*****建档日期选择按钮SButton1单击事件*****/
    F_Date->Left = F_Query->Left+SButton1->Left; //控件日期选择窗口显示位置
    F_Date->Top = F_Query->Top+SButton1->Top;
    F_Date->ShowModal();   //弹出日期选择窗口
    if(F_Date->ModalResult==mrOk)  //用户确定选择的日期
      ME_Data->Text = DateToStr(F_Date->MC_Date->Date); //选择的日期赋字段值字段
}
//---------------------------------------------------------------------------

void __fastcall TF_Query::BB_DeleteClick(TObject *Sender)
{   /*****删除按钮单击事件*****/
    int No = LV_SQL->ItemIndex;  //获得用户选择ListView的记录值
    LV_SQL->Items->Delete(No);   //删除用户选择ListView记录
}
//---------------------------------------------------------------------------

void __fastcall TF_Query::BB_QueryClick(TObject *Sender)
{   /*****查找按钮单击事件*****/
    if(!LV_SQL->Items->Count){
      ShowMessage("你还没有选择数据记录查找条件,请选择");
      ME_Data->SetFocus();  //焦点在查找值输入框
      return;
      }
    DM->AQ_Manage->Close();  //关闭数据集
    DM->AQ_Manage->SQL->Clear();   //清除SQL语句
    int No = LV_SQL->Items->Count; //获得当前ListView对象中的记录条数
    AnsiString str,buf1,buf2;                //用来存放SQL语句
    for(int i=0;i<No;i++){         //以下所有语句都用来进行转换用户选择查找条件为SQL语句
      if(i>=1){                    //第二条记录开始需要添加查找逻辑
        buf1 = LV_SQL->Items->Item[i]->Caption;  //通过判断添加对应的逻辑条件
        if(buf1 == "并且")
          str.Insert(" AND ",str.Length()+1);
        else
          str.Insert(" OR ",str.Length()+1);
        }
      buf1 = LV_SQL->Items->Item[i]->SubItems->Strings[0];  //通过查找字段判断添加对应SQL语句
      if(buf1 == "档案编号")
        str.Insert("Content_ID",str.Length()+1);
      else if(buf1 == "档案名称")
        str.Insert("Content_Name",str.Length()+1);
      else if(buf1 == "档案柜号")
        str.Insert("Content_Tank",str.Length()+1);
      else if(buf1 == "档案人姓名")
       str.Insert("Content_Person",str.Length()+1);
      else if(buf1 == "建档日期")
        str.Insert("Content_STime",str.Length()+1);
      buf2 = LV_SQL->Items->Item[i]->SubItems->Strings[1];  //通过查找条件判断添加对应SQL语句
      if(buf2 == "等于")
        str.Insert("=",str.Length()+1);
      else if(buf2 == "不等于")
        str.Insert("<>",str.Length()+1);
      else if(buf2 == "大于等于")
        str.Insert(">=",str.Length()+1);
      else if(buf2 == "小于等于")
        str.Insert("<=",str.Length()+1);
      buf2 = LV_SQL->Items->Item[i]->SubItems->Strings[2];  //通过查找值判断添加对应SQL语句
      if(buf1 == "档案编号")
        str.Insert(buf2,str.Length()+1);  //整数类型字段
      else if(buf1 == "档案名称"){
        str.Insert("'",str.Length()+1);   //字符串字段两边需要加上'标志
        str.Insert(buf2,str.Length()+1);  //字符串类型字段
        str.Insert("'",str.Length()+1);
        }
      else if(buf1 == "档案柜号")
        str.Insert(buf2,str.Length()+1);  //整数类型字段
      else if(buf1 == "档案人姓名"){
        str.Insert("'",str.Length()+1);   //字符串字段两边需要加上'标志
        str.Insert(buf2,str.Length()+1);  //字符串类型字段
        str.Insert("'",str.Length()+1);
        }
      else if(buf1 == "建档日期"){
        str.Insert("'",str.Length()+1);  //日期字段两边也需要加上'标志
        str.Insert(buf2,str.Length()+1); //日期类型字段
        str.Insert("'",str.Length()+1);  
        }
      }
    DM->AQ_Manage->SQL->Add("SELECT * FROM Archives_Content WHERE ");  //添加查询语句
    DM->AQ_Manage->SQL->Add(str); //添加查询条件语句
    DM->AQ_Manage->Open(); //执行SQL语句,打开数据集
    F_Query->Close();        //关闭数据记录查询窗口
}
//---------------------------------------------------------------------------

void __fastcall TF_Query::BB_CloseClick(TObject *Sender)
{   /*****关闭按钮单击事件*****/
    F_Query->Close();        //关闭数据记录查询窗口
}
//---------------------------------------------------------------------------

void __fastcall TF_Query::BB_DatabaseClick(TObject *Sender)
{   /*****全部数据按钮单击事件*****/
    DM->AQ_Manage->Close();  //关闭数据集
    DM->AQ_Manage->SQL->Clear();  //清除SQL语句
    DM->AQ_Manage->SQL->Add("SELECT * FROM Archives_Content"); //添加SQL语句
    DM->AQ_Manage->Open(); //执行SQL语句,打开数据集
    F_Query->Close();        //关闭数据记录查询窗口
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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