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

📄 listexportdlg.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
		ASSERT( FALSE );
		return FALSE;
	}
	TRY
	{
		if( !m_dbODBC.IsOpen() || m_astrColumnName.GetSize() <= 0 )
		{
			ASSERT( FALSE );
			return FALSE;
		}
		CloseODBCTable();

		// Get Next Table Name
		CString	strTableName	=	lpszTableName;

		BOOL	bCreateNew	=	bOverwrite;
		if( !bOverwrite )
		{
			try {
				CRecordset	rec( &m_dbODBC );
				if( !rec.Open( CRecordset::dynaset, "SELECT * FROM \"" + strTableName + "\"" ) )
					bCreateNew	=	TRUE;
				else
				{
					if( m_astrColumnName.GetSize() != rec.GetODBCFieldCount() )
						bCreateNew	=	TRUE;
					CODBCFieldInfo	fieldinfo;
					for( int i=0; i<rec.GetODBCFieldCount(); i++ )
					{
						rec.GetODBCFieldInfo( i, fieldinfo );
						bCreateNew	|=	( 0 != fieldinfo.m_strName.Compare(m_astrColumnName[i]) );
					}
					rec.Close();
				}
			}catch( CDaoException * e) {
				e->Delete();
				bCreateNew	=	TRUE;
			}
		}

		if( bCreateNew )
		{
			// Craete New Table
			int	nCount	=	1;
			while( TRUE )
			{
				try {
					if( 1 != nCount )
						strTableName.Format( "%s%d", lpszTableName, nCount );
					CRecordset	rec( &m_dbODBC );
					if( !rec.Open( CRecordset::dynaset, "SELECT * FROM \"" + strTableName + "\"" ) )
						break;
					rec.Close( );
				}catch ( CDBException * e ){
					e->Delete();
					break;
				}
				nCount	++;
			}

			// Create Table
			CString	sqlCreateTable	=	"CREATE TABLE \"" + strTableName + "\" (";
			for( int k=0; k<m_astrColumnName.GetSize(); k++ )
				sqlCreateTable	+=	( "\"" + ESCString(m_astrColumnName[k]) + "\"" + ( k==m_astrColumnName.GetSize()-1 ? " VARCHAR(255))" : " VARCHAR(255)," ) );
			m_dbODBC.ExecuteSQL( sqlCreateTable );
			// CreateNew End
		}

		m_strODBCTableName	=	strTableName;

		// Test
		CRecordset	rs( &m_dbODBC );
		if( !rs.Open( CRecordset::dynaset, "SELECT * FROM \"" + strTableName + "\"" ) )
			return FALSE;
		rs.Close();
		return TRUE;
	}
	CATCH(CException, e)
	{
		CloseODBCTable( );
		if(e)	e->ReportError( );
		return FALSE;
	}
	END_CATCH
}

BOOL CExportDB::AddItemTxt( CStringArray &astrItemText )
{
	if( CFile::hFileNull != m_fileTxt.m_hFile )
	{
		m_fileTxt.SeekToEnd();
		int	nStrLenTotal = 0, cxTotal = 0;
		for( int nCol=0; nCol < astrItemText.GetSize() && nCol < m_anColumnWidth.GetSize(); nCol ++ )
		{
			int	nColWidth	=	m_anColumnWidth[nCol];
			CString	strText	=	astrItemText.ElementAt(nCol);
			strText	=	" " + strText;
			while( ( (nStrLenTotal+strText.GetLength()) * 6 ) < cxTotal+nColWidth )
				strText	=	" " + strText;

			m_fileTxt.WriteString( strText );
			nStrLenTotal	+=	strText.GetLength();
			cxTotal			+=	nColWidth;
		}
		m_fileTxt.WriteString( "\n"/*STRING_CRLF*/ );
		return TRUE;
	}
	return FALSE;
}

BOOL CExportDB::AddItemMdb( CStringArray &astrItemText )
{
	TRY	{
		if( m_pRecord && m_pRecord->IsOpen() && m_mdb.IsOpen() )
		{
			m_pRecord->AddNew( );
			for( int i=0; i<astrItemText.GetSize(); i++ )
			{
				CString	strText = astrItemText.ElementAt(i);
				if( strText.GetLength() >= 255 )
					strText	=	strText.Left( 254 );
				if( strText.GetLength() > 0 && strText.GetLength() < 255 )
					m_pRecord->SetFieldValue( i, LPCTSTR(ESCString(strText)) );
			}
			m_pRecord->Update( );
			return TRUE;
		}
	}CATCH( CException, e )	{
		e->Delete();
	}END_CATCH
	return FALSE;
}

BOOL CExportDB::AddItemCsv( CStringArray &astrItemText )
{
	if( CFile::hFileNull != m_fileCsv.m_hFile )
	{
		m_fileCsv.SeekToEnd();
		CString	strText;
		for( int nCol=0; nCol < astrItemText.GetSize() && nCol < m_anColumnWidth.GetSize(); nCol ++ )
		{
			int	nColWidth	=	m_anColumnWidth[nCol];
			if( strText.GetLength() > 0 )
				strText	+=	",";
			strText	+=	ESCCSVString(astrItemText.ElementAt(nCol));
		}
		m_fileCsv.WriteString( strText );
		m_fileCsv.WriteString( "\n" );
		return TRUE;
	}
	return FALSE;
}

BOOL CExportDB::AddItemODBC( CStringArray &astrItemText )
{
	if( m_dbODBC.IsOpen() )
	{
		CString	sqlInsert	=	"INSERT INTO \"" + m_strODBCTableName + "\" VALUES(";
		for( int k=0; k<astrItemText.GetSize(); k++ )
			sqlInsert	+=	( "\'" + ESCString(astrItemText[k]) + ( k==astrItemText.GetSize()-1 ? "\')" : "\'," ) );

		TRY {
			m_dbODBC.ExecuteSQL( sqlInsert );
			return TRUE;
		} CATCH ( CException, e ) {
			e->Delete();
		} END_CATCH
	}
	return FALSE;
}

void CExportDB::CloseTxtDB( )
{
	CloseTxtTable();
	m_strTxtDest.Empty();
	m_bTxtPath	=	FALSE;
}

void CExportDB::CloseTxtTable( )
{
	if( CFile::hFileNull != m_fileTxt.m_hFile )
		m_fileTxt.Close();
}

void CExportDB::CloseMdbDB( )
{
	try
	{
		CloseMdbTable();
		if( m_mdb.IsOpen() )
			m_mdb.Close();
	}
	catch( CDaoException * e )
	{
		e->Delete();
		TRACE( "Close Mdb Exception\n" );
	}
}

void CExportDB::CloseMdbTable( )
{
	try
	{
		if( m_pRecord && m_pRecord->IsOpen() )
			m_pRecord->Close();
		if( m_pRecord )
		{
			delete m_pRecord;
			m_pRecord	=	NULL;
		}
		if( m_pTableDef && m_pTableDef->IsOpen() )
			m_pTableDef->Close();
		if( m_pTableDef )
		{
			delete	m_pTableDef;
			m_pTableDef	=	NULL;
		}
	}
	catch( CDaoException * e )
	{
		e->Delete();
		TRACE( "Close Mdb Exception\n" );
	}
}

void CExportDB::CloseCsvDB( )
{
	CloseCsvTable( );
	m_strCsvDest.Empty();
	m_bCsvPath	=	FALSE;
}

void CExportDB::CloseCsvTable( )
{
	if( CFile::hFileNull != m_fileCsv.m_hFile )
		m_fileCsv.Close();
}

void CExportDB::CloseODBCDB( )
{
	try
	{
		CloseODBCTable( );
		if( m_dbODBC.IsOpen() )
			m_dbODBC.Close();
	}
	catch(...)
	{
		TRACE(_T("Errors occurred.\n"));
	}
}

void CExportDB::CloseODBCTable( )
{
	TRY
	{
		if( m_dbODBC.IsOpen() )
		{
			// Close and Reopen to Flush Data
			CString strConnect = m_dbODBC.GetConnect();
			m_dbODBC.Close();
			m_dbODBC.Open( strConnect, FALSE, FALSE, _T("ODBC;"), FALSE);
		}
	}
	CATCH(CException, e)
	{
		if(e)	e->ReportError( );
	}
	END_CATCH
}

BOOL CExportDB::OpenAllDB(CString strTxt, BOOL bTxtPath, CString strMdb,
						  CString strCsv, BOOL bCsvPath, CString strODBC, BOOL bReportError )
{
	BOOL	bRet	=	TRUE;
	if( strTxt.GetLength() > 0 )
	{
		bRet	&=	OpenTxtDB( strTxt, bTxtPath );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRTXTDEST, MB_OK | MB_ICONINFORMATION );
	}
	if( strMdb.GetLength() > 0 )
	{
		bRet	&=	OpenMdbDB( strMdb );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRMDBDEST, MB_OK | MB_ICONINFORMATION );
	}
	if( strCsv.GetLength() > 0 )
	{
		bRet	&=	OpenCsvDB( strCsv, bCsvPath );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRCSVDEST, MB_OK | MB_ICONINFORMATION );
	}
	if( strODBC.GetLength() > 0 )
	{
		bRet	&=	OpenODBCDB( strODBC );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRODBCDEST, MB_OK | MB_ICONINFORMATION );
	}
	
	if( !bRet )
		CloseAllDB( );
	return bRet;
}

BOOL CExportDB::OpenAllTable( LPCTSTR lpszTableName, BOOL bOverwrite, BOOL bReportError )
{
	if( NULL == lpszTableName || strlen(lpszTableName) <= 0 )
	{
		ASSERT( FALSE );
		return FALSE;
	}

	BOOL	bRet	=	TRUE;
	if( m_strTxtDest.GetLength() > 0 )
	{
		bRet	&=	OpenTxtTable( lpszTableName, bOverwrite );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRTXTDEST, MB_OK | MB_ICONINFORMATION );
	}
	if( m_mdb.IsOpen() )
	{
		bRet	&=	OpenMdbTable( lpszTableName, bOverwrite );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRMDBDEST, MB_OK | MB_ICONINFORMATION );
	}
	if( m_strCsvDest.GetLength() > 0 )
	{
		bRet	&=	OpenCsvTable( lpszTableName, bOverwrite );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRCSVDEST, MB_OK | MB_ICONINFORMATION );
	}
	if( m_dbODBC.IsOpen() )
	{
		bRet	&=	OpenODBCTable( lpszTableName, bOverwrite );
		if( !bRet && bReportError )
			AfxMessageBox( IDS_EXPORTDB_ERRODBCDEST, MB_OK | MB_ICONINFORMATION );
	}
	
	if( !bRet )
		CloseAllTable( );
	return bRet;
}

BOOL CExportDB::AddItem( CStringArray &astrItemText )
{
	BOOL	bRet	=	TRUE;
	if( CFile::hFileNull != m_fileTxt.m_hFile )
	{
		bRet	&=	AddItemTxt( astrItemText );
	}
	if( m_pRecord && m_pRecord->IsOpen() && m_mdb.IsOpen() )
	{
		bRet	&=	AddItemMdb( astrItemText );
	}
	if( CFile::hFileNull != m_fileCsv.m_hFile )
	{
		bRet	&=	AddItemCsv( astrItemText );
	}
	if( m_dbODBC.IsOpen() )
	{
		bRet	&=	AddItemODBC( astrItemText );
	}

	return bRet;
}

void CExportDB::CloseAllDB( )
{
	CloseTxtDB( );
	CloseMdbDB( );
	CloseCsvDB( );
	CloseODBCDB( );
}

void CExportDB::CloseAllTable( )
{
	CloseTxtTable( );
	CloseMdbTable( );
	CloseCsvTable( );
	CloseODBCTable( );
}

/////////////////////////////////////////////////////////////////////////////
// CListExportDlg dialog

void CListExportDlg::StoreProfile( )
{
	AfxGetApp()->WriteProfileInt( "listexportdlg", "txtcheck", m_bTxtCheck );
	AfxGetApp()->WriteProfileInt( "listexportdlg", "mdbcheck", m_bMdbCheck );
	AfxGetApp()->WriteProfileInt( "listexportdlg", "csvcheck", m_bCsvCheck );
	AfxGetApp()->WriteProfileInt( "listexportdlg", "odbccheck", m_bODBCCheck );
	AfxGetApp()->WriteProfileString( "listexportdlg", "txtdest", m_strTxtDest );
	AfxGetApp()->WriteProfileString( "listexportdlg", "mdbdest", m_strMdbDest );
	AfxGetApp()->WriteProfileString( "listexportdlg", "csvdest", m_strCsvDest );
	AfxGetApp()->WriteProfileString( "listexportdlg", "odbcdest", m_strODBCDest );
	AfxGetApp()->WriteProfileInt( "listexportdlg", "exeonfinish", m_bExeOnFinish );
	AfxGetApp()->WriteProfileInt( "listexportdlg", "overwrite", m_bOverwrite );
}

void CListExportDlg::LoadProfile( )
{
	// Initial Data
	m_bTxtCheck		=	TRUE;
	m_bExeOnFinish	=	TRUE;
	m_bOverwrite	=	TRUE;
	m_strTxtDest	=	AfxGetProfile().GetExportPath() + "StockList.txt";
	m_strMdbDest	=	AfxGetProfile().GetExportPath() + "StockList.mdb";
	m_strCsvDest	=	AfxGetProfile().GetExportPath() + "StockList.csv";
	m_strODBCDest	=	"ODBC;DSN=Excel Files;DBQ="
						+ AfxGetProfile().GetExportPath()
						+ "StockList.xls;DefaultDir="
						+ AfxGetProfile().GetExportPath()
						+ ";DriverId=790;MaxBufferSize=2048;PageTimeout=5;";

	m_bTxtCheck		=	AfxGetApp()->GetProfileInt( "listexportdlg", "txtcheck", m_bTxtCheck );
	m_bMdbCheck		=	AfxGetApp()->GetProfileInt( "listexportdlg", "mdbcheck", m_bMdbCheck );
	m_bCsvCheck		=	AfxGetApp()->GetProfileInt( "listexportdlg", "csvcheck", m_bCsvCheck );
	m_bODBCCheck	=	AfxGetApp()->GetProfileInt( "listexportdlg", "odbccheck", m_bODBCCheck );
	m_strTxtDest	=	AfxGetApp()->GetProfileString( "listexportdlg", "txtdest", m_strTxtDest );
	m_strMdbDest	=	AfxGetApp()->GetProfileString( "listexportdlg", "mdbdest", m_strMdbDest );

⌨️ 快捷键说明

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