glb_dlz.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 408 行
CPP
408 行
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Glb_DLZ.h"
#include "Pzh.h"
#include "Glb_DlzFil.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma link "KSAdvReport"
#pragma resource "*.dfm"
TfrmGlb_DLZ *frmGlb_DLZ;
//---------------------------------------------------------------------------
__fastcall TfrmGlb_DLZ::TfrmGlb_DLZ(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TQueryBaseForm(Owner,chWnd,MidCode,WhereStr)
{
QueryGrid=sgGlb_Dlz;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::InitSDGridControl()
{
int iColCount;
TComResultSet *RstQuery;
RstQuery=new TComResultSet(Handle,g_ClientHandle);
RstQuery->Open("select GlkmCode,GlkmName from sdGlkm where GlkmCode Like '"+FGlkmCodeDlz+"%' and GlkmMx=1 order by GlkmCode","GlkmCode");
iColCount=RstQuery->RecordCount;
if(iColCount==0)
throw Exception("多栏帐科目:'"+FGlkmCodeDlz+"'没有定义明细资料");
else
sgGlb_Dlz->ColCount=iColCount+6;
RstQuery->MoveFirst();
int iCol=0;
while(RstQuery->Eof==0)
{
iCol++;
sgGlb_Dlz->Cells[5+iCol][0]=RstQuery->FieldByName("GlkmName");
RstQuery->MoveNext();
}
RstQuery->Close();
delete RstQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::tbQueryClick(TObject *Sender)
{
if(!ShowQueryWindow())
return;
try
{
StartWaitForm("正在查询,请稍候...");
InitSDGridControl();
FillGridWithData();
}
__finally
{
EndWaitForm();
}
}
//---------------------------------------------------------------------------
bool __fastcall TfrmGlb_DLZ::ShowQueryWindow()
{
TfrmGlb_DlzFil *frmGlb_DlzFil;
frmGlb_DlzFil=new TfrmGlb_DlzFil(this);
frmGlb_DlzFil->ShowModal();
if(frmGlb_DlzFil->CancelQuery)
{
delete frmGlb_DlzFil;
return false;
}
PzhFilterStr=frmGlb_DlzFil->CreatePzhSQLString;
GlbFilterStr=frmGlb_DlzFil->CreateGlbSQLString;
OrderStr=frmGlb_DlzFil->OrderString;
FGlkmCodeDlz=frmGlb_DlzFil->GlkmCodeDlz;
delete frmGlb_DlzFil;
return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::ClearControl(bool BringToNext)
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::GetDataFromComObject()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::WaitUserInput()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::RefreshGridData(int mAction)
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::DisplayBill()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::GetBill(AnsiString BillID)
{
return;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmGlb_DLZ::GetHeadQueryStr()
{
AnsiString Selectstr,Fromstr,Wherestr;
Selectstr="select PzhDate,PzhFvct,PzhCode,PzdZy=isnull((select NoteBookText from sdNoteBook where NoteBookCode=PzdZy),''),";
Fromstr=" PzdGlkm,GlkmName,PzdDir,PzdAmt,PzdWbAmt from sdPzh,sdPzd,sdGlkm";
if(PzhFilterStr=="")
Wherestr=" where PzhCode=PzdCode and PzdGlkm=GlkmCode ";
else
Wherestr=" where PzhCode=PzdCode and PzdGlkm=GlkmCode and " + PzhFilterStr;
sSQL=Selectstr+Fromstr+Wherestr+OrderStr;
return(sSQL);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmGlb_DLZ::GetSpace(int iNum)
{
AnsiString strSpace;
for(int i=1;i<iNum;i++)
strSpace=strSpace+AnsiString(" ");
return strSpace;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::FillGridWithData()
{
TComResultSet *RstPzh;
TComResultSet *RstGlb;
TComResultSet *RstGlkm;
TComResultSet *RstMxTotal;
AnsiString ItemStr,ItemStr1,ItemStr2,sSql;
double m_Amt=0;
sSql=GetHeadQueryStr(); //取Head查询的SQL语句
if(sSql=="")
return;
sgGlb_Dlz->RowCount=1;
RstGlkm=new TComResultSet(Handle,g_ClientHandle);
RstGlkm->Open("select GlkmCode,GlkmName from sdGlkm where GlkmCode like '"+FGlkmCodeDlz+"%' and GlkmMx=1 order by GlkmCode","");
RstGlb=new TComResultSet(Handle,g_ClientHandle);
AnsiString SqlStr;
SqlStr="select GlbGlkm,GlbMx,GlbDir,GlbBopAmt,GlbDopAmt,GlbCopAmt,GlbDoyAmt,GlbCoyAmt from sdGlb where GlbGlkm ='"+FGlkmCodeDlz+"'";
SqlStr+=" union select GlbGlkm,GlbMx,GlbDir,GlbBopAmt,GlbDopAmt,GlbCopAmt,GlbDoyAmt,GlbCoyAmt from sdGlb where GlbGlkm like '"+FGlkmCodeDlz+"%' and GlbMx=1";
SqlStr+=" order by GlbGlkm";
RstGlb->Open(SqlStr,"GlbGlkm");
RstGlb->MoveFirst();
ItemStr =AnsiString("")+"\t"+AnsiString("")+"\t"+"期 初 余 额"+"\t"+""+"\t"+"";
//期初余额
while(!RstGlb->Eof)
{
if(RstGlb->FieldByName("GlbMx")==0)
{
if(RstGlb->FieldByName("GlbBopAmt")==0)
if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
{
m_Amt=0;
ItemStr=ItemStr+"\t"+"平"+GetSpace(2)+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
}
else
ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
else
{
if(RstGlb->FieldByName("GlbDir")==1)
if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
{
m_Amt=RstGlb->FieldByName("GlbBopAmt").ToDouble();
ItemStr=ItemStr+"\t"+"借"+GetSpace(2)+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
}
else
ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
else
if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
{
m_Amt=RstGlb->FieldByName("GlbBopAmt").ToDouble();
ItemStr=ItemStr+"\t"+"贷"+GetSpace(2)+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
}
else
ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
}
}
else
{
if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
throw Exception("明细科目:'"+FGlkmCodeDlz+"'不能定义为多栏帐");
else
ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
}
RstGlb->MoveNext();
}
sgGlb_Dlz->AddItem(ItemStr);
//凭证明细
RstPzh=new TComResultSet(Handle,g_ClientHandle);
RstPzh->Open(sSql,"");
RstPzh->MoveFirst();
ItemStr="";
while(RstPzh->Eof == 0)
{
if(RstPzh->FieldByName("PzdDir")==1)
{
ItemStr=RstPzh->FieldByName("PzhDate")+"\t"+RstPzh->FieldByName("PzhFvct")+GetSpace(2)+
RstPzh->FieldByName("PzhCode")+"\t"+RstPzh->FieldByName("PzdZy")+"\t"+
FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble())+"\t"+AnsiString("");
if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="平")
{
m_Amt=RstPzh->FieldByName("PzdAmt").ToDouble();
ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
}
else
{
if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="借")
{
m_Amt=m_Amt+ RstPzh->FieldByName("PzdAmt").ToDouble();
ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
}
else
{
m_Amt=m_Amt - RstPzh->FieldByName("PzdAmt").ToDouble();
if(m_Amt==0)
ItemStr=ItemStr+"\t"+ "平"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
else
{
if(m_Amt>0)
ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
else
ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",-m_Amt);
}
}
}
}
else
{
ItemStr=RstPzh->FieldByName("PzhDate")+"\t"+RstPzh->FieldByName("PzhFvct")+GetSpace(2)+
RstPzh->FieldByName("PzhCode")+"\t"+RstPzh->FieldByName("PzdZy")+"\t"+
AnsiString("")+"\t"+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="平")
{
m_Amt=RstPzh->FieldByName("PzdAmt").ToDouble();
ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
}
else
{
if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="借")
{
m_Amt=m_Amt- RstPzh->FieldByName("PzdAmt").ToDouble();
if(m_Amt==0)
ItemStr=ItemStr+"\t"+ "平"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
else
{
if(m_Amt>0)
ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
else
ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",-m_Amt);
}
}
else
{
m_Amt=m_Amt+ RstPzh->FieldByName("PzdAmt").ToDouble();
ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
}
}
}
RstGlkm->MoveFirst();
while(RstGlkm->Eof == 0)
{
if(RstPzh->FieldByName("PzdGlkm")==RstGlkm->FieldByName("GlkmCode"))
if(RstPzh->FieldByName("PzdDir")=="1")
ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
else
ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",-RstPzh->FieldByName("PzdAmt").ToDouble());
else
ItemStr=ItemStr+"\t"+AnsiString("");
RstGlkm->MoveNext();
}
sgGlb_Dlz->AddItem(ItemStr);
RstPzh->MoveNext();
}
//本期合计
AnsiString tempStr;
tempStr=sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1];
RstGlb->MoveFirst();
while(RstGlb->Eof==0)
{
if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
{
ItemStr1=AnsiString("")+"\t"+AnsiString("")+"\t"+"本 期 合 计"+"\t"+
FormatFloat("#,##0.00",RstGlb->FieldByName("GlbDopAmt").ToDouble())+"\t"+
FormatFloat("#,##0.00",RstGlb->FieldByName("GlbCopAmt").ToDouble())+"\t"+
tempStr;
ItemStr2=AnsiString("")+"\t"+AnsiString("")+"\t"+"本 年 累 计"+"\t"+
FormatFloat("#,##0.00",RstGlb->FieldByName("GlbDoyAmt").ToDouble())+"\t"+
FormatFloat("#,##0.00",RstGlb->FieldByName("GlbCoyAmt").ToDouble())+"\t"+
tempStr;
}
else
{
ItemStr1=ItemStr1+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbDopAmt").ToDouble()-RstGlb->FieldByName("GlbCopAmt").ToDouble());
ItemStr2=ItemStr2+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble()+RstGlb->FieldByName("GlbDoyAmt").ToDouble()-RstGlb->FieldByName("GlbCoyAmt").ToDouble());
}
RstGlb->MoveNext();
}
sgGlb_Dlz->AddItem(ItemStr1);
sgGlb_Dlz->AddItem(ItemStr2);
RstPzh->Close();
delete RstPzh;
RstGlb->Close();
delete RstGlb;
RstGlkm->Close();
delete RstGlkm;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::muFirstClick(TObject *Sender)
{
if(sgGlb_Dlz->RowCount > 1)
sgGlb_Dlz->Row=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::muNextClick(TObject *Sender)
{
if(sgGlb_Dlz->RowCount > 1 && sgGlb_Dlz->Row < sgGlb_Dlz->RowCount-1)
sgGlb_Dlz->Row=sgGlb_Dlz->Row+1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::muLastClick(TObject *Sender)
{
if(sgGlb_Dlz->RowCount > 1)
sgGlb_Dlz->Row=sgGlb_Dlz->RowCount-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::muPreviousClick(TObject *Sender)
{
if(sgGlb_Dlz->RowCount > 1 && sgGlb_Dlz->Row > 1)
sgGlb_Dlz->Row=sgGlb_Dlz->Row-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::tbRefreshClick(TObject *Sender)
{
if(sSQL=="")
return;
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::FormShow(TObject *Sender)
{
tbQueryClick(this);
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlb_DLZ::sgGlb_DlzDblClick(TObject *Sender)
{
int iRow;
int iPos;
AnsiString tPzhCode;
iRow=sgGlb_Dlz->Row;
tPzhCode= Trim(sgGlb_Dlz->Cells[1][iRow]);
iPos=tPzhCode.Pos(" ");
tPzhCode=tPzhCode.SubString(iPos+1,tPzhCode.Length()-iPos);
if(tPzhCode.IsEmpty())
return;
TfrmPzh *Glb_DlzPzh;
try
{
StartWaitForm("正在调阅凭证,请稍候...");
Glb_DlzPzh=new TfrmPzh(this,g_ClientHandle,"1100302","");
Glb_DlzPzh->comServer->FilterString="PzhCode='"+tPzhCode+"'";
Glb_DlzPzh->comServer->Query();
EndWaitForm();
Glb_DlzPzh->ShowModal();
}
catch (Exception &e)
{
delete Glb_DlzPzh;
throw Exception(e.Message);
}
delete Glb_DlzPzh;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?