📄 testquery.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "TestQuery.h"
#include "RptTempleth.h"
#include "QuRpt.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmTestQuery *frmTestQuery;
//---------------------------------------------------------------------------
__fastcall TfrmTestQuery::TfrmTestQuery(TComponent* Owner)
: TQueryBaseForm(Owner)
{
FilterStr="";
sSQL="";
}
//---------------------------------------------------------------------------
bool __fastcall TfrmTestQuery::ShowQueryWindow()
{
TfrmQuRpt *FQuery=new TfrmQuRpt(this,RptTemplet);
FQuery->ShowModal();
if(FQuery->CancelQuery)
return false;
FilterStr=FQuery->CreateSqlString;
delete FQuery;
return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::ClearControl(bool BringToNext)
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::GetDataFromComObject()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::WaitUserInput()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::RefreshGridData(int mAction)
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::DisplayBill()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::GetBill(AnsiString BillID)
{
return;
}
//---------------------------------------------------------------------------
//获取查询语句
AnsiString __fastcall TfrmTestQuery::GetQueryStr()
{
AnsiString Selectstr,Fromstr,Wherestr,Orderstr,Groupstr;
Selectstr ="Select distinct ";
for(int i=0;i<frmRptTempleth->comServer->ItemCount;i++)
{
frmRptTempleth->comServer->LocateItemByIndex(i);
if(frmRptTempleth->GetDetailValue(fiRptTempletdFlg)=="1") //是构造
Selectstr=Selectstr+frmRptTempleth->GetDetailValue(fiRptTempletdField)+"=("+frmRptTempleth->GetDetailValue(fiRptTempletdExpr)+"),";
else
Selectstr=Selectstr+frmRptTempleth->GetDetailValue(fiRptTempletdField)+",";
}
Selectstr=Selectstr.SubString(1,Selectstr.Length()-1)+" from "+frmRptTempleth->GetHeadValue(fiRptTemplethView);
if(GroupField.IsEmpty()) //分组
Groupstr="";
else
Groupstr=" Group by "+GroupField;
if(FilterStr=="") //过滤
Wherestr="";
else
Wherestr=" where "+FilterStr;
if(SortField.IsEmpty()) //排序
Orderstr="";
else
Orderstr=" order by "+SortField+" DESC";
sSQL=Selectstr+Wherestr+Groupstr+Orderstr;
return(sSQL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::FillGridWithData()
{
AnsiString ItemStr,sSql;
//获取查询语句
sSql=GetQueryStr();
SQLText->Text=sSql;
if(sSql=="")
return;
TComResultSet *RsQuery;
sgTest->RowCount=1;
RsQuery=NewResultSet();
RsQuery->Open((sSql),(""));
sgTest->RowCount=1;
sgTest->ColCount=1;
for(int i=0;i<frmRptTempleth->comServer->ItemCount;i++) //创建标题和列数
{
sgTest->ColCount++;
frmRptTempleth->comServer->LocateItemByIndex(i);
sgTest->Columns->Items[sgTest->ColCount-1]->TitleString=
frmRptTempleth->GetDetailValue(fiRptTempletdName);
sgTest->Columns->Items[sgTest->ColCount-1]->ColumnFont->Color=clNavy;
sgTest->ColWidths[sgTest->ColCount-1]=frmRptTempleth->GetDetailValue(fiRptTempletdWidth).ToInt()*6;
}
RsQuery->MoveFirst();
while( RsQuery->Eof == 0)
{
ItemStr="\t";
for(int i=0;i<frmRptTempleth->comServer->ItemCount;i++)
{
frmRptTempleth->comServer->LocateItemByIndex(i);
ItemStr=ItemStr+RsQuery->FieldByName(frmRptTempleth->GetDetailValue(fiRptTempletdField))+"\t";
}
ItemStr=ItemStr.SubString(1,ItemStr.Length()-1);
sgTest->AddItem(ItemStr);
RsQuery->MoveNext();
}
sgTest->FixedCols=4;
RsQuery->Close();
delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::muFirstClick(TObject *Sender)
{
if(sgTest->RowCount>1)
sgTest->Row=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::muPreviousClick(TObject *Sender)
{
if(sgTest->Row>1)
sgTest->Row--;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::muNextClick(TObject *Sender)
{
if(sgTest->Row<sgTest->RowCount-1)
sgTest->Row++;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::muLastClick(TObject *Sender)
{
sgTest->Row=sgTest->RowCount-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::tbQueryClick(TObject *Sender)
{
if(!ShowQueryWindow())
return;
try{
StartWaitForm("正在查询,请稍候...");
FillGridWithData();
}
__finally
{
EndWaitForm();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::tbRefreshClick(TObject *Sender)
{
if(sSQL=="")
return;
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmTestQuery::SetSortField(AnsiString value)
{
if(FSortField != value) {
FSortField = value;
}
}
AnsiString __fastcall TfrmTestQuery::GetSortField()
{
return FSortField;
}
void __fastcall TfrmTestQuery::SetGroupField(AnsiString value)
{
if(FGroupField != value) {
FGroupField = value;
}
}
AnsiString __fastcall TfrmTestQuery::GetGroupField()
{
return FGroupField;
}
void __fastcall TfrmTestQuery::SetRptTemplet(AnsiString value)
{
if(FRptTemplet != value) {
FRptTemplet = value;
}
}
AnsiString __fastcall TfrmTestQuery::GetRptTemplet()
{
return FRptTemplet;
}
void __fastcall TfrmTestQuery::FormClose(TObject *Sender,
TCloseAction &Action)
{
//..
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -