dbmanagerdlg.cpp

来自「利用OLEDB以数据库的方式打开Excell文件」· C++ 代码 · 共 1,946 行 · 第 1/4 页

CPP
1,946
字号

void CDBManagerDlg::OnCancel() 
{
	if( m_pColumnset )
	{
		m_pColumnset->Close();
		delete m_pColumnset;
	}
	if( m_pTableset )
	{
		m_pTableset->Close();
		delete m_pTableset;
	}
	if( m_pDynamicBulkSet )
	{
		m_pDynamicBulkSet->Close();
		delete m_pDynamicBulkSet;
	}
	CDialog::OnCancel();
}

void CDBManagerDlg::OnOK() 
{
	UpdateData();
	CString assure_company;
	GetDlgItemText(IDC_PHONE_USER_NAME,m_phone_user_name);
	GetDlgItemText(IDC_COMBO_ASSURE_COMPANY,assure_company);
	GetDlgItemText(IDC_PHONE_NUM,m_phone_num);

	CString csSQL,SQl1;
	m_biaoming=biaoming;
	SQl1="select * from ["+m_biaoming+"$A1:IV65536] where 1=1";
	if (m_phone_user_name !="")
	{
		SQl1=SQl1+" and [用户姓名]='%s'";
		csSQL.Format(SQl1,m_phone_user_name);
		SQl1=csSQL;
	}
	else
	{
		SQl1=SQl1;
	}

	if (assure_company !="")
	{
		SQl1=SQl1+" and [担保公司]='%s'";
		csSQL.Format(SQl1,assure_company);
		SQl1=csSQL;
	}
	else
	{
		SQl1=SQl1;
	}

	if (m_phone_num !="")
	{
		SQl1=SQl1+" and [UIM卡号]="+m_phone_num;
		csSQL.Format(SQl1);
		SQl1=csSQL;
	}
	else
	{
		SQl1=SQl1;
	}
	csSQL=SQl1;
	OpenSQLResult( csSQL );
	ShowSQLData();
//	CDialog::OnOK();
}

void CDBManagerDlg::OnCancelMode() 
{
	CDialog::OnCancelMode();
}

void CDBManagerDlg::OnOpenConfig() 
{
	BOOL dwResult;
	dwResult = (DWORD)::ShellExecute( m_hWnd, "open", theApp.m_csRootPath + "DBConfig.ini", "", "", SW_SHOWMAXIMIZED );
	if ( dwResult <= 32 )
	{
		MessageBox( " 打开配置文件失败 ", "错误", MB_ICONSTOP ); 
	}
}



BEGIN_EVENTSINK_MAP(CDBManagerDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CDBManagerDlg)
	ON_EVENT(CDBManagerDlg, IDC_RSGRIDCTRL_RESULT, 3 /* LButtonUp */, OnLButtonUpRsgridctrlResult, VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CDBManagerDlg, IDC_RSGRIDCTRL_RESULT, 4 /* LButtonDBClick */, OnLButtonDBClickRsgridctrlResult, VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CDBManagerDlg, IDC_RSGRIDCTRL_RESULT, 1 /* GridEdited */, OnGridEditedRsgridctrlResult, VTS_I4 VTS_I4 VTS_BSTR)
	ON_EVENT(CDBManagerDlg, IDC_RSGRIDCTRL_RESULT, 6 /* RButtonDBClick */, OnRButtonDBClickRsgridctrlResult, VTS_I4 VTS_I4 VTS_I4)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CDBManagerDlg::OnLButtonUpRsgridctrlResult(long nFlags, long lRow, long lCol) 
{
	if( lRow == 0 )
	{
		int Riw  = 0;
		while( Riw < 1000 )
		{
			CString csContent = m_RsGridResult.GetCellText( 1 + Riw, lCol );
			csContent.TrimRight();
			csContent.TrimLeft();

			if( csContent != "" )
			{
				if( csContent[0] > '9' || csContent[0] <'0' )
					m_RsGridResult.OrderByColumn( lCol, TRUE,TRUE );
				else
					m_RsGridResult.OrderByColumn( lCol, FALSE,TRUE );
				break;
			}
			Riw++; 
		}
	}




}

void CDBManagerDlg::OnLButtonDBClickRsgridctrlResult(long nFlags, long lRow, long lCol) 
{
	buf.RemoveAll();
	//if (cs_table_name=="[Sheet1$]")
	m_biaoming=biaoming;
	if (cs_table_name=="["+m_biaoming+"$]")
	{		
		CEditDlg editDlg;
	//	CCompany companyDlg;
		editDlg.m_pCDataBase = &m_Database;
	//	companyDlg.m_company_pCDataBase=&m_Database;
		lRow=m_RsGridResult.GetCurrentRow();
		int col_count=m_RsGridResult.GetColCount();
	//	lCol=m_RsGridResult.GetCurrentColumn();
	//	CString m_csContent=m_RsGridResult.GetCellDisString(lRow,lCol);
	//	for (int col=0;col<col_count;col++)
	//	{
	//		CString m_csContent=m_RsGridResult.GetCellDisString(lRow,col);
	//	}
		editDlg.m_id=m_RsGridResult.GetCellDisString(lRow,0);
		editDlg.m_uim=m_RsGridResult.GetCellDisString(lRow,1);
		editDlg.m_type=m_RsGridResult.GetCellDisString(lRow,2);
		editDlg.m_cdma_type=m_RsGridResult.GetCellDisString(lRow,3);
		editDlg.m_lowest=m_RsGridResult.GetCellDisString(lRow,4);
		editDlg.m_name=m_RsGridResult.GetCellDisString(lRow,5);
		editDlg.m_person_id=m_RsGridResult.GetCellDisString(lRow,6);
		editDlg.m_givemoney=m_RsGridResult.GetCellDisString(lRow,7);
		editDlg.m_getphone=m_RsGridResult.GetCellDisString(lRow,8);
		editDlg.m_phone_id=m_RsGridResult.GetCellDisString(lRow,9);
		editDlg.m_company=m_RsGridResult.GetCellDisString(lRow,10);
		editDlg.m_contract_id=m_RsGridResult.GetCellDisString(lRow,11);
		editDlg.m_person=m_RsGridResult.GetCellDisString(lRow,12);
		editDlg.m_money=m_RsGridResult.GetCellDisString(lRow,13);
		editDlg.m_three=m_RsGridResult.GetCellDisString(lRow,14);
		editDlg.m_three_shuoming=m_RsGridResult.GetCellDisString(lRow,15);
		editDlg.m_six=m_RsGridResult.GetCellDisString(lRow,16);
		editDlg.m_six_shuoming=m_RsGridResult.GetCellDisString(lRow,17);
//		for (int col=16;col<56;col++)
//		{
//			editDlg.m_yongjin1.AddString(m_RsGridResult.GetCellDisString(lRow,col));
//		}
		
//		int i_content = 0;
//		int i_Totol = 0;
		for (int i_col=18;i_col<col_count-3;i_col++)
		{
			CString cs_content=m_RsGridResult.GetCellDisString(lRow,i_col);
			buf.Add(cs_content);
//			strcpy(buf+i_Totol,m_RsGridResult.GetCellDisString(lRow,i_col));
//			i_content=cs_content.GetLength();
//			i_Totol += i_content;
		}
		editDlg.buff=&buf;
//		memcpy(editDlg.buff,buf,200);
		editDlg.DoModal();


		//*********************************显示数据***********************************//
		if( editDlg.m_bFlag )
		{
			CString csSQL="select * from "+cs_table_name;

				if (m_pDynamicBulkSet)
			{
				if (m_pDynamicBulkSet->IsOpen())
					m_pDynamicBulkSet->Close();
				delete m_pDynamicBulkSet;
				m_pDynamicBulkSet = 0;
			}

			m_pDynamicBulkSet = new CDynamicBulkSet( &m_Database );

			// Open the recordset, create the dialog and hand it the recordset
			m_pDynamicBulkSet->Open(CRecordset::snapshot, csSQL,
				CRecordset::readOnly | CRecordset::useMultiRowFetch);
	/*
			CODBCFieldInfo info;
			int nColumns = m_pDynamicBulkSet->GetODBCFieldCount();
			int nRowsFetched = m_pDynamicBulkSet->GetRowsFetched();

			while( m_RsGridResult.GetCellText( 1, 1 ) != "" )
			{
				m_RsGridResult.DeleteRow( 1, 1 );
			}

			m_RsGridResult.SetColCount( nColumns );
			m_RsGridResult.SetRowCount( nRowsFetched + 1 );

			if( nColumns == 1 || nRowsFetched == 1 )
			{
				m_RsGridResult.InsertRow( 0, 1 );
			}
			long* rgLength;
			LPSTR rgData;
			CString strData;
			// for each column, retrieve the field name and
			// insert the field name in the header
			for (int nField = 0; nField < nColumns; nField++)
			{
				m_pDynamicBulkSet->GetODBCFieldInfo(nField, info);
				if ( !m_RsGridResult.SetCellText( 0, nField, info.m_strName))
				{
					return ;
				}

				rgData = (LPSTR)m_pDynamicBulkSet->m_ppvData[nField];
				rgLength = (long*)m_pDynamicBulkSet->m_ppvLengths[nField];

				for (int nRow = 0; nRow < nRowsFetched; nRow++)
				{
					int nStatus = m_pDynamicBulkSet->GetRowStatus(nRow + 1);

					// Get the string to display
					if (nStatus == SQL_ROW_DELETED)
						strData = _T("<DELETED>");
					else if (nStatus == SQL_ROW_NOROW)
						// Shouldn't get this since rows fetched is checked
						strData = _T("<NO_ROW>");
					else if (rgLength[nRow] == SQL_NULL_DATA)
						strData = _T("<NULL>");
					else
						strData = &rgData[nRow * MAX_TEXT_LEN];

					m_RsGridResult.SetCellText(nRow + 1, nField, 
						strData );
				}
			}
			*/
			/*
			CODBCFieldInfo info;
			CStringArray csTotalContent;
			int iTotalRows = 0;
			int nColumns = m_pDynamicBulkSet->GetODBCFieldCount();
			m_RsGridResult.SetColCount( nColumns );
			
			
			long* rgLength;
			LPSTR rgData;
			CString strData;
			// for each column, retrieve the field name and
			// insert the field name in the header
			for (int nField = 0; nField < nColumns; nField++)
			{
				m_pDynamicBulkSet->GetODBCFieldInfo(nField, info);
				if ( !m_RsGridResult.SetCellText( 0, nField, info.m_strName))
				{
					return;
				}
				
				while (!m_pDynamicBulkSet->IsEOF())
				{
					
					int nRowsFetched = m_pDynamicBulkSet->GetRowsFetched();
					if( nField == 0 )
						iTotalRows += nRowsFetched;
					rgData = (LPSTR)m_pDynamicBulkSet->m_ppvData[nField];
					rgLength = (long*)m_pDynamicBulkSet->m_ppvLengths[nField];
					
					for (int nRow = 0; nRow < nRowsFetched; nRow++)
					{
						int nStatus = m_pDynamicBulkSet->GetRowStatus(nRow + 1);
						
						// Get the string to display
						if (nStatus == SQL_ROW_DELETED)
							strData = _T("<DELETED>");
						else if (nStatus == SQL_ROW_NOROW)
							// Shouldn't get this since rows fetched is checked
							strData = _T("<NO_ROW>");
						else if (rgLength[nRow] == SQL_NULL_DATA)
							strData = _T("<NULL>");
						else
							strData = &rgData[nRow * MAX_TEXT_LEN];
						
						csTotalContent.Add( strData );
					}
					m_pDynamicBulkSet->MoveNext();
				}
				m_pDynamicBulkSet->MoveFirst();
				
			}
			
			while( m_RsGridResult.GetCellText( 1, 1 ) != "" )
			{
				m_RsGridResult.DeleteRow( 1, 1 );
			}
			
			m_RsGridResult.SetRowCount( iTotalRows + 1 );
			
			if( nColumns == 1 || iTotalRows == 1 )
			{
				m_RsGridResult.InsertRow( 0, 1 );
			}
			
			for (int nFields = 0; nFields < nColumns; nFields++)
			{
				for (int nRow = 0; nRow < iTotalRows; nRow++)
				{
					m_RsGridResult.SetCellText(nRow + 1, nFields, csTotalContent.GetAt( nRow + nFields * iTotalRows ) );
				}
			}
			*/
			CODBCFieldInfo info;
			CStringArray csTotalContent;
			int iTotalRows = 0;
			int nColumns = m_pDynamicBulkSet->GetODBCFieldCount();
			m_RsGridResult.SetColCount( nColumns );


			long* rgLength;
			LPSTR rgData;
			CString strData;
			while (!m_pDynamicBulkSet->IsEOF())
			{
				int nRowsFetched = m_pDynamicBulkSet->GetRowsFetched();
				iTotalRows += nRowsFetched;
				for (int nRow = 0; nRow < nRowsFetched; nRow++)
				{
					for (int nField = 0; nField < nColumns; nField++)
					{
						m_pDynamicBulkSet->GetODBCFieldInfo(nField, info);
						if( nRow == 0 )
						{
							if ( !m_RsGridResult.SetCellText( 0, nField, info.m_strName))
							{
								return;
							}
						}
						
						rgData = (LPSTR)m_pDynamicBulkSet->m_ppvData[nField];
						rgLength = (long*)m_pDynamicBulkSet->m_ppvLengths[nField];
						
						int nStatus = m_pDynamicBulkSet->GetRowStatus(nRow + 1);
						
						// Get the string to display
						if (nStatus == SQL_ROW_DELETED)
							strData = _T("<DELETED>");
						else if (nStatus == SQL_ROW_NOROW)
							// Shouldn't get this since rows fetched is checked
							strData = _T("<NO_ROW>");
						else if (rgLength[nRow] == SQL_NULL_DATA)
							strData = _T("<NULL>");
						else
							strData = &rgData[nRow * MAX_TEXT_LEN];
						
						csTotalContent.Add( strData );
					}
					
				}
				m_pDynamicBulkSet->MoveNext();
			}

			while( m_RsGridResult.GetCellText( 1, 1 ) != "" )
			{
				m_RsGridResult.DeleteRow( 1, 1 );
			}

			m_RsGridResult.SetRowCount( iTotalRows + 1 );

			if( nColumns == 1 || iTotalRows == 1 )
			{
				m_RsGridResult.InsertRow( 0, 1 );
			}
			for (int nRow = 0; nRow < iTotalRows; nRow++)
			{
				for (int nFields = 0; nFields < nColumns; nFields++)
				{
					m_RsGridResult.SetCellText(nRow + 1, nFields, csTotalContent.GetAt( nFields + nRow * nColumns ) );
				}
			}
			//****************************************************************************//
	}
	}
}

void CDBManagerDlg::OnGridEditedRsgridctrlResult(long iRow, long iCol, LPCTSTR lpszData) 
{
	// TODO: Add your control notification handler code here
	
}

void CDBManagerDlg::OnAddtolist() 
{
		int iNowSel = m_ListCtrl.GetCurSel();
		CString csNowSel;
		m_ListCtrl.GetText( iNowSel, csNowSel );
		
		int iNowSel2 = m_ListCtrl2.GetCurSel();
		CString csNowSel2;
		m_ListCtrl2.GetText( iNowSel2, csNowSel2 );
		
		int iRow = m_RsGridView.GetCurrentRow();
		int iRow2 = m_RsGridView2.GetCurrentRow();
		
		CString m_csListCurrent  = m_RsGridView.GetCellText(iRow,0);
		CString m_csListCurrent2 = m_RsGridView2.GetCellText(iRow2,0);

		int nIndex=m_ListCorrespond.GetItemCount();

		int x_count=m_ListCorrespond.InsertItem(nIndex,csNowSel);//插入一新行
		
		m_ListCorrespond.SetItemText(x_count,1,m_csListCurrent);

		m_ListCorrespond.SetItemText(x_count,2,"<--");
		m_ListCorrespond.SetItemText(x_count,3,csNowSel2);

		m_ListCorrespond.SetItemText(x_count,4,m_csListCurrent2);

/*
	int iNowSel = m_ListCorrespond.GetCurrentRow();
	CString csNowSel,table_name;
	m_ListCtrl.GetText( iNowSel, csNowSel );
	field_info=csNowSel;
	int Length = field_info.GetLength();
*/	
	
}

void CDBManagerDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	m_ListCorrespond.DeleteItem(m_item);
}

void CDBManagerDlg::OnTempToWhole() 
{
	CString m_stempString;

//////////////////////////////////////////
	int nIndex = m_ListCorrespond.GetItemCount();
	
	for (int i=0; i<nIndex; i++)
	{
		CString ListTable1 = m_ListCorrespond.GetItemText(i, 0 ) ;
		CString ListField1 = m_ListCorrespond.GetItemText(i, 1 ) ;
		CString ListTable2 = m_ListCorrespond.GetItemText(i, 3 ) ;
		CString ListField2 = m_ListCorrespond.GetItemText(i, 4 ) ;

		ListTable1 = "[" + ListTable1 + "A1:IV65536]";
		ListField1 = "[" + ListField1 + "]";
		ListTable2 = "[" + ListTable2 + "A1:IV65536]";
		ListField2 = "[" + ListField2 + "]";


//	m_stempString.Format(" SELECT %s.[用户号码],%s.%s  FROM %s,%s WHERE %s.[用户号码] = %s.[用户号码] ", csNowSel,csNowSel,ListContent2,csNowSel,m_sWholeSheet,m_sWholeSheet,csNowSel);
	m_stempString.Format("SELECT %s.[用户号码] ,%s.%s FROM %s,%s  WHERE %s.[UIM卡号] = %s.[用户号码]",ListTable2,ListTable2,ListField2,ListTable2,ListTable1,ListTable1,ListTable2);
	CDynamicBulkSet * TempSet;

	CODBCFieldInfo info;
	TempSet = new CDynamicBulkSet( &m_Database );
	TempSet->Open(CRecordset::snapshot, m_stempString,CRecordset::readOnly | CRecordset::useMultiRowFetch);
	while(!TempSet->IsEOF())
	{
		int nColumns = TempSet->GetODBCFieldCount();
		int nRowsFetched = TempSet->GetRowsFetched();
		long* rgLength;
		LPSTR rgData;
		CString strData;
		// for each column, retrieve the field name and
		// insert the field name in the header
		CStringArray Array1, Array2;
		for (int nField = 0; nField < nColumns; nField++)
		{
			TempSet->GetODBCFieldInfo(nField, info);

⌨️ 快捷键说明

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