glbmquery.cpp

来自「科思ERP部分源码及控件」· C++ 代码 · 共 736 行 · 第 1/3 页

CPP
736
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "GlbmQuery.h"
#include "GlbmQF.h"
#include "Pzh.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma link "KSAdvReport"
#pragma resource "*.dfm"

TfrmGlbmQuery *frmGlbmQuery;
TfrmGlbmQF *GlbmQFfrm;
TfrmPzh *GlbmPzh;
//---------------------------------------------------------------------------
__fastcall TfrmGlbmQuery::TfrmGlbmQuery(TComponent* Owner)
   : TQueryBaseForm(Owner)
{
    sGlbSign=0;
    FCancelQuery=false;
    RstGlkm=NULL;
    labMemory->Caption="";
    QueryGrid=sgGlbmQuery;
}
//---------------------------------------------------------------------------
__fastcall TfrmGlbmQuery::TfrmGlbmQuery(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
   : TQueryBaseForm(Owner, chWnd, MidCode, WhereStr)
{
    sGlbSign=0;
    FCancelQuery=false;
    RstGlkm=NULL;
    labMemory->Caption="";
    QueryGrid=sgGlbmQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::InitSDGridGlbQueryW()
{
   sgGlbmQueryW->Cells[0][0]="发生日期"; sgGlbmQueryW->Cells[0][1]="发生日期";
   sgGlbmQueryW->Cells[1][0]="类别"; sgGlbmQueryW->Cells[1][1]="类别";
   sgGlbmQueryW->Cells[2][0]="凭证编号"; sgGlbmQueryW->Cells[2][1]="凭证编号";
   sgGlbmQueryW->Cells[3][0]="摘要"; sgGlbmQueryW->Cells[3][1]="摘要";
   sgGlbmQueryW->Cells[4][0]="科目资料"; sgGlbmQueryW->Cells[4][1]="科目资料";


   sgGlbmQueryW->Cells[5][0]="借方发生"; sgGlbmQueryW->Cells[5][1]="原币金额";
   sgGlbmQueryW->Cells[6][0]="借方发生"; sgGlbmQueryW->Cells[6][1]="本币金额";

   sgGlbmQueryW->Cells[7][0]="贷方发生"; sgGlbmQueryW->Cells[7][1]="原币金额";
   sgGlbmQueryW->Cells[8][0]="贷方发生"; sgGlbmQueryW->Cells[8][1]="本币金额";

   sgGlbmQueryW->Cells[9][0]="余额"; sgGlbmQueryW->Cells[9][1]="";
   sgGlbmQueryW->Cells[10][0]="余额"; sgGlbmQueryW->Cells[10][1]="原币金额";
   sgGlbmQueryW->Cells[11][0]="余额"; sgGlbmQueryW->Cells[11][1]="本币金额";
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::InitSdForm(AnsiString tCurrency)
{
    if(tCurrency==g_sdCurrencyCode || FCancelQuery)
    {
      sgGlbmQuery->Visible=true;
      sgGlbmQueryW->Visible=false;
      sgGlbmQuery->Align=alClient;
    }
    else
    {
      InitSDGridGlbQueryW();
      sgGlbmQuery->Visible=false;
      sgGlbmQueryW->Visible=true;
      sgGlbmQueryW->Align=alClient;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlbmQuery::tbQueryClick(TObject *Sender)
{
    if(!ShowQueryWindow())
      return;
    try
    {
      StartWaitForm("正在查询,请稍候...");
      if(sGlbSign!=1)
        FillRstGlkmWithData();
      if(FMCurrencyCode==g_sdCurrencyCode)
        FillGridWithData();
      else
        FillGridWithDataW();
    }
    __finally
    {
      EndWaitForm();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::FillRstGlkmWithData()
{
    AnsiString tSQL;
    RstGlkm=new  TComResultSet(Handle,g_ClientHandle);
    if(FGlbSQLFilStr!="")
    {
      tSQL="select GlbFmonth,GlbGlkm,CurrencyName=IsNULL(CurrencyName,'') from sdGlb,sdCurrency";
      tSQL+=" where GlbCurrency*=CurrencyCode and "+ FGlbSQLFilStr+" order by GlbFmonth,GlbGlkm,GlbCurrency";
    }
    else
    {
      tSQL="select GlbFmonth,GlbGlkm,CurrencyName=IsNULL(CurrencyName,'') from sdGlb,sdCurrency";
      tSQL+="where GlbCurrency*=CurrencyCode order by GlbFmonth,GlbGlkm,GlbCurrency";
    }
    RstGlkm->Open(tSQL,"GlbGlkm");
    if(RstGlkm->RecordCount==0)
    {
      sgGlbmQuery->RowCount=2;
      throw Exception("当前查询条件下的帐目不存在!");
    }
    else
      RstGlkm->MoveFirst();
}
//---------------------------------------------------------------------------

bool __fastcall TfrmGlbmQuery::ShowQueryWindow()
{
    if(sGlbSign==1)
    {
      InitSdForm(FMCurrencyCode);
      return true;
    }
    GlbmQFfrm=new TfrmGlbmQF(this);
    GlbmQFfrm->ShowModal();
    //返回参数
    FCancelQuery=GlbmQFfrm->CancelQuery;
    FGlbSQLFilStr=GlbmQFfrm->CreateGlbSQLString;
    FPzhSQLFilStr=GlbmQFfrm->CreatePzhSQLString;
    FMfcmonthInfo=GlbmQFfrm->FmonthInfo;
    FMCurrencyCode=GlbmQFfrm->CurrencyCode;
    FMcurrencyInfo=GlbmQFfrm->CurrencyInfo;
    //初始化Form
    InitSdForm(FMCurrencyCode);
    if(FCancelQuery==true)
    {
      delete GlbmQFfrm;
      return false;
    }
    delete GlbmQFfrm;
    return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::ClearControl(bool BringToNext)
{
    return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::GetDataFromComObject()
{
    return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::WaitUserInput()
{
    return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::RefreshGridData(int mAction)
{
    return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::DisplayBill()
{
    return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::GetBill(AnsiString BillID)
{
    return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::tbRefreshClick(TObject *Sender)
{
    if(sSQL=="")
      return;
    FillGridWithData();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmGlbmQuery::GetHeadQueryStr()
{
    AnsiString Selectstr,Fromstr,Wherestr,Orderstr;
    Selectstr="select PzhDate,PzhFvct,PzhCode,NoteBookText=IsNULL(NoteBookText,''),PzdDir,PzdGlkm,GlkmName,";
    Selectstr+="PzdAmt,PzdWbAmt,PzdQty,GlkmDir";
    Fromstr=" from sdPzh,sdPzd,sdGlkm,sdNoteBook";

    if(FPzhSQLFilStr=="")
    {
       if(sGlbSign==1)
       {
         Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdGlkm=GlkmCode and PzhPost=1 and PzhFmonth='"+FGlbmFmonth+"'";
         Wherestr+=" And PzdGlkm Like '"+FGlbmGlkm+"%'";
         Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode and PzdGlkm Like '"+FGlbmGlkm+"%')";
       }
       else
       {
         Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdGlkm=GlkmCode and PzhPost=1 and PzhFmonth='"+RstGlkm->FieldByName("GlbFmonth")+"'";
         Wherestr+=" And PzdGlkm Like '"+RstGlkm->FieldByName("GlbGlkm")+"%'";
         Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode and PzdGlkm Like '"+RstGlkm->FieldByName("GlbGlkm")+"%')";
       }
    }
    else
    {
       if(sGlbSign==1)
       {
         Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdGlkm=GlkmCode and PzhPost=1 and PzhFmonth='"+FGlbmFmonth+"'";
         Wherestr+=" And PzdGlkm Like '"+FGlbmGlkm+"%'";
         Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode and PzdGlkm Like '"+FGlbmGlkm+"%')";
       }
       else
       {
         Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdGlkm=GlkmCode and PzhPost=1 and PzhFmonth='"+RstGlkm->FieldByName("GlbFmonth")+"'";
         Wherestr+=" And PzdGlkm Like '"+RstGlkm->FieldByName("GlbGlkm")+"%'";
         Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode and PzdGlkm Like '"+RstGlkm->FieldByName("GlbGlkm")+"%')";
       }
       Wherestr=Wherestr+" And "+FPzhSQLFilStr;
    }
    Orderstr=" order by PzhDate,PzdGlkm";
    sSQL=Selectstr+Fromstr+Wherestr+Orderstr;
    return(sSQL);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmGlbmQuery::GetSpace(int iNum)
{
    AnsiString strSpace;
    for(int i=1;i<iNum;i++)
      strSpace=strSpace+AnsiString(" ");
    return strSpace;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQuery::FillGridWithData()
{
    TComResultSet *RsQuery;
    AnsiString ItemStr,sSql;
    sSql=GetHeadQueryStr();  //取Head查询的SQL语句
    if(sSql=="")
      return;
    sgGlbmQuery->RowCount=1;
    RecentBillCode="";

    RsQuery=new  TComResultSet(Handle,g_ClientHandle);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?