📄 employeeseek.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "employeeseek.h"
#include "main.h"
#include "rep.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFm_employeeseek *Fm_employeeseek;
//---------------------------------------------------------------------------
__fastcall TFm_employeeseek::TFm_employeeseek(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::FormShow(TObject *Sender)
{
AnsiString S;
DTP1->Date=Date();
DTP2->Date=Date();
DTP3->Date=Date();
DTP4->Date=Date();
DTP1->Checked=false;
DTP2->Enabled=false;
DTP3->Checked=false;
DTP4->Enabled=false;
//下拉内容
S="select * from basic where xm='性别'";
Query->Close();
Query->SQL->Clear();
Query->SQL->Add(S);
Query->Open();
Edit3->Items->Clear();
if(!Query->IsEmpty())
{
while(!Query->Eof)
{
Edit3->Items->Add(Query->FieldByName("sjnr")->AsString);
Query->Next();
}
}
S="select * from basic where xm='学历'";
Query->Close();
Query->SQL->Clear();
Query->SQL->Add(S);
Query->Open();
Edit4->Items->Clear();
if(!Query->IsEmpty())
{
while(!Query->Eof)
{
Edit4->Items->Add(Query->FieldByName("sjnr")->AsString);
Query->Next();
}
}
S="select * from basic where xm='部门名称'";
Query->Close();
Query->SQL->Clear();
Query->SQL->Add(S);
Query->Open();
Edit5->Items->Clear();
if(!Query->IsEmpty())
{
while(!Query->Eof)
{
Edit5->Items->Add(Query->FieldByName("sjnr")->AsString);
Query->Next();
}
}
S="select * from basic where xm='职务'";
Query->Close();
Query->SQL->Clear();
Query->SQL->Add(S);
Query->Open();
Edit6->Items->Clear();
if(!Query->IsEmpty())
{
while(!Query->Eof)
{
Edit6->Items->Add(Query->FieldByName("sjnr")->AsString);
Query->Next();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::bt_resetClick(TObject *Sender)
{
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
Edit4->Text="";
Edit5->Text="";
Edit6->Text="";
Edit7->Text="";
Edit8->Text="";
Edit9->Text="";
DTP1->Date=Date();
DTP2->Date=Date();
DTP3->Date=Date();
DTP4->Date=Date();
DTP1->Checked=false;
DTP2->Enabled=false;
DTP3->Checked=false;
DTP4->Enabled=false;
seekQuery->Close();
bt_print->Enabled=false;
Edit1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::bt_seekClick(TObject *Sender)
{
AnsiString S="";
if(Edit1->Text!="")
S=" bh like '%"+Edit1->Text+"%'";
if(Edit2->Text!="")
if(S!="")
S= S+" and xm like '%"+Edit2->Text+"%'";
else
S=" xm like '%"+Edit2->Text+"%'";
if(Edit3->Text!="")
if(S!="")
S= S+" and xb like '%"+Edit3->Text+"%'";
else
S=" xb like '%"+Edit3->Text+"%'";
if(Edit4->Text!="")
if(S!="")
S= S+" and xl like '%"+Edit4->Text+"%'";
else
S=" xl like '%"+ Edit4->Text+"%'";
if(Edit5->Text!="")
if(S!="")
S= S+" and lsbm like '%"+Edit5->Text+"%'";
else
S=" lsbm like '%"+Edit5->Text+"%'";
if(Edit6->Text!="")
if(S!="")
S= S+" and zw like '%"+Edit6->Text+"%'";
else
S=" zw like '%"+Edit6->Text+"%'";
if(Edit7->Text!="")
if(S!="")
S= S+" and lxdh like '%"+Edit7->Text+"%'";
else
S=" lxdh like '%"+Edit7->Text+"%'";
if(Edit8->Text!="")
if(S!="")
S= S+" and dz like '%"+Edit8->Text+"%'";
else
S=" dz like '%"+Edit8->Text+"%'";
if(Edit9->Text!="")
if(S!="")
S= S+" and email like '%"+Edit9->Text+"%'";
else
S=" email like '%"+Edit9->Text+"%'";
if(DTP1->Checked)
{
if(S!="")
S=S+" and csrq Between #"+DateToStr(DTP1->Date)+"# and #"+DateToStr(DTP2->Date)+"#";
else
S=" csrq Between #"+DateToStr(DTP1->Date)+"# and #"+DateToStr(DTP2->Date)+"#";
}
if(DTP3->Checked)
{
if(S!="")
S=S+" and rzrq Between #"+DateToStr(DTP3->Date)+"# and #"+DateToStr(DTP4->Date)+"#";
else
S=" rzrq Between #"+DateToStr(DTP3->Date)+"# and #"+DateToStr(DTP4->Date)+"#";
}
if(S!="")
S="select * from stufff where"+S+" order by bh";
else
S="select * from stufff order by bh";
seekQuery->Close();
seekQuery->SQL->Clear();
seekQuery->SQL->Add(S);
seekQuery->Open();
if(seekQuery->IsEmpty())
bt_print->Enabled=false;
else
bt_print->Enabled=true;
bt_export->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::bt_exitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::DTP1Click(TObject *Sender)
{
if(DTP1->Checked)
DTP2->Enabled=true;
else
DTP2->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::DTP3Click(TObject *Sender)
{
if(DTP3->Checked)
DTP4->Enabled=true;
else
DTP4->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::seekQueryAfterScroll(TDataSet *DataSet)
{
if(!seekQuery->IsEmpty())
{
Edit1->Text=seekQuery->FieldByName("bh")->AsString;
Edit2->Text=seekQuery->FieldByName("xm")->AsString;
Edit3->Text=seekQuery->FieldByName("xb")->AsString;
Edit4->Text=seekQuery->FieldByName("xl")->AsString;
Edit5->Text=seekQuery->FieldByName("lsbm")->AsString;
Edit6->Text=seekQuery->FieldByName("zw")->AsString;
Edit7->Text=seekQuery->FieldByName("lxdh")->AsString;
Edit8->Text=seekQuery->FieldByName("dz")->AsString;
Edit9->Text=seekQuery->FieldByName("email")->AsString;
DTP1->DateTime=seekQuery->FieldByName("csrq")->AsDateTime;
DTP3->DateTime=seekQuery->FieldByName("rzrq")->AsDateTime;
DTP1->Checked=false;
DTP2->Enabled=false;
DTP3->Checked=false;
DTP4->Enabled=false;
}
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::bt_exportClick(TObject *Sender)
{
Fm_employeerep->QuickRep1->Preview();
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::bt_printClick(TObject *Sender)
{
SaveDialog1->Filter="*.xls|*.xls";
if(SaveDialog1->Execute())
{
if(SaveDialog1->FileName!="")
{
if(SaveDialog1->FileName.SubString(SaveDialog1->FileName.Length()-3,4)!=".xls")
SaveDialog1->FileName=SaveDialog1->FileName+".xls";
DBGridToExcel(placeDBG, SaveDialog1->FileName.c_str());
}
}
}
//---------------------------------------------------------------------------
void __fastcall TFm_employeeseek::DBGridToExcel(TDBGrid *dbg, String strXlsFile)
{
Variant vExcelApp, vSheet;
try
{
vExcelApp = Variant::CreateObject("Excel.Application");
}
catch(...)
{
MessageBox(0, "启动 Excel 出错, 可能是没有安装Excel.","DBGridToExcel", MB_OK | MB_ICONERROR);
return;
}
// 隐藏Excel界面
vExcelApp.OlePropertySet("Visible", false);
// 新建一个工作表
vExcelApp.OlePropertyGet("Workbooks").OleFunction("Add",1);
// 操作这个工作表
vSheet = vExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets",1);
// 设置Excel文档的字体
vSheet.OleProcedure("Select");
vSheet.OlePropertyGet("Cells").OleProcedure("Select");
vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Size", dbg->Font->Size);
vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Name", dbg->Font->Name.c_str());
vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("FontStyle", "常规");
vExcelApp.OlePropertyGet("Selection").OlePropertySet("NumberFormatLocal", "@");
vSheet.OlePropertyGet("Cells",1,1).OleProcedure("Select");
// 表格的行数
int nRowCount(dbg->DataSource->DataSet->RecordCount+1);
nRowCount = nRowCount < 2? 2: nRowCount;
// 表格的列数
int nColCount(dbg->Columns->Count);
nColCount = nColCount < 1? 1: nColCount;
// 设置单元格的宽度
for(int i=0;i<nColCount;i++)
{
int nColWidth = dbg->Columns->Items[i]->Width;
vExcelApp.OlePropertyGet("Columns",i+1).OlePropertySet("ColumnWidth", nColWidth/7);
}
// 将列名写入Excel表格
for(int j=0;j<dbg->Columns->Count;j++)
{
// 标题行的行高
vExcelApp.OlePropertyGet("Rows",1).OlePropertySet("RowHeight",16);
// 写入标题
vSheet.OlePropertyGet("Cells",1,j+1).OlePropertySet("Value",dbg->Columns->Items[j]->Title->Caption.c_str());
}
// 将DBGrid中的数据写入Excel表格
dbg->DataSource->DataSet->First();
for(int i=0; i<nRowCount-1; i++)
{
// 设置数据行的行高
vExcelApp.OlePropertyGet("Rows",i+2).OlePropertySet("RowHeight", 16);
// 写入某行的每列数据
for(int j=0; j<dbg->Columns->Count; j++)
vExcelApp.Exec(PropertyGet("Cells")<<i+2<<j+1).Exec(PropertySet("Value")<<dbg->DataSource->DataSet->FieldByName(dbg->Columns->Items[j]->FieldName)->AsString);
dbg->DataSource->DataSet->Next();
}
// 保存Excel文档并退出
vExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs", strXlsFile.c_str());
vExcelApp.OleFunction("Quit");
vSheet = Unassigned;
vExcelApp = Unassigned;
}
void __fastcall TFm_employeeseek::placeDBGTitleClick(TColumn *Column)
{
AnsiString str; //保存字段名
AnsiString caption; //保存DBGrid的标题
str= Column->FieldName;
for (int i=0;i<placeDBG->Columns->Count-1;i++)
{
caption=placeDBG->Columns->Items[i]->Title->Caption;
if (placeDBG->Columns->Items[i]->FieldName==str)
{
if(caption.SubString(1,2)=="▲")
{
//将标题前的▲和▼去掉
caption=caption.SubString(3,caption.Length()-2);
//在标题前加上▼
placeDBG->Columns->Items[i]->Title->Caption = "▼"+caption;
seekQuery->Sort=Column->FieldName+" DESC";
}
else
{
if(caption.SubString(1,2)=="▼")
{
caption=caption.SubString(3,caption.Length()-2);
placeDBG->Columns->Items[i]->Title->Caption = "▲"+caption;
seekQuery->Sort=Column->FieldName+" ASC";
}
else //2,还有第三种情况:首次点击某列,前面既不是"▲"也不是"▼"
{
placeDBG->Columns->Items[i]->Title->Caption = "▼"+caption;
seekQuery->Sort=Column->FieldName+" DESC";
}
}
}
else
{
//清除未点击的标题的▲和▼
if(caption.SubString(1,2)=="▲"||caption.SubString(1,2)=="▼")
placeDBG->Columns->Items[i]->Title->Caption = caption.SubString(3,caption.Length()-2);
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -