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

📄 dba_depclass.cpp

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

#include "stdafx.h"
#include "eq_manager_sys.h"
#include "DBA_DepClass.h"
#include "eq_manager_sysDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDBA_DepClass dialog


CDBA_DepClass::CDBA_DepClass(CWnd* pParent /*=NULL*/)
	: CDialog(CDBA_DepClass::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDBA_DepClass)
	m_Id = _T("");
	m_Name = _T("");
	//}}AFX_DATA_INIT
}


void CDBA_DepClass::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDBA_DepClass)
	DDX_Control(pDX, IDC_COMBO_Name, m_Combo_Name);
	DDX_Control(pDX, IDC_COMBO_Id, m_Combo_Id);
	DDX_CBString(pDX, IDC_COMBO_Id, m_Id);
	DDX_CBString(pDX, IDC_COMBO_Name, m_Name);
	//}}AFX_DATA_MAP
}


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

/////////////////////////////////////////////////////////////////////////////
// CDBA_DepClass message handlers

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

void CDBA_DepClass::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

	InitCtrlData();
}

void CDBA_DepClass::InitCtrlData()
{
	CRecordset rs(&m_db);
	rs.Open(CRecordset::dynaset,"select * from eq_class");

	m_Combo_Id.ResetContent();
	while(!rs.IsEOF())
	{
		CString class_id,class_name;
		rs.GetFieldValue((short)0,class_id);
		rs.GetFieldValue((short)1,class_name);
		m_Combo_Id.AddString(class_id);
		m_Combo_Name.AddString(class_name);
		rs.MoveNext();
	}
}

void CDBA_DepClass::OnBUTTONInsert() 
{
	// TODO: Add your control notification handler code here
	TRY
	{
		CString sql;
		CString Name[50];
		CString Id[50];
		int count=0,i;

		UpdateData(TRUE);
		if(m_Id!="")
		{
			if(m_Name!="")
			{
				CRecordset rs(&m_db);
				rs.Open(CRecordset::dynaset,"select * from eq_class");
				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_Id==Id[i])
					{
						MessageBox("不能插入重复ID!");
						return;
					}
					if(m_Name==Name[i])
					{
						MessageBox("不能插入重复Name!");
						return;
					}
				}

				sql.Format("Insert into eq_class values('%s','%s',0,0)",m_Id,m_Name);									
				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_DepClass::OnSelchangeCOMBOId() 
{
	// TODO: Add your control notification handler code here
	CString sql,Id;

	m_Combo_Id.GetLBText(m_Combo_Id.GetCurSel(),Id);
	sql.Format("select eq_class_name from eq_class where eq_class_id = '%s'",Id);
	m_Id = Id;
	CRecordset rs(&m_db);
	rs.Open(CRecordset::dynaset,sql);

	while(!rs.IsEOF())
	{
		CString class_name;
		rs.GetFieldValue((short)0,class_name);
		m_Name=class_name;
		rs.MoveNext();
	}
	rs.Close();
	UpdateData(FALSE);
}

void CDBA_DepClass::OnSelchangeCOMBOName() 
{
	// TODO: Add your control notification handler code here
	CString sql,Name;

	m_Combo_Name.GetLBText(m_Combo_Name.GetCurSel(),Name);
	CRecordset rs(&m_db);
	sql.Format("select eq_class_id from eq_class where eq_class_name = '%s'",Name);
	m_Name = Name;
	rs.Open(CRecordset::dynaset,sql);

	while(!rs.IsEOF())
	{
		CString class_id;
		rs.GetFieldValue((short)0,class_id);
		m_Id=class_id;
		rs.MoveNext();
	}
	rs.Close();
	UpdateData(FALSE);
}

void CDBA_DepClass::OnBUTTONDelete() 
{
	// TODO: Add your control notification handler code here
	CString sql;

	TRY
	{
		sql.Format("Delete eq_class where eq_class_Id = '%s'",m_Id);							
		TRACE(sql);
		m_db.ExecuteSQL(sql);

		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_DepClass::OnBUTTONModify() 
{
	// TODO: Add your control notification handler code here
	CString mysql;
	//CEq_manager_sysDlg dlg;

	UpdateData(TRUE);
	TRY
	{
		mysql.Format("Update eq_class set eq_class_Name = '%s' where eq_class_Id = '%s'",m_Name,m_Id);							
		TRACE(mysql);
		m_db.ExecuteSQL(mysql);

		MessageBox("更新成功!");
		//dlg.ConnectDB();
	}
	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_DepClass::OnOK() 
{
	// TODO: Add extra validation here
	m_db.Close();
	CDialog::OnOK();
}

⌨️ 快捷键说明

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