qrycenter.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 355 行

CPP
355
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "QryCenter.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "RecBaseForm"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma resource "*.dfm"
#define ParaCurCount "11601"  //最近使用查询的个数参数代码
#define ParaTimes "11602"     //频繁使用查询的个数参数代码

TfrmQryCenter *frmQryCenter;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::ClearControl(bool BringToNext)
{
 return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::GetDataFromComObject()
{
    return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::SendDataToComObject()
{
    return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::WaitUserInput()
{
    return;
}

//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::RefreshGridData(int mAction)
{
    return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::FillTreeWithType()
{
    return;
/*
     TComResultSet *RsQuery=new  TComResultSet(Handle,g_ClientHandle);
     TTreeNode *TempNode[7],*TempNode2;
     int mLevel;
     AnsiString sSQL;

     tvQuery->Items->Clear();
     TempNode[0]=tvQuery->Items->Add(NULL,"最近使用的查询");
     sSQL="select QueryCode,QueryName from sdQuery ";
     sSQL=sSQL+" where QueryNearNo > 0 and QueryNearNo <="+IntToStr(pv_iCurCount);
     sSQL=sSQL+" order by QueryNearNo ";
     RsQuery->Open(sSQL,"");
     RsQuery->MoveFirst();
     while( RsQuery->Eof == 0 )
     {
        TempNode2=tvQuery->Items->AddChild(TempNode[0],"(" + ReadColumnValueByName(RsQuery,"QueryCode") + ")" +ReadColumnValueByName(RsQuery,"QueryName"));
        TempNode2->StateIndex = 1;
        TempNode2->Text= "(" + ReadColumnValueByName(RsQuery,"QueryCode") + ")"+ReadColumnValueByName(RsQuery,"QueryName");
        RsQuery->MoveNext();
     }
     RsQuery->Close();

     TempNode[0]=tvQuery->Items->Add(NULL,"频繁使用的查询");
     sSQL="select top "+IntToStr(pv_iTimes)+" QueryCode,QueryName from sdQuery ";
     sSQL=sSQL+"order by QueryTimes";
     RsQuery->Open(sSQL,"");
     RsQuery->MoveFirst();
     while( RsQuery->Eof == 0 )
     {
        TempNode2=tvQuery->Items->AddChild(TempNode[0],"(" + ReadColumnValueByName(RsQuery,"QueryCode") + ")" +ReadColumnValueByName(RsQuery,"QueryName"));
        TempNode2->StateIndex = 1;
        TempNode2->Text= "(" + ReadColumnValueByName(RsQuery,"QueryCode") + ")"+ReadColumnValueByName(RsQuery,"QueryName");
        RsQuery->MoveNext();
     }
     RsQuery->Close();

//     TempNode[0]=tvQuery->Items->Add(NULL,"所有查询");
     TempNode[0]=Null;
     RsQuery->Open(WideString("select QuTypeCode,QuTypeName,QuTypeLevel from sdQuType order by QuTypeCode,QuTypeLevel"),WideString(""));
     RsQuery->MoveFirst();
     while( RsQuery->Eof == 0 )
     {
        mLevel=ReadColumnValueByName(RsQuery,"QuTypeLevel").ToInt();
        TempNode[mLevel] = tvQuery->Items->AddChild(TempNode[mLevel-1],"(" + ReadColumnValueByName(RsQuery,"QuTypeCode") + ")" +ReadColumnValueByName(RsQuery,"QuTypeName"));
        TempNode[mLevel]->StateIndex = 0;
        TempNode[mLevel]->Text= "(" + ReadColumnValueByName(RsQuery,"QuTypeCode") + ")"+ReadColumnValueByName(RsQuery,"QuTypeName");
        RsQuery->MoveNext();
     }
     RsQuery->Close();
     if (tvQuery->Items->Count > 0)
         tvQuery->Items->Item[0]->Expand(false);
      delete RsQuery;
*/
}

//---------------------------------------------------------------------------
void __fastcall TfrmQryCenter::FillGridWithData()
{
     TComResultSet *RsQuery=new  TComResultSet(Handle,g_ClientHandle);
     TTreeNode *TempNode[7];
     int mLevel;
     AnsiString sSQL;

     tvQuery->Items->Clear();
     TempNode[0]=tvQuery->Items->Add(NULL,"最近使用的查询");
     TempNode[0]->StateIndex = 0;
     TempNode[0]=tvQuery->Items->Add(NULL,"频繁使用的查询");
     TempNode[0]->StateIndex = 1;

     RsQuery->Open("select QuTypeCode,QuTypeName,QuTypeLevel,QuTypeEnd from sdQuType order by QuTypeCode,QuTypeLevel","");
     RsQuery->MoveFirst();
     while( RsQuery->Eof == 0 )
     {
        mLevel=RsQuery->FieldByName("QuTypeLevel").ToInt();
        if(mLevel == 1)
         TempNode[mLevel] = tvQuery->Items->AddChild(NULL,"(" + RsQuery->FieldByName("QuTypeCode") + ")" +RsQuery->FieldByName("QuTypeName"));
        else
         TempNode[mLevel] = tvQuery->Items->AddChild(TempNode[mLevel-1],"(" + RsQuery->FieldByName("QuTypeCode") + ")" +RsQuery->FieldByName("QuTypeName"));
        if(RsQuery->FieldByName("QuTypeEnd")=="1")
         TempNode[mLevel]->StateIndex = 2;
        else
         TempNode[mLevel]->StateIndex = -1;
        TempNode[mLevel]->Text= "(" + RsQuery->FieldByName("QuTypeCode") + ")"+RsQuery->FieldByName("QuTypeName");
        RsQuery->MoveNext();
     }
     RsQuery->Close();
     if (tvQuery->Items->Count > 0)
         tvQuery->Items->Item[0]->Expand(false);
     delete RsQuery;
/*
     FillTreeWithType();
     TTreeNode *TempNode;
     comServer->MoveFirst();
     while (comServer->Eof == 0)
     {
        AnsiString s,m;
        s = GetFieldValue("QueryType");
        for(int i = 1 ; i < tvQuery->Items->Count ; i ++)
        {
         if(tvQuery->Items->Item[i]->StateIndex!=0)
          continue;
         m = tvQuery->Items->Item[i]->Text;
         m = m.SubString(2,m.AnsiPos(")")-2);
         if(s == m)
         {
          TempNode = tvQuery->Items->Item[i];
          break;
         }
        }

        TempNode= tvQuery->Items->AddChild(TempNode,"(" + GetFieldValue("QueryCode") + ")" +GetFieldValue(fiQueryName));
        TempNode->StateIndex = 1;
        TempNode->SelectedIndex = 1;
        TempNode->Text="(" + GetFieldValue("QueryCode") + ")" + GetFieldValue(fiQueryName);
        comServer->MoveNext();
     }
*/
}

//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::InitEditControl()
{
    return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::TreeViewLocation()
{
/*
    AnsiString s,m;
    s = GetFieldValue("QueryCode");

    for(int i = 1 ; i < tvQuery->Items->Count ; i ++)
    {
        m = tvQuery->Items->Item[i]->Text;
        m = m.SubString(2,m.AnsiPos(")")-2);
        if((tvQuery->Items->Item[i]->Text) == s)
        {
            tvQuery->Selected = tvQuery->Items->Item[i];
            break;
        }
    }
*/
}
//---------------------------------------------------------------------------

__fastcall TfrmQryCenter::TfrmQryCenter(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
    : TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
    InitParameter();
    FillGridWithData();
    comServer->Query();
    comServer->MoveFirst();
}

//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    TRecBaseForm::FormClose(Sender,Action);
}

//---------------------------------------------------------------------------
void __fastcall TfrmQryCenter::FormCreate(TObject *Sender)
{
//    FillGridWithData();
//    ClearControl(false);
//    comServer->MoveFirst();
}
//---------------------------------------------------------------------------

void __fastcall TfrmQryCenter::InitParameter()
{
     //从参数表sdparameter中获取最近使用和频繁使用的查询个数
     TComResultSet *pResultSet=new  TComResultSet(Handle,g_ClientHandle);
     AnsiString strSQL,strCode;
     strSQL=" select parametercode,parametervalue from sdparameter ";
     strSQL=strSQL+" where parametercode = '"+ParaCurCount+"' or parametercode = '"+ParaTimes+"'";
     pResultSet->Open(strSQL,"");
     pResultSet->MoveFirst();
     while(!pResultSet->Eof)
     {
          strCode=pResultSet->FieldByName("parametercode");
          if(strCode==ParaCurCount)
           pv_iCurCount=StrToIntDef(pResultSet->FieldByName("parametervalue"),10);  //默认值为10
          else
           pv_iTimes=StrToIntDef(pResultSet->FieldByName("parametervalue"),10);  //默认值为10
          pResultSet->MoveNext();
     }
     pResultSet->Close();
     delete pResultSet;
}
//---------------------------------------------------------------------------


void __fastcall TfrmQryCenter::lvwQueryDblClick(TObject *Sender)
{
    AnsiString m,sSQL;
    AnsiString sQueryFormName,sQueryFormID,sQueryName,sQueryCode;
    //int iQueryLib;
    TComResultSet *RsQuery=new  TComResultSet(Handle,g_ClientHandle);
    if(lvwQuery->Selected==NULL)
     return;
    m = lvwQuery->Selected->Caption;
    comServer->LocateByKey(WideString(m));
    if (comServer->Eof == 0)
    {
         sQueryCode=GetFieldValue("QueryCode");
         sQueryFormName=GetFieldValue("QueryFormName");
         sQueryFormID=GetFieldValue("QueryFormID");
         sQueryName=GetFieldValue("QueryName");       //modify 2003-02-25
         //sSQL=" select modulelib from sdmodule where modulecode='"+sQueryFormID+"'";
         sSQL=" select moduleFormCode from sdmodule where modulecode='"+sQueryFormID+"'";
         RsQuery->Open(sSQL,"");
         if(RsQuery->RecordCount <= 0)
          return;
         //iQueryLib=StrToInt(RsQuery->FieldByName("modulelib"));
    //     g_ClientComm->ShowForm(sQueryFormID);
         ShowClientForm(g_ClientHandle,sQueryFormID.ToInt(),"");
         RsQuery->Close();
         sSQL=" EXEC sdQuery_writeback '"+sQueryCode+"',"+pv_iCurCount;
         RsQuery->Execute(sSQL);
    }
    delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQryCenter::tvQueryChange(TObject *Sender,
      TTreeNode *Node)
{
    TComResultSet *RsQuery=new  TComResultSet(Handle,g_ClientHandle);
    AnsiString sSQL;
    TListItem  *ListItem;
    if(tvQuery->Selected==NULL)
     return;
    if(tvQuery->Selected->StateIndex == -1 )
     return;
    if(tvQuery->Selected->StateIndex == 0) //最近使用查询
    {
         lvwQuery->Items->Clear();
         sSQL="select QueryCode,QueryName,QueryDesc from sdQuery ";
         sSQL=sSQL+" where QueryNearNo > 0 and QueryNearNo <="+IntToStr(pv_iCurCount);
         sSQL=sSQL+" order by QueryNearNo ";
         RsQuery->Open(sSQL,"");
         RsQuery->MoveFirst();
         while( RsQuery->Eof == 0 )
         {
              ListItem = lvwQuery->Items->Add();
              ListItem->Caption = RsQuery->FieldByName("QueryCode");
              ListItem->SubItems->Add(RsQuery->FieldByName("QueryName"));
              ListItem->SubItems->Add(RsQuery->FieldByName("QueryDesc"));
              RsQuery->MoveNext();
         }
         RsQuery->Close();
         delete RsQuery;
         return;
    }
    if(tvQuery->Selected->StateIndex == 1) //频繁使用查询
    {
         lvwQuery->Items->Clear();
         sSQL="select top "+IntToStr(pv_iTimes)+" QueryCode,QueryName,QueryDesc from sdQuery ";
         sSQL=sSQL+"order by QueryTimes desc";
         RsQuery->Open(sSQL,"");
         RsQuery->MoveFirst();
         while( RsQuery->Eof == 0 )
         {
              ListItem = lvwQuery->Items->Add();
              ListItem->Caption = RsQuery->FieldByName("QueryCode");
              ListItem->SubItems->Add(RsQuery->FieldByName("QueryName"));
              ListItem->SubItems->Add(RsQuery->FieldByName("QueryDesc"));
              RsQuery->MoveNext();
         }
         RsQuery->Close();
         delete RsQuery;
         return;
    }
    if(tvQuery->Selected->StateIndex == 2) //分类码查询
    {
         lvwQuery->Items->Clear();
         AnsiString m = tvQuery->Selected->Text;
         m = m.SubString(2,m.AnsiPos(")")-2);
         sSQL="select QueryCode,QueryName,QueryDesc from sdQuery ";
         sSQL=sSQL+"where QueryType='"+m+"' ";
         sSQL=sSQL+"order by QueryCode ";
         RsQuery->Open(sSQL,"");
         RsQuery->MoveFirst();
         while( RsQuery->Eof == 0 )
         {
              ListItem = lvwQuery->Items->Add();
              ListItem->Caption = RsQuery->FieldByName("QueryCode");
              ListItem->SubItems->Add(RsQuery->FieldByName("QueryName"));
              ListItem->SubItems->Add(RsQuery->FieldByName("QueryDesc"));
              RsQuery->MoveNext();
         }
         RsQuery->Close();
         delete RsQuery;
    }
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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