home *** CD-ROM | disk | FTP | other *** search
- // sqltable.cpp : implementation of the CTables class
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
-
- #include "stdafx.h"
- #include "tableset.h"
-
- /////////////////////////////////////////////////////////////////////////////
- // CTables implementation
-
- IMPLEMENT_DYNAMIC(CTables, CRecordset)
-
- CTables::CTables(CDatabase* pDatabase)
- : CRecordset(pDatabase)
- {
- //{{AFX_FIELD_INIT(CTables)
- m_strQualifier = "";
- m_strOwner = "";
- m_strName = "";
- m_strType = "";
- m_strRemarks = "";
- m_nFields = 5;
- //}}AFX_FIELD_INIT
- m_strQualifierParam = "";
- m_strOwnerParam = "";
- m_strNameParam = "";
- m_strTypeParam = "";
- }
-
- BOOL CTables::Open(UINT nOpenType, LPCSTR lpszSQL,
- DWORD dwOptions)
- {
- ASSERT(lpszSQL == NULL);
-
- RETCODE nRetCode;
-
- // Cache state info and allocate hstmt
- SetState(nOpenType,NULL,noDirtyFieldCheck);
- if (!AllocHstmt())
- return FALSE;
-
- TRY
- {
- OnSetOptions(m_hstmt);
- AllocStatusArrays();
-
- // call the ODBC catalog function with data member params
- AFX_SQL_ASYNC(this, (::SQLTables)(m_hstmt,
- (m_strQualifierParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strQualifierParam), SQL_NTS,
- (m_strOwnerParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strOwnerParam), SQL_NTS,
- (m_strNameParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strNameParam), SQL_NTS,
- (m_strTypeParam.IsEmpty()? (UCHAR FAR *)NULL: (UCHAR FAR *)(const char*)m_strTypeParam), SQL_NTS));
- if (!Check(nRetCode))
- ThrowDBException(nRetCode, m_hstmt);
-
- // Allocate memory and cache info
- AllocAndCacheFieldInfo();
- AllocRowset();
-
- // Fetch the first row of data
- MoveNext();
-
- // If EOF, result set is empty, set BOF as well
- m_bBOF = m_bEOF;
- }
-
- CATCH_ALL(e)
- {
- Close();
- THROW_LAST();
- }
- END_CATCH_ALL
-
- return TRUE;
- }
-
- CString CTables::GetDefaultConnect()
- {
- return "ODBC;";
- }
-
- CString CTables::GetDefaultSQL()
- {
- // should SQLTables directly, so GetSQL should never be called
- ASSERT(FALSE);
- return "!";
- }
-
- void CTables::DoFieldExchange(CFieldExchange* pFX)
- {
- //{{AFX_FIELD_MAP(CTables)
- pFX->SetFieldType(CFieldExchange::outputColumn);
- RFX_Text(pFX, "table_qualifier", m_strQualifier);
- RFX_Text(pFX, "table_owner", m_strOwner);
- RFX_Text(pFX, "table_name", m_strName);
- RFX_Text(pFX, "table_type", m_strType);
- RFX_Text(pFX, "remarks", m_strRemarks);
- //}}AFX_FIELD_MAP
- }
-