⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qrycenter.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------
#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;
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmQryCenter::GetFieldValue(int FieldIndex)
{
    AnsiString S;
    S = ReadFieldValue(comServer,FieldIndex);
    return(S);
}
//---------------------------------------------------------------------------

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=NewResultSet();
     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=NewResultSet();
     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(fiQueryType);
        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(fiQueryCode) + ")" +GetFieldValue(fiQueryName));
        TempNode->StateIndex = 1;
        TempNode->SelectedIndex = 1;
        TempNode->Text="(" + GetFieldValue(fiQueryCode) + ")" + GetFieldValue(fiQueryName);
        comServer->MoveNext();
     }
*/
}

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

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

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

    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)
    : TRecBaseForm(Owner,euSdQuery,"")
{
    InitParameter();
    FillGridWithData();
    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=NewResultSet();
 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=NewResultSet();
    if(lvwQuery->Selected==NULL)
     return;
    m = lvwQuery->Selected->Caption;
    comServer->LocateByKey(WideString(m));
    if (comServer->Eof == 0)
    {
     sQueryCode=GetFieldValue(fiQueryCode);
     sQueryFormName=GetFieldValue(fiQueryFormName);
     sQueryFormID=GetFieldValue(fiQueryFormID);
     sQueryName=GetFieldValue(fiQueryName);
     sSQL=" select modulelib from sdmodule where modulecode='"+sQueryFormID+"'";
     RsQuery->Open(sSQL,"");
     if(RsQuery->RecordCount <= 0)
      return;
     iQueryLib=StrToInt(RsQuery->FieldByName("modulelib"));
     g_ClientComm->ShowForm(sQueryFormID);
     RsQuery->Close();
     sSQL=" EXEC sdQuery_writeback '"+sQueryCode+"',"+pv_iCurCount;
     RsQuery->Execute(sSQL);
    }
    delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQryCenter::tvQueryChange(TObject *Sender,
      TTreeNode *Node)
{
    TComResultSet *RsQuery=NewResultSet();
    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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -