?? archives_query.cpp
字號(hào):
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Archives_Query.h" //數(shù)據(jù)記錄查詢(xún)窗體頭文件
#include "MonthCalendar.h" //日期選擇窗體頭文件
//#include "DataModule.h" //數(shù)據(jù)模塊窗體頭文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TF_Query *F_Query;
//---------------------------------------------------------------------------
__fastcall TF_Query::TF_Query(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TF_Query::FormShow(TObject *Sender)
{ /*****數(shù)據(jù)記錄查詢(xún)窗體OnShow事件*****/
LV_SQL->Items->Clear(); //清除ListView對(duì)象所有列表項(xiàng)
CBE_Field->Items = S_Field; //查找字段賦值
}
//---------------------------------------------------------------------------
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(); //焦點(diǎn)在查找值輸入框
return;
}
TListItem *SQL;
SQL = LV_SQL->Items->Add(); //增加一條查找字段、查找條件和查找值到ListView內(nèi)
if(LV_SQL->Items->Count>1){
if(RG_Cond->ItemIndex)
SQL->Caption = "或者"; //增加查找邏輯關(guān)系值
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對(duì)象OnChange事件*****/
if(T_Field[CBE_Field->ItemIndex] == 2) //T_Field[j]==2表示日期字段
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) //用戶(hù)確定選擇的日期
ME_Data->Text = DateToStr(F_Date->MC_Date->Date); //選擇的日期賦字段值字段
}
//---------------------------------------------------------------------------
void __fastcall TF_Query::BB_DeleteClick(TObject *Sender)
{ /*****刪除按鈕單擊事件*****/
int No = LV_SQL->ItemIndex; //獲得用戶(hù)選擇ListView的記錄值
LV_SQL->Items->Delete(No); //刪除用戶(hù)選擇ListView記錄
}
//---------------------------------------------------------------------------
void __fastcall TF_Query::BB_QueryClick(TObject *Sender)
{ /*****查找按鈕單擊事件*****/
if(!LV_SQL->Items->Count){
ShowMessage("你還沒(méi)有選擇數(shù)據(jù)記錄查找條件,請(qǐng)選擇");
ME_Data->SetFocus(); //焦點(diǎn)在查找值輸入框
return;
}
Query->Close(); //關(guān)閉數(shù)據(jù)集
Query->SQL->Clear(); //清除SQL語(yǔ)句
int No = LV_SQL->Items->Count; //獲得當(dāng)前ListView對(duì)象中的記錄條數(shù)
AnsiString str,buf1,buf2; //用來(lái)存放SQL語(yǔ)句
for(int i=0;i<No;i++){ //以下所有語(yǔ)句都用來(lái)進(jìn)行轉(zhuǎn)換用戶(hù)選擇查找條件為SQL語(yǔ)句
if(i>=1){ //第二條記錄開(kāi)始需要添加查找邏輯
buf1 = LV_SQL->Items->Item[i]->Caption; //通過(guò)判斷添加對(duì)應(yīng)的邏輯條件
if(buf1 == "并且")
str.Insert(" AND ",str.Length()+1);
else
str.Insert(" OR ",str.Length()+1);
}
buf1 = LV_SQL->Items->Item[i]->SubItems->Strings[0]; //通過(guò)查找字段判斷添加對(duì)應(yīng)SQL語(yǔ)句
for(int j=0;j<S_Field->Count;j++){
if(buf1 == S_Field->Strings[j]){
str.Insert(N_Field->Strings[j],str.Length()+1);
break;
}
}
buf2 = LV_SQL->Items->Item[i]->SubItems->Strings[1]; //通過(guò)查找條件判斷添加對(duì)應(yīng)SQL語(yǔ)句
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]; //通過(guò)查找值判斷添加對(duì)應(yīng)SQL語(yǔ)句
for(int j=0;j<S_Field->Count;j++){
if(buf1 == S_Field->Strings[j]){
if(T_Field[j]==1||T_Field[j]==2)
str.Insert("'",str.Length()+1); //字符串或者日期字段兩邊也需要加上'標(biāo)志
str.Insert(buf2,str.Length()+1);
if(T_Field[j]==1||T_Field[j]==2)
str.Insert("'",str.Length()+1); //字符串或者日期字段兩邊也需要加上'標(biāo)志
break;
}
}
}
Query->SQL->Add("SELECT * FROM "+Q_Table+" WHERE "); //添加查詢(xún)語(yǔ)句
Query->SQL->Add(str); //添加查詢(xún)條件語(yǔ)句
Query->Open(); //執(zhí)行SQL語(yǔ)句,打開(kāi)數(shù)據(jù)集
F_Query->Close(); //關(guān)閉數(shù)據(jù)記錄查詢(xún)窗口
}
//---------------------------------------------------------------------------
void __fastcall TF_Query::BB_CloseClick(TObject *Sender)
{ /*****關(guān)閉按鈕單擊事件*****/
F_Query->Close(); //關(guān)閉數(shù)據(jù)記錄查詢(xún)窗口
}
//---------------------------------------------------------------------------
void __fastcall TF_Query::BB_DatabaseClick(TObject *Sender)
{ /*****全部數(shù)據(jù)按鈕單擊事件*****/
Query->Close(); //關(guān)閉數(shù)據(jù)集
Query->SQL->Clear(); //清除SQL語(yǔ)句
Query->SQL->Add("SELECT * FROM "+Q_Table); //添加SQL語(yǔ)句
Query->Open(); //執(zhí)行SQL語(yǔ)句,打開(kāi)數(shù)據(jù)集
F_Query->Close(); //關(guān)閉數(shù)據(jù)記錄查詢(xún)窗口
}
//---------------------------------------------------------------------------
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -