📄 archives_query.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 + -