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

📄 kscdset.h

📁 科思ERP部分源码及控件
💻 H
字号:
//---------------------------------------------------------------------------

#ifndef KSCDSetH
#define KSCDSetH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <adodb.hpp>
#include <db.hpp>
#include <ScktComp.hpp>
#include "container.h"
#include <stdio.h>
//---------------------------------------------------------------------------
class TKSCDSet : public TThread
{
private:
  HWND l_Handle;
  HWND l_AOwner;
  HWND l_Parent;
  TADOQuery *l_HeadDataSet;
  TADOQuery *l_ItemDataSet;
  TADOQuery *FQuery;
  AnsiString l_ServerDataSetHandle;
  AnsiString l_MidCode;
  TStringList *l_ClientBuffer;
  int l_OperateStatus;
  bool l_DataSetActive;
  int l_TimeOut;
  int l_ExecuteTime;

  int l_DataSetType;
  AnsiString l_HeadSQLStr;
  AnsiString l_ItemSQLStr;
  AnsiString l_HeadWhereStr;
  AnsiString l_ItemWhereStr;
  AnsiString l_HeadOrderStr;
  AnsiString l_ItemOrderStr;
  TStringList *l_HeadLinkFields;
  TStringList *l_ItemLinkFields;
  AnsiString l_HeadKeyFields;
  AnsiString l_ItemKeyFields;
  AnsiString l_HeadFileName;
  AnsiString l_ItemFileName;
  AnsiString l_HeadStructure;
  AnsiString l_ItemStructure;
  AnsiString l_ErrorMessage;
  TStringList *l_ItemEditStatus;
  TStringList *l_HeadDisplayName;
  TStringList *l_ItemDisplayName;

  AnsiString l_HeadValidFieldList;
  AnsiString l_ItemValidFieldList;
  AnsiString l_Range;
private:
  AnsiString __fastcall GetHeadSQLStr();
  void __fastcall SetHeadSQLStr(AnsiString value);
  AnsiString __fastcall GetItemSQLStr();
  void __fastcall SetItemSQLStr(AnsiString value);
  AnsiString __fastcall GetHeadWhereStr();
  void __fastcall SetHeadWhereStr(AnsiString value);
  AnsiString __fastcall GetItemWhereStr();
  void __fastcall SetItemWhereStr(AnsiString value);
  AnsiString __fastcall GetHeadOrderStr();
  void __fastcall SetHeadOrderStr(AnsiString value);
  AnsiString __fastcall GetItemOrderStr();
  void __fastcall SetItemOrderStr(AnsiString value);
  AnsiString __fastcall GetHeadKeyFields();
  void __fastcall SetHeadKeyFields(AnsiString value);
  AnsiString __fastcall GetItemKeyFields();
  void __fastcall SetItemKeyFields(AnsiString value);
  AnsiString __fastcall GetLinkFields();
  void __fastcall SetLinkFields(AnsiString value);
  AnsiString __fastcall GetHeadSort();
  void __fastcall SetHeadSort(AnsiString value);
  AnsiString __fastcall GetItemSort();
  void __fastcall SetItemSort(AnsiString value);
  AnsiString __fastcall GetFilter();
  void __fastcall SetFilter(AnsiString value);
  bool __fastcall GetFiltered();
  void __fastcall SetFiltered(bool value);
  TDataSetState __fastcall GetHeadStatus();
  TDataSetState __fastcall GetItemStatus();
  int __fastcall GetDataSetType();
  bool __fastcall GetBof();
  bool __fastcall GetEof();
  int __fastcall GetRecordCount();
  int __fastcall GetCurRecNo();
  int __fastcall GetHeadFieldCount();
  TFields *__fastcall GetHeadFields();
  bool __fastcall GetItemBof();
  bool __fastcall GetItemEof();
  int __fastcall GetItemCount();
  int __fastcall GetItemRecNo();
  int __fastcall GetItemFieldCount();
  TFields *__fastcall GetItemFields();
  AnsiString __fastcall GetHeadFieldName(int index);
  TFieldType __fastcall GetHeadFieldType(int index);
  int __fastcall GetHeadFieldSize(int index);
  AnsiString __fastcall GetItemFieldName(int index);
  TFieldType __fastcall GetItemFieldType(int index);
  int __fastcall GetItemFieldSize(int index);
  AnsiString __fastcall GetHeadValidFieldList();
  AnsiString __fastcall GetItemValidFieldList();

  AnsiString __fastcall BuildLinkStr();
  AnsiString __fastcall BuildLinkFields();
  void __fastcall ExtractLinkFields(AnsiString value);
  void __fastcall BuildDetailFilter();
  int __fastcall CheckFieldType(TField *Field);
  void __fastcall CheckResultStatus(int status);
  void __fastcall BuildItemStatus();
  void __fastcall SetDataSetDisplayName(TADOQuery *ds,TStringList *dn);
  AnsiString __fastcall BuildValidList(AnsiString value);

  void __fastcall PollingMessage(HWND hWnd);

public:
  __fastcall TKSCDSet(HWND AOwner,HWND AParent,AnsiString AMidCode);
  __fastcall ~TKSCDSet();

protected:
  void __fastcall CDSetTerminate(TObject *Sender);
  void __fastcall WndProc(TMessage &Message);
  void __fastcall Execute();
  void __fastcall AnalyzeStr();

  void __fastcall InitCDSet();
  void __fastcall FreeCDSet();
  void __fastcall InitCDSet(TKSStrData *stream);
  void __fastcall RecvOpen(TKSStrData *stream);
  void __fastcall RecvUpdate(TKSStrData *stream);
  void __fastcall RecvDelete(TKSStrData *stream);
  void __fastcall RecvDeleteItem(TKSStrData *stream);
  void __fastcall RecvCheck(TKSStrData *stream);
  void __fastcall RecvCloseOff(TKSStrData *stream);
  void __fastcall RecvRevoke(TKSStrData *stream);
  void __fastcall RecvTally(TKSStrData *stream);
  void __fastcall RecvCmdExec(TKSStrData *stream);
  void __fastcall RecvValidateData(TKSStrData *stream);
  void __fastcall RecvExecSQL(TKSStrData *stream);
  void __fastcall RecvErrorMessage(TKSStrData *stream);

public:
  void __fastcall Open();
  void __fastcall AddNew();
  void __fastcall Insert();
  void __fastcall Edit();
  void __fastcall Delete();
  void __fastcall Update();
  void __fastcall Cancel();
  void __fastcall AddItem();
  void __fastcall InserItem();
  void __fastcall EditItem();
  void __fastcall DeleteItem();
  void __fastcall UpdateItem();
  void __fastcall CancelItem();
  void __fastcall Close();
  void __fastcall MoveFirst();
  void __fastcall MoveLast();
  void __fastcall MoveNext();
  void __fastcall MovePrior();
  void __fastcall MoveTo(int Distance);

  void __fastcall ItemFirst();
  void __fastcall ItemLast();
  void __fastcall ItemPrior();
  void __fastcall ItemNext();
  void __fastcall ItemMoveTo(int Distance);

  bool __fastcall LocateHead(AnsiString KeyValues);
  bool __fastcall LocateItem(AnsiString KeyValues);
  TField *__fastcall FindMasterField(AnsiString fieldname);
  TField *__fastcall FindDetailField(AnsiString fieldname);

  Variant __fastcall GetHeadValue(AnsiString fieldname);
  Variant __fastcall GetHeadOldValue(AnsiString fieldname);
  void __fastcall SetMasterValue(AnsiString fieldname,Variant value);
  Variant __fastcall GetItemValue(AnsiString fieldname);
  Variant __fastcall GetItemOldValue(AnsiString fieldname);
  void __fastcall SetDetailValue(AnsiString fieldname,Variant value);

  void __fastcall CmdExec(AnsiString Param);
  void __fastcall Check(int IsCheck);
  void __fastcall CloseOff(int IsClose);
  void __fastcall Revoke(int IsRevoke);
  void __fastcall Tally(int IsTally);
  void __fastcall ExecSQL(AnsiString sqlstr);

  void __fastcall ExitClientDataSet();

public:
  __property AnsiString HeadSQLStr={read=GetHeadSQLStr,write=SetHeadSQLStr};
  __property AnsiString ItemSQLStr={read=GetItemSQLStr,write=SetItemSQLStr};
  __property AnsiString HeadWhereStr={read=GetHeadWhereStr,write=SetHeadWhereStr};
  __property AnsiString ItemWhereStr={read=GetItemWhereStr,write=SetItemWhereStr};
  __property AnsiString HeadOrderStr={read=GetHeadOrderStr,write=SetHeadOrderStr};
  __property AnsiString ItemOrderStr={read=GetItemOrderStr,write=SetItemOrderStr};
  __property AnsiString HeadKeyFields={read=GetHeadKeyFields,write=SetHeadKeyFields};
  __property AnsiString ItemKeyFields={read=GetItemKeyFields,write=SetItemKeyFields};
  __property AnsiString LinkFields={read=GetLinkFields,write=SetLinkFields};
  __property AnsiString HeadSort={read=GetHeadSort,write=SetHeadSort};
  __property AnsiString ItemSort={read=GetItemSort,write=SetItemSort};
  __property AnsiString Filter={read=GetFilter,write=SetFilter};
  __property bool Filtered={read=GetFiltered,write=SetFiltered};
  __property TDataSetState HeadStatus={read=GetHeadStatus};
  __property TDataSetState ItemStatus={read=GetItemStatus};
  __property int DataSetType={read=GetDataSetType};

  __property bool Bof={read=GetBof};
  __property bool Eof={read=GetEof};
  __property int RecordCount={read=GetRecordCount};
  __property int CurRecNo={read=GetCurRecNo};
  __property int MasterFieldCount={read=GetHeadFieldCount};
  __property TFields *MasterFields={read=GetHeadFields};
  __property bool DetailBof={read=GetItemBof};
  __property bool DetailEof={read=GetItemEof};
  __property int DetailCount={read=GetItemCount};
  __property int DetailRecNo={read=GetItemRecNo};
  __property int DetailFieldCount={read=GetItemFieldCount};
  __property TFields *DetailFields={read=GetItemFields};

  __property AnsiString MasterFieldName[int index]={read=GetHeadFieldName};
  __property TFieldType MasterFieldType[int index]={read=GetHeadFieldType};
  __property int MasterFieldSize[int index]={read=GetHeadFieldSize};
  __property AnsiString DetailFieldName[int index]={read=GetItemFieldName};
  __property TFieldType DetailFieldType[int index]={read=GetItemFieldType};
  __property int DetailFieldSize[int index]={read=GetItemFieldSize};

  __property HWND Handle={read=l_Handle};
  __property HWND Parent={read=l_Parent};
  __property bool Active={read=l_DataSetActive};
  __property int TimeOut={read=l_TimeOut,write=l_TimeOut};

};
class TKSCRSet :public TThread
{
private:
    HWND l_AOwner;
    HWND l_ClientCommHandle;
    HWND l_Handle;
    TADOQuery *l_DataSet;
    TStringList *l_MessageBuffer;
    int l_DataSetState;
    int l_OperateStatus;
    AnsiString l_ServerRecordSetHandle;
    AnsiString l_FileName;
    AnsiString l_ErrorMessage;
    FILE *logfile;

protected:
    void __fastcall WndProc(TMessage &Msg);
    void __fastcall AnalyzeStr();
    void __fastcall Execute();
    void __fastcall CRSetTerminate(TObject *Sender);

private:
    void __fastcall InitRecordSet();
    void __fastcall FreeRecordSet();

    void __fastcall InitRecordSet(TKSStrData *stream);
    void __fastcall RecvOpen(TKSStrData *stream);
    void __fastcall RecvUpdate(TKSStrData *stream);
    void __fastcall RecvDelete(TKSStrData *stream);
    void __fastcall RecvExecSQL(TKSStrData *stream);
    void __fastcall RecvError(TKSStrData *stream);
    void __fastcall CheckResultStatus(int status);

    TDataSource* __fastcall GetDataSource();
    void __fastcall SetDataSource(TDataSource* value);
    TADOConnection* __fastcall GetConnection();
    void __fastcall SetConnection(TADOConnection* value);
    bool __fastcall GetActive();
    void __fastcall SetActive(bool value);
    bool __fastcall GetBof();
    bool __fastcall GetEof();
    int __fastcall GetRowsAffected();
    TStrings* __fastcall GetSQL();
    void __fastcall SetSQL(TStrings* value);
    AnsiString __fastcall GetFilterText();
    void __fastcall SetFilterText(AnsiString value);
    bool __fastcall GetFiltered();
    void __fastcall SetFiltered(bool value);
    TADOLockType __fastcall GetLockType();
    void __fastcall SetLockType(TADOLockType value);
    int __fastcall GetCurRecNo();
    void __fastcall SetCurRecNo(int value);
    int __fastcall GetRecordCount();
    AnsiString __fastcall GetSort();
    void __fastcall SetSort(AnsiString value);
    AnsiString __fastcall GetBookmarkStr();
    void __fastcall SetBookmarkStr(AnsiString value);
    int __fastcall GetFieldCount();
    TFields* __fastcall GetFields();
    Variant __fastcall GetFieldValue(AnsiString FieldName);
    void __fastcall SetFieldValue(AnsiString FieldName,Variant value);
    AnsiString __fastcall GetName();
    void __fastcall SetName(AnsiString value);
    TDataSetState __fastcall GetState();

public:
    __fastcall TKSCRSet(HWND Owner,HWND cchdl);
    __fastcall ~TKSCRSet();

    void __fastcall Open();
    void __fastcall Close();
    void __fastcall Refresh(void);

    void __fastcall First();
    void __fastcall Last();
    void __fastcall Prior();
    void __fastcall Next();
    void __fastcall MoveBy(int Distance);

    void __fastcall Append(void);
    void __fastcall Insert(void);
    void __fastcall Edit(void);
    void __fastcall Post(void);
    void __fastcall UpdateBatch(TAffectRecords AffectRecords);
    void __fastcall Cancel(void);
    void __fastcall CancelBatch(TAffectRecords AffectRecords);
    void __fastcall Delete(void);
    void __fastcall CancelUpdates(void);

    bool __fastcall Locate(AnsiString KeyFields,Variant &KeyValues,TLocateOptions Options);
    void __fastcall ExecSQL(void);
    TField* __fastcall FieldByName(AnsiString FieldName);
    TField* __fastcall FindField(const AnsiString FieldName);
    void __fastcall LoadFromFile(AnsiString FileName);
    void __fastcall SaveToFile(const WideString FileName, TPersistFormat Format);
    void __fastcall ExitClientRecordSet();

    void __fastcall PollingMessage(HWND hWnd);
public:
    __property HWND LocalHandle={read=l_Handle};
    __property AnsiString ServerRecordSetHandle={read=l_ServerRecordSetHandle};
    __property HWND Parent={read=l_AOwner};
    __property TDataSource* DataSource = {read=GetDataSource, write=SetDataSource};

    __property bool Active = {read=GetActive, write=SetActive};
    __property bool Bof = {read=GetBof};
    __property bool Eof = {read=GetEof};
    __property int RowsAffected = {read=GetRowsAffected};
    __property TStrings* SQL = {read=GetSQL, write=SetSQL};

    __property AnsiString Filter = {read=GetFilterText, write=SetFilterText};
    __property bool Filtered = {read=GetFiltered, write=SetFiltered};
    __property TADOLockType LockType = {read=GetLockType, write=SetLockType};
    __property int CurRecNo = {read=GetCurRecNo, write=SetCurRecNo};
    __property int RecordCount = {read=GetRecordCount};
    __property AnsiString Sort = {read=GetSort, write=SetSort};
    __property AnsiString Bookmark = {read=GetBookmarkStr, write=SetBookmarkStr};
    __property int FieldCount = {read=GetFieldCount};
    __property TFields* Fields = {read=GetFields};
    __property Variant FieldValues[AnsiString FieldName] = {read=GetFieldValue, write=SetFieldValue};
    __property AnsiString Name = {read=GetName, write=SetName};
    __property TDataSetState State = {read=GetState};

};

//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

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