www.pudn.com > rs232_moni.rar > GuiADODB.h
#pragma once //-----------------------------------------------------------------------// // This is a part of the GuiLib MFC Extention. // // Autor : Francisco Campos // // (C) 2002 Francisco CamposAll rights reserved // // This code is provided "as is", with absolutely no warranty expressed // // or implied. Any use is at your own risk. // // You must obtain the author's consent before you can include this code // // in a software library. // // If the source code in this file is used in any application // // then acknowledgement must be made to the author of this program // // fco_campos@tutopia.com // //-----------------------------------------------------------------------// //#import "\Program Files\Common Files\System\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile") //#import "msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile") using namespace ADOCG; #include "icrsint.h" #include "GuiLib.h" //--------------------------------------------------------------------------------------- class GUILIBDLLEXPORT CGuiField { protected: FieldPtr field; public: CGuiField(void); ~CGuiField(void); public: FieldPtr GetFieldPtr(){return field;}; void Attach(FieldPtr mField){field=mField;}; CString GetName(){ CString Name=(LPCTSTR)field->GetName(); return Name; }; short GetType(){return field->GetType();}; long GetActualSize(){return field->GetActualSize();}; long GetDefinedSize(){return field->GetDefinedSize();}; long GetAttributes(){return field->GetAttributes();}; CString GetOriginalVal(){_variant_t vt=field->GetOriginalValue(); return (CString) vt.bstrVal;}; BOOL SetValue(long lVal); BOOL SetValue(float flVal); BOOL SetValue(int nVal); BOOL SetValue(double dbVal); BOOL SetValue(CString szValue); BOOL SetValue(bool blVal); BOOL SetValue(COleDateTime dtVal); BOOL SetValue(_variant_t vt); BOOL GetValue(int& nValue); BOOL GetValue(long& lVal); BOOL GetValue(double& dbVal); BOOL GetValue(CString& strValue); BOOL GetValue(COleDateTime& dtVal); BOOL GetValue(float& flVal); BOOL GetValue(_variant_t& vtVal); CString GetUnderlyingValue() { _variant_t vt=field->UnderlyingValue; return (CString)vt.bstrVal;}; }; //-------------------------------------------------------------------------------------- class CGuiCommand; class CGuiConnection; class GUILIBDLLEXPORT CGuiRecordSet { public: CGuiRecordSet(void); ~CGuiRecordSet(void); protected: _RecordsetPtr m_rs; CGuiConnection* m_pCon; public: BOOL Open(_ConnectionPtr ActiveConnection,LPCTSTR Source= _T(""), ADOCG::CursorTypeEnum CursorType = adOpenUnspecified,ADOCG::LockTypeEnum LockType= adLockUnspecified, long Options = -1); void MoveFirst(); void MoveLast(); void MoveNext(); void MovePrevious(); void Cancel(); void CancelUpdate(); void Close(); BOOL IsEof(); BOOL IsBof(); long GetRecordCount(){ return m_rs->RecordCount;} long GetAbsolutePage(){return m_rs->GetAbsolutePage();}; void SetAbsolutePage(int nPage) {m_rs->PutAbsolutePage((enum PositionEnum)nPage);}; long GetPageCount() {return m_rs->GetPageCount();}; long GetPageSize() {return m_rs->GetPageSize();}; void SetPageSize(int nSize) {m_rs->PutPageSize(nSize);}; long GetAbsolutePosition() {return m_rs->GetAbsolutePosition();}; void SetAbsolutePosition(int nPosition) {m_rs->PutAbsolutePosition((enum PositionEnum)nPosition);}; BOOL Find(LPCTSTR Criteria , long SkipRecords=0 , SearchDirectionEnum SearchDirection= adSearchForward,_variant_t Start=vtMissing); long GetNumFields() {return m_rs->Fields->GetCount();}; _RecordsetPtr GetAdoRecordSet(){ return m_rs;}; //void SetBookmark(){m_rs->Bookmark = m_rs->GetBookmark();}; CString GetCollect(LPCTSTR lpField); BOOL GetCollect(int nIndex,int& nValue); BOOL GetCollect(int nIndex,long& lVal); BOOL GetCollect(int nIndex,double& dbVal); BOOL GetCollect(int nIndex,CString& strValue); BOOL GetCollect(int nIndex,COleDateTime& dtVal); BOOL GetCollect(int nIndex,float& flVal); BOOL GetCollect(int nIndex,bool& blVal); BOOL GetCollect(int nIndex,_variant_t& vt); BOOL GetCollect(int nIndex,COleCurrency& cyVal); BOOL GetCollect(LPCTSTR lpField,int& nValue); BOOL GetCollect(LPCTSTR lpField,long& lVal); BOOL GetCollect(LPCTSTR lpField,double& dbVal); BOOL GetCollect(LPCTSTR lpField,CString& strValue); BOOL GetCollect(LPCTSTR lpField,COleDateTime& dtVal); BOOL GetCollect(LPCTSTR lpField,float& flVal); BOOL GetCollect(LPCTSTR lpField,bool& blVal); BOOL GetCollect(LPCTSTR lpField,_variant_t& vt); BOOL GetCollect(LPCTSTR lpField,COleCurrency& cyVal); BOOL GetFormatDate(int nIndex,CString& m_szDate, CString Format=_T("%d/%m/%Y")); BOOL GetFormatDate(LPCTSTR lpField,CString& m_szDate, CString Format=_T("%d/%m/%Y")); CGuiField GetField(LPCTSTR lpField); CGuiField GetField(int Index); BOOL SetValue(LPCTSTR lpName,CString szCad); BOOL SetValue(LPCTSTR lpName,long lVal); BOOL SetValue(LPCTSTR lpName,unsigned char usVal); BOOL SetValue(LPCTSTR lpName,short shVal); BOOL SetValue(LPCTSTR lpName,float flVal); BOOL SetValue(LPCTSTR lpName,double dblVal); BOOL SetValue(LPCTSTR lpName,BOOL blVal); BOOL SetValue(LPCTSTR lpName,COleDateTime dtVal); BOOL SetValue(LPCTSTR lpName,unsigned long ulVal); BOOL SetValue(LPCTSTR lpName, COleCurrency cuVal); BOOL SetFieldValue(LPCTSTR lpName, _variant_t vt); BOOL Supports( CursorOptionEnum CursorOptions ) ; BOOL FindFirst(LPCTSTR Criteria); BOOL FindNext(); void CGuiRecordSet::Move(long NumRecords , _variant_t Start); void Attach(_RecordsetPtr m_prs ); void CancelBatch(AffectEnum AffectRecords= adAffectAll); void SetCacheSize(long lSizeCache){m_rs->put_CacheSize(lSizeCache);}; void GetCacheSize() {m_rs->GetCacheSize();}; CGuiRecordSet* Clone(ADOCG::LockTypeEnum LockType= adLockUnspecified); CGuiRecordSet* NextRecordset(long RecordsAffected) ; BOOL AddNew(){ return m_rs->AddNew() != S_OK;}; BOOL Update(){ return m_rs->Update() != S_OK;}; BOOL Delete(); BOOL IsOpen(); BOOL SetFilter(LPCTSTR lpFilter); BOOL SetSort(LPCTSTR lpSort); ADOCG::EditModeEnum GetEditMode(){return m_rs->EditMode;}; protected: _variant_t vtPointer; LPCTSTR m_Criteria; }; //------------------------------------------------------------------------------------------------ class GUILIBDLLEXPORT CGuiConnection { public: CGuiConnection(void); ~CGuiConnection(void); protected: _ConnectionPtr m_pConn; public: BOOL Open(LPCTSTR ConnectionString,LPCTSTR UID=_T(""),LPCTSTR PWD=_T(""),long Options=-1); CGuiRecordSet* Execute(LPCTSTR CommandText,long Options=-1 ); long BeginTrans(); void RollbackTrans(); void CommitTrans(); void Cancel(); void Close(); BOOL IsConnect(); void SetConnectionTimeout(long ConnectionTimeout); void SetConectionString( LPCTSTR ConnectionString); long GetConnectionTimeout(); _ConnectionPtr GetConecction(){return m_pConn;}; LPCTSTR GetConectionString(); }; //---------------------------------------------------------------------------------------------- class GUILIBDLLEXPORT CGuiParameter { public: CGuiParameter(); ~CGuiParameter(); protected: _ParameterPtr pParam; public: void SetAttributes(long Attributes); void SetDirection(ADOCG::ParameterDirectionEnum Direction=adParamUnknown); void SetName(LPCTSTR szName); void SetNumericScale(unsigned char NumericScale); void SetPrecision(unsigned char Precision); void SetSize(long Size); void SetType(ADOCG::DataTypeEnum Type); BOOL SetValue(long lVal); BOOL SetValue(float flVal); BOOL SetValue(int nVal); BOOL SetValue(double dbVal); BOOL SetValue(CString szValue); BOOL SetValue(bool blVal); BOOL SetValue(COleDateTime dtVal); BOOL SetValue(COleCurrency cyVal); BOOL SetValue(_variant_t vt); BOOL GetValue(int& nValue); BOOL GetValue(long& lVal); BOOL GetValue(double& dbVal); BOOL GetValue(CString& strValue); BOOL GetValue(COleDateTime& dtVal); BOOL GetValue(float& flVal); BOOL GetValue(_variant_t& vtVal); BOOL GetValue(COleCurrency& cyVal); BOOL GetFormatDate(CString& m_szDate, CString Format=_T("%d/%m/%Y")); _ParameterPtr GetParameter(){return pParam;}; void Attach(_ParameterPtr param) {pParam=param;}; }; //---------------------------------------------------------------------------------------------- class GUILIBDLLEXPORT CGuiCommand { public: CGuiCommand(); ~CGuiCommand(); protected: _CommandPtr pCommand; CGuiConnection m_pCon; public: void SetActiveConnection(CGuiConnection* pCon); void SetActiveConnection(LPCTSTR szconnec); void Cancel(); void SetCommandText(LPCTSTR lpCommand,CommandTypeEnum cmdType=adCmdText); void SetCommandTimeout(long CommandTimeout); void SetPrepared(BOOL prepared); long GetState(); CGuiRecordSet* Execute(VARIANT* param1=NULL,VARIANT* param2=NULL,long Options=-1); CGuiParameter* CreateParameter(CString Name ,long Size ,ADOCG::DataTypeEnum Type= adEmpty, ADOCG::ParameterDirectionEnum Direction= adParamInput) ; BOOL Append(CGuiParameter* pParam); _CommandPtr GetCommand(){return pCommand;}; void Attach(_CommandPtr Command) {pCommand=Command;}; };