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

📄 dba_company.cpp

📁 自己编的设备管理系统
💻 CPP
字号:
// DBA_Company.cpp : implementation file
//

#include "stdafx.h"
#include "eq_manager_sys.h"
#include "DBA_Company.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDBA_Company dialog


CDBA_Company::CDBA_Company(CWnd* pParent /*=NULL*/)
	: CDialog(CDBA_Company::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDBA_Company)
	m_com_director = _T("");
	m_com_id = _T("");
	m_com_name = _T("");
	//}}AFX_DATA_INIT
}

BOOL CDBA_Company::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	ConnectDB();
    Combo_class();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDBA_Company::ConnectDB()//连接数据库函数
{
	TRY
	{
		 m_db.OpenEx("DSN=ORADB;UID=eq_system;PWD=eq_system",CDatabase::noOdbcDialog);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox("问题出在连接数据库");
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}

void CDBA_Company::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDBA_Company)
	DDX_Control(pDX, IDC_COMBO_Id, m_combo_id);
	DDX_Control(pDX, IDC_COMBO_Name, m_combo_name);
	DDX_Control(pDX, IDC_COMBO_Dirctor, m_combo_director);
	DDX_CBString(pDX, IDC_COMBO_Dirctor, m_com_director);
	DDX_CBString(pDX, IDC_COMBO_Id, m_com_id);
	DDX_CBString(pDX, IDC_COMBO_Name, m_com_name);
	//}}AFX_DATA_MAP
}

void CDBA_Company::Combo_class()
{
    m_combo_id.ResetContent();
	m_combo_name.ResetContent();
    m_combo_director.ResetContent();
	TRY
	{
		CRecordset rs(&m_db);
		rs.Open(CRecordset::dynaset,"select * from dep_info");
		while(!rs.IsEOF())
		{
			CString str_id;
			CString str_name;
			CString str_director;
			rs.GetFieldValue((short)0,str_id);	
			rs.GetFieldValue((short)1,str_name);
			rs.GetFieldValue((short)2,str_director);
			m_combo_id.AddString(str_id);
			m_combo_name.AddString(str_name);			
			m_combo_director.AddString(str_director);
			rs.MoveNext();
		}
		rs.Close();
		m_combo_id.SetCurSel(0);
		m_combo_name.SetCurSel(0);
		m_combo_director.SetCurSel(0);
		UpdateData(FALSE);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox("列表更新数据错误");
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		AfxMessageBox("xx");
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		AfxMessageBox("xxx");
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}


BEGIN_MESSAGE_MAP(CDBA_Company, CDialog)
	//{{AFX_MSG_MAP(CDBA_Company)
	ON_BN_CLICKED(IDC_BUTTON_Insert, OnBUTTONInsert)
	ON_BN_CLICKED(IDC_BUTTON_Modify, OnBUTTONModify)
	ON_CBN_SELCHANGE(IDC_COMBO_Id, OnSelchangeCOMBOId)
	ON_BN_CLICKED(IDC_BUTTON_Delete, OnBUTTONDelete)
	ON_CBN_SELCHANGE(IDC_COMBO_Name, OnSelchangeCOMBOName)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDBA_Company message handlers

void CDBA_Company::OnBUTTONInsert() 
{
	// TODO: Add your control notification handler code here
	m_combo_id.GetWindowText(m_com_id);
    m_combo_name.GetWindowText(m_com_name);
    m_combo_director.GetWindowText(m_com_director);

	bool flag = FALSE;

	/*

	//部门编号,部门名称不能相同

	if(m_com_director == "")
	{
		MessageBox("请输入部门经理信息!", "提示信息");
	}
	else
	{
		TRY
		{
			//CRecordset rs(&m_db);
			CString sql;

			sql.Format("Insert into dep_info values('%s', '%s', '%s', 0, 0.00)", 
						m_com_id, m_com_name, m_com_director);		
			TRACE(sql);
			m_db.ExecuteSQL(sql);
			flag = TRUE;
		}
		CATCH(CDBException,ex)
		{
			AfxMessageBox("问题出在插入");
			AfxMessageBox(ex->m_strError);
			AfxMessageBox(ex->m_strStateNativeOrigin);
		}
		AND_CATCH(CMemoryException,pEx)
		{
			pEx->ReportError();
			AfxMessageBox("memory exception");
		}
		AND_CATCH(CException,e)
		{
			TCHAR szError[100];
			e->GetErrorMessage(szError,100);
			AfxMessageBox(szError);
		}
		END_CATCH

		if(flag == TRUE)
		{
			Combo_class();
			MessageBox("插入成功!", "提示信息");
		}
	}*/

	TRY
	{
		CString sql;
		CString Name[50];
		CString Id[50];
		int count=0,i;

		UpdateData(TRUE);
		if(m_com_id!="")
		{
			if(m_com_name!="")
			{
				CRecordset rs(&m_db);
				rs.Open(CRecordset::dynaset,"select * from dep_info");
				while(!rs.IsEOF())
				{
					rs.GetFieldValue((short)0,Id[count]);
					rs.GetFieldValue((short)1,Name[count]);
					count++;
					rs.MoveNext();
				}
				for(i=0;i<count;i++)
				{
					if(m_com_id==Id[i])
					{
						MessageBox("不能插入重复ID!");
						return;
					}
					if(m_com_name==Name[i])
					{
						MessageBox("不能插入重复Name!");
						return;
					}
				}

				sql.Format("Insert into dep_info values('%s','%s','%s',0,0)",m_com_id,m_com_name, m_com_director);									
				TRACE(sql);
				m_db.ExecuteSQL(sql);
				MessageBox("插入成功!");
				//dlg.ConnectDB();
			}
			else
				MessageBox("部门名称不能为空!");
		}
		else
			MessageBox("部门编号不能为空!");
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox("插入操作失败!");
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}

void CDBA_Company::OnBUTTONModify()
{
	// TODO: Add your control notification handler code here
	m_combo_id.GetWindowText(m_com_id);
    m_combo_name.GetWindowText(m_com_name);
    m_combo_director.GetWindowText(m_com_director);

	bool flag = FALSE;

	TRY
	{
		//CRecordset rs(&m_db);
		
		CString sql;
		sql.Format("Update dep_info set dep_name='%s', dep_manager='%s' where dep_id = '%s'", 
			       m_com_name, m_com_director, m_com_id);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		flag = TRUE;
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox("问题出在插入");
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH

	if(flag == TRUE)
	{
		Combo_class();
		MessageBox("修改成功!", "提示信息");
	}
}

void CDBA_Company::OnSelchangeCOMBOId()
{
	// TODO: Add your control notification handler code here
	//m_combo_name.ResetContent ();
	//m_combo_director.ResetContent ();
	CString S_Id;
	CString sql;
	CRecordset rs(&m_db);

	m_combo_id.GetLBText(m_combo_id.GetCurSel(), S_Id);
    sql.Format("Select * from dep_info where dep_id = '%s'", S_Id);
	rs.Open(CRecordset::dynaset,sql);
    m_com_id = S_Id;
	while(!rs.IsEOF())
	{
		CString str_id;
		CString str_name;
		CString str_director;
		rs.GetFieldValue((short)0,str_id);	
		rs.GetFieldValue((short)1,str_name);
		rs.GetFieldValue((short)2,str_director);
		if(str_id == m_com_id)
		{
			m_com_name = str_name;			
			m_com_director = str_director;
			break;
		}
		else
		{
			rs.MoveNext();
		}
		//MessageBox("出现严重错误!", "提示信息");
	}
	rs.Close();
	//m_combo_id.SetCurSel(0);
	//m_combo_name.SetCurSel(0);
	//m_combo_director.SetCurSel(0);
	UpdateData(FALSE);
}

//触发下拉莱单的事件
void CDBA_Company::OnSelchangeCOMBOName() 
{
	// TODO: Add your control notification handler code here
	//m_combo_name.ResetContent ();
	//m_combo_director.ResetContent ();
	CString S_Name;
	CString sql;
	CRecordset rs(&m_db);

	m_combo_name.GetLBText(m_combo_name.GetCurSel(), S_Name);
    sql.Format("Select * from dep_info where dep_name = '%s'", S_Name);
	rs.Open(CRecordset::dynaset,sql);
    m_com_name = S_Name;
	while(!rs.IsEOF())
	{
		CString str_id;
		CString str_name;
		CString str_director;
		rs.GetFieldValue((short)0,str_id);	
		rs.GetFieldValue((short)1,str_name);
		rs.GetFieldValue((short)2,str_director);
		if(str_name == m_com_name)
		{
			m_com_id = str_id;			
			m_com_director = str_director;
			break;
		}
		else
		{
			rs.MoveNext();
		}
	}
	rs.Close();
	UpdateData(FALSE);
	
}

//删除3个表的元组
void CDBA_Company::OnBUTTONDelete() 
{
	// TODO: Add your control notification handler code here
	if(::MessageBox(NULL,"是否删除信息?", "提示信息", MB_YESNO | MB_ICONQUESTION) == IDYES)
	{
		m_combo_id.GetWindowText(m_com_id);
		m_combo_name.GetWindowText(m_com_name);
		m_combo_director.GetWindowText(m_com_director);

		bool flag = FALSE;

		TRY
		{
			CString sql;
			sql.Format("Delete from eq_info where dep_id = '%s'", m_com_id);
			TRACE(sql);
			m_db.ExecuteSQL(sql);

			sql.Format("Delete from dep_info where dep_id = '%s'", m_com_id);
			TRACE(sql);
			m_db.ExecuteSQL(sql);
			flag = TRUE;
		}
		CATCH(CDBException,ex)
		{
			AfxMessageBox("问题出在插入");
			AfxMessageBox(ex->m_strError);
			AfxMessageBox(ex->m_strStateNativeOrigin);
		}
		AND_CATCH(CMemoryException,pEx)
		{
			pEx->ReportError();
			AfxMessageBox("memory exception");
		}
		AND_CATCH(CException,e)
		{
			TCHAR szError[100];
			e->GetErrorMessage(szError,100);
			AfxMessageBox(szError);
		}
		END_CATCH

		if(flag == TRUE)
		{
			Combo_class();
			m_com_id = "";
			m_com_name = "";
			m_com_director = "";
			UpdateData(FALSE);
			MessageBox("删除成功!", "提示信息");
		}
	}
	else
	{
		//未删除,自动返回
	}

    /*
	if(m_com_id == "" && m_com_name == "" && m_com_director == "")
	{
		MessageBox("请输入删除信息!", "提示信息");
	}
	else
	{
		Delete dlg;
		dlg.DoModal();
	}*/
}

⌨️ 快捷键说明

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