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

📄 daoworkdlg.cpp

📁 数据库程序的作业
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	if(m_tree.GetParentItem (item_sel) == NULL)
	{
		if(PreSelected == item_sel)
			return;				 
		PreSelected = item_sel;

		m_list.DeleteAllItems ();

		int nCount = m_list.GetHeaderCtrl ()->GetItemCount ();
		for(i=0; i<nCount; i++)
		{
			m_list.DeleteColumn (0);
		}
		

		CString str1 = "Select * from [" + m_tree.GetItemText (item_sel) + "]";

		CDaoRecordset m_MyRS(&m_MyDatabase);
		m_MyRS.Open(dbOpenDynaset, str1);
		m_MyRS.MoveFirst();
		int nFieldCount = m_MyRS.GetFieldCount();
		for(i=0; i<nFieldCount; i++)
		{
			CDaoFieldInfo FieldInfo;
			m_MyRS.GetFieldInfo(i, FieldInfo, AFX_DAO_ALL_INFO);

			LV_COLUMN lvcol;
			lvcol.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
			lvcol.fmt = LVCFMT_LEFT;
			lvcol.cx = 70;
			lvcol.pszText = (char *)(LPCTSTR)FieldInfo.m_strName ;
			lvcol.iSubItem = i;

			m_list.InsertColumn (i, &lvcol);
		}

		int index = -1;  //插入item后的索引号
		while(!m_MyRS.IsEOF())
		{
			index += 1;
			CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
			LV_ITEM lvitem;
			lvitem.iItem = index;
			lvitem.iSubItem = 0;
			lvitem.mask = LVIF_TEXT;
			lvitem.pszText = (char *)(LPCTSTR)strVar;
			
			m_list.InsertItem (&lvitem);

			for(i=0; i<nFieldCount; i++)
			{
				strVar = strVARIANT(m_MyRS.GetFieldValue(i));
				m_list.SetItemText (index, i, strVar);
			}
			m_MyRS.MoveNext();
		}
		m_MyRS.Close();
	}
	else
	{
		item_sel = m_tree.GetParentItem (item_sel);
		if(PreSelected == item_sel)
			return;				 
		PreSelected = item_sel;

		m_list.DeleteAllItems ();

		int nCount = m_list.GetHeaderCtrl ()->GetItemCount ();
		for(i=0; i<nCount; i++)
		{
			m_list.DeleteColumn (0);
		}
		

		CString str1 = "Select * from [" + m_tree.GetItemText (item_sel) + "]";

		CDaoRecordset m_MyRS(&m_MyDatabase);
		m_MyRS.Open(dbOpenDynaset, str1);
		m_MyRS.MoveFirst();
		int nFieldCount = m_MyRS.GetFieldCount();
		for(i=0; i<nFieldCount; i++)
		{
			CDaoFieldInfo FieldInfo;
			m_MyRS.GetFieldInfo(i, FieldInfo, AFX_DAO_ALL_INFO);

			LV_COLUMN lvcol;
			lvcol.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
			lvcol.fmt = LVCFMT_LEFT;
			lvcol.cx = 70;
			lvcol.pszText = (char *)(LPCTSTR)FieldInfo.m_strName ;
			lvcol.iSubItem = i;

			m_list.InsertColumn (i, &lvcol);
		}

		int index = -1;  //插入item后的索引号
		while(!m_MyRS.IsEOF())
		{
			index += 1;
			CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
			LV_ITEM lvitem;
			lvitem.iItem = index;
			lvitem.iSubItem = 0;
			lvitem.mask = LVIF_TEXT;
			lvitem.pszText = (char *)(LPCTSTR)strVar;
			
			m_list.InsertItem (&lvitem);

			for(i=0; i<nFieldCount; i++)
			{
				strVar = strVARIANT(m_MyRS.GetFieldValue(i));
				m_list.SetItemText (index, i, strVar);
			}
			m_MyRS.MoveNext();
		}
		m_MyRS.Close();		 
	}										
	*pResult = 0;
}

void CDaoWorkDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int iPage = m_tab1.GetCurSel();
	switch(iPage)
	{
	case 0:
		m_tree.ShowWindow(SW_SHOW);

		m_customerunits.ShowWindow(SW_HIDE);
		GetDlgItem(IDC_BUTTON_CUSTOMERUNITS)->ShowWindow(SW_HIDE);

		m_customer.ShowWindow(SW_HIDE);
		GetDlgItem(IDC_BUTTON_CUSTOMER)->ShowWindow(SW_HIDE);

		m_sample1.ShowWindow(SW_HIDE);
		GetDlgItem(IDC_BUTTON_SAMPLE1)->ShowWindow(SW_HIDE);

		m_sample2.ShowWindow(SW_HIDE);
		m_instrument.ShowWindow(SW_HIDE);
		GetDlgItem(IDC_BUTTON_SAMPLE2INSTRUMENT)->ShowWindow(SW_HIDE);

		break;
	case 1:
		/*
		if(bError)
		{
			if(AfxMessageBox("你当前连接的数据库不是某实验室的管理信息!\n是否需要人工连接到数据库?", MB_YESNO) == IDYES)
			{
				if(!OnDatabaseLink())
				{
					m_tab1.SetCurSel(0);
					break;
				}
			}
			else
			{
				m_tab1.SetCurSel(0);
				break;
			}

		}
		   */
		m_tree.ShowWindow(SW_HIDE);


		m_customerunits.ShowWindow(SW_SHOW);
		GetDlgItem(IDC_BUTTON_CUSTOMERUNITS)->ShowWindow(SW_SHOW);

		m_customer.ShowWindow(SW_SHOW);
		GetDlgItem(IDC_BUTTON_CUSTOMER)->ShowWindow(SW_SHOW);

		m_sample1.ShowWindow(SW_SHOW);
		GetDlgItem(IDC_BUTTON_SAMPLE1)->ShowWindow(SW_SHOW);

		m_sample2.ShowWindow(SW_SHOW);
		m_instrument.ShowWindow(SW_SHOW);
		GetDlgItem(IDC_BUTTON_SAMPLE2INSTRUMENT)->ShowWindow(SW_SHOW);

		break;
	}
	*pResult = 0;
}

void CDaoWorkDlg::OnSelchangeTab2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int iPage = m_tab2.GetCurSel();
	switch(iPage)
	{
	case 0:
		m_list.ShowWindow(SW_SHOW);
		GetDlgItem(IDC_STATIC_DRAW)->ShowWindow(SW_HIDE);
		bDraw = FALSE;
		break;
	case 1:
		/*
		if(bError)
		{
			if(AfxMessageBox("你当前连接的数据库不是某实验室的管理信息!\n是否需要人工连接到数据库?", MB_YESNO) == IDYES)
			{
				if(!OnDatabaseLink())
				{
					m_tab2.SetCurSel(0);
					break;
				}
			}
			else
			{
				m_tab2.SetCurSel(0);
				break;
			}

		}
		*/
		m_list.ShowWindow(SW_HIDE);
		GetDlgItem(IDC_STATIC_DRAW)->ShowWindow(SW_SHOW);
		bDraw = TRUE;
		break;
	}
	
	*pResult = 0;
}

BOOL CDaoWorkDlg::OnDatabaseLink() 
{
	// TODO: Add your command handler code here
	CFileDialog openfiledlg(TRUE,"mdb","*.mdb",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"数据库文件(*.mdb)|*.mdb|All Files(*.*)|*.*||");
	openfiledlg.m_ofn.lpstrTitle = "选择数据库(*.mdb)";
	
	if(openfiledlg.DoModal () == IDOK)
	{
		/*	   
		
		if(x != NULL)
			delete [] x;
		if(x != NULL)
			delete [] y;
		
		m_length = 0;
		int i;
		for(i=m_sample2.GetCount(); i>0; i++)
		{
			m_sample2.DeleteString(i);	 
		}
		
		for(i=m_sample1.GetCount(); i>0; i++)
		{
			m_sample1.DeleteString(i);	  	
		}
		for(i=m_instrument.GetCount(); i>0; i++)
		{
			m_instrument.DeleteString(i);
		}
		
		for(i=m_customerunits.GetCount(); i>0; i++)
		{
			m_customerunits.DeleteString(i);
		}
		
		for(i=m_customer.GetCount(); i>0; i++)
		{
			m_customer.DeleteString(i);
		}
			
		   */
		m_filepathname = openfiledlg.GetPathName ();
		//InitCtrl();
		Init();
	}
	else
		return FALSE;
	return TRUE;
}

BOOL CDaoWorkDlg::Init()
{

	if(!m_filepathname.IsEmpty ())
	{
		int i;
		CString str;
		TRY
		{
			if(m_MyDatabase.IsOpen())
			{
				/*关闭数据库前必须先删除依附控件的数据*/
				bError = IsError(m_filepathname);
				if(bError)
				{
					m_tree.ShowWindow(SW_SHOW);
					m_list.ShowWindow(SW_SHOW);
					GetDlgItem(IDC_STATIC_DRAW)->ShowWindow(SW_HIDE);
					m_tab1.SetCurSel(0);
					m_tab2.SetCurSel(0);
				}
				
				m_tree.DeleteAllItems();
				
				int nColumnCount = m_list.GetHeaderCtrl ()->GetItemCount ();				
				for(i=0; i<nColumnCount; i++)
					m_list.DeleteColumn(0);
				m_list.DeleteAllItems();

				m_MyDatabase.Close();
			}
			
			m_MyDatabase.Open (m_filepathname);
		}
		CATCH (CDaoException, pEx)
		{
			//pEx->ReportError();
			CString str = pEx->m_pErrorInfo->m_strDescription;
			str = str + "\n是否需要人工连接到数据库?";
			if(AfxMessageBox(str, MB_YESNO) == IDYES)
			{
				if(OnDatabaseLink())
					return TRUE;
				else
					return FALSE;
			}
			else
				return FALSE;
		}
		END_CATCH
		//;		  	
		
		//m_tree.SetFocus();
		int nTableCount = m_MyDatabase.GetTableDefCount ();
		for(i=0; i<nTableCount; i++)
		{
			CDaoTableDefInfo TableInfo;
			m_MyDatabase.GetTableDefInfo (i, TableInfo, AFX_DAO_ALL_INFO);
			if(TableInfo.m_lAttributes != 0)
				continue; //过滤系统表

			//把表的名称显示在 Tree Control 中
			TV_ITEM item_table;
			item_table.mask = TVIF_TEXT;			
			item_table.pszText = (char *)(LPCTSTR)TableInfo.m_strName ;
			str = item_table.pszText;

			if(str == "客户表")
			{
				//AfxMessageBox("客户表");	 				
				CString str1 = "SELECT [客户表].[单位] FROM 客户表";

				CDaoRecordset m_MyRS(&m_MyDatabase);
				m_MyRS.Open(dbOpenDynaset, str1);
				m_MyRS.MoveFirst();
				/*
				int nFieldCount = m_MyRS.GetFieldCount();
				for(i=0; i<nFieldCount; i++)
				{
					CDaoFieldInfo FieldInfo;
					m_MyRS.GetFieldInfo(i, FieldInfo, AFX_DAO_ALL_INFO);
					
					LV_COLUMN lvcol;
					lvcol.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
					lvcol.fmt = LVCFMT_LEFT;
					lvcol.cx = 70;
					lvcol.pszText = (char *)(LPCTSTR)FieldInfo.m_strName ;
					lvcol.iSubItem = i;
					
					m_list.InsertColumn (i, &lvcol);
				}
				*/
				
				int index = -1;  //插入item后的索引号
				while(!m_MyRS.IsEOF())
				{
					index += 1;
					CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
					/*
					LV_ITEM lvitem;
					lvitem.iItem = index;
					lvitem.iSubItem = 0;
					lvitem.mask = LVIF_TEXT;
					lvitem.pszText = (char *)(LPCTSTR)strVar;
					
					m_list.InsertItem (&lvitem);				
					  
					for(i=0; i<nFieldCount; i++)
					{
						strVar = strVARIANT(m_MyRS.GetFieldValue(i));
						m_list.SetItemText (index, i, strVar);
					}
					*/
					int Flag = -1;
					int countComboBox = m_customerunits.GetCount();
					CString str2;
					for(int x=0; x<countComboBox; x++)
					{
						m_customerunits.GetLBText(x, str2);
						if(strVar == str2)
							Flag ++;
					}
					if(Flag == -1)
						m_customerunits.AddString(strVar);


					m_MyRS.MoveNext();
				}
				m_MyRS.Close();
			}

			if(str == "客户表")
			{
				CString str1 = "SELECT [客户表].[姓名] FROM 客户表;";
				//CString str1 = "SELECT 样品表.样品编号, 样品表.样品类型	FROM 样品表";

				CDaoRecordset m_MyRS(&m_MyDatabase);
				m_MyRS.Open(dbOpenDynaset, str1);
				m_MyRS.MoveFirst();
								
				int index = -1;  //插入item后的索引号
				while(!m_MyRS.IsEOF())
				{
					index += 1;
					CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
			
					int Flag = -1;
					int countComboBox = m_customer.GetCount();
					CString str2;
					for(int x=0; x<countComboBox; x++)
					{
						m_customer.GetLBText(x, str2);
						if(strVar == str2)
							Flag ++;
					}

					if(Flag == -1)
						m_customer.AddString(strVar);  
					m_MyRS.MoveNext();
				}
				m_MyRS.Close();
			}

			
			if(str == "样品表")
			{
				CString str1 = "SELECT 样品表.样品编号, 样品表.样品类型	FROM 样品表";
				
				CDaoRecordset m_MyRS(&m_MyDatabase);
				m_MyRS.Open(dbOpenDynaset, str1);
				m_MyRS.MoveFirst();
								
				int index = -1;  //插入item后的索引号
				while(!m_MyRS.IsEOF())
				{
					index += 1;
					CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
					CString str2 = strVARIANT(m_MyRS.GetFieldValue(1));
					strVar = strVar + " " + str2;
			
					/*
					int Flag = -1;
					int countComboBox = m_customer.GetCount();
					CString str2;
					for(int x=0; x<countComboBox; x++)
					{
						m_customer.GetLBText(x, str2);
						if(strVar == str2)
							Flag ++;
					}
					if(Flag == -1)
						m_customer.AddString(strVar);  
					*/					 
					
					m_sample1.AddString(strVar);
					m_sample2.AddString(strVar);
					m_MyRS.MoveNext();
				}
				m_MyRS.Close();
			}	  
			
			
			if(str == "仪器表")
			{
				CString str1 = "SELECT * FROM [仪器表]";
				
				CDaoRecordset m_MyRS(&m_MyDatabase);
				m_MyRS.Open(dbOpenDynaset, str1);
				m_MyRS.MoveFirst();
								
				int index = -1;  //插入item后的索引号
				while(!m_MyRS.IsEOF())
				{
					index += 1;
					CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
					CString str2 = strVARIANT(m_MyRS.GetFieldValue(1));
					strVar = strVar + " " + str2;
			
					/*

					int Flag = -1;
					int countComboBox = m_customer.GetCount();
					CString str2;
					for(int x=0; x<countComboBox; x++)
					{
						m_customer.GetLBText(x, str2);
						if(strVar == str2)
							Flag ++;
					}
					if(Flag == -1)
						m_customer.AddString(strVar);  
					
					*/					 
					
					m_instrument.AddString(strVar);
					m_MyRS.MoveNext();
				}
				m_MyRS.Close();
			}

			 
			if(str == "实验数据表")
			{
				//AfxMessageBox("客户表");	 				
				CString str1 = "SELECT [实验数据表].[X], [实验数据表].[Y] FROM [实验数据表]";
				CDaoRecordset m_MyRS(&m_MyDatabase);
				m_MyRS.Open(dbOpenDynaset, str1);

				m_length = 0;
				m_MyRS.MoveFirst();
				while(!m_MyRS.IsEOF())
				{ 
					m_length++;
					m_MyRS.MoveNext();
				}

⌨️ 快捷键说明

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