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

📄 attrdlg.cpp

📁 用C++写的数据库软件
💻 CPP
字号:
// AttrDlg.cpp : implementation file
//

#include "stdafx.h"
#include "fksqxt.h"
#include "AttrDlg.h"
#include "InsertAttrDlg.h"

#include "ShowStringDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAttrDlg dialog


CAttrDlg::CAttrDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAttrDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAttrDlg)
	m_Radio_sort = 2;
	m_comboCXTYPE = -1;
	m_comboLeiXing = -1;
	m_ComboRMMC = -1;
	//}}AFX_DATA_INIT
	m_isAsc = true;
	m_nSortedCol = 0;
}


void CAttrDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAttrDlg)
	DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
	DDX_Radio(pDX, IDC_RADIO_BH, m_Radio_sort);
	DDX_CBIndex(pDX, IDC_COMBO_CXTYPE, m_comboCXTYPE);
	DDX_CBIndex(pDX, IDC_COMBO_CXTYPE2, m_comboLeiXing);
	DDX_CBIndex(pDX, IDC_COMBO_CXRMMC, m_ComboRMMC);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAttrDlg, CDialog)
	//{{AFX_MSG_MAP(CAttrDlg)
	ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, OnColumnclickList1)
	ON_BN_CLICKED(IDC_ChaXun, OnChaXun)
	ON_BN_CLICKED(IDC_Btn_InsertRow, OnBtnInsertRow)
	ON_BN_CLICKED(IDC_BtnDeleteRow, OnBtnDeleteRow)
	ON_BN_CLICKED(IDC_SubmitSave, OnSubmitSave)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
	ON_NOTIFY(HDN_ITEMCHANGING, IDC_LIST1, OnItemchangingList1)
	ON_BN_CLICKED(IDC_ChaXun2, OnChaXun2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAttrDlg message handlers


BOOL CAttrDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	// 连接数据库
	m_encaAdo.InitADOConn("","", "", "dbo.FKSQXT"); 

	// 查询记录
	m_rs = m_encaAdo.GetRecordSet("SELECT * FROM ATTRIBUTE"); 

	
	m_ListCtrl.ModifyStyle(0,LVS_REPORT);
	m_ListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

	//title

	m_ListCtrl.InsertColumn(1,"属性代码",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(2,"属性名称",LVCFMT_LEFT,110);
	m_ListCtrl.InsertColumn(3,"类型",LVCFMT_LEFT,70);
	m_ListCtrl.InsertColumn(4,"长度",LVCFMT_LEFT,70);
	m_ListCtrl.InsertColumn(5,"小数位数",LVCFMT_LEFT,70);
	m_ListCtrl.InsertColumn(6,"首增加子系统名称",LVCFMT_LEFT,150);
	m_ListCtrl.InsertColumn(7,"增加人员",LVCFMT_LEFT,90);
	m_ListCtrl.InsertColumn(8,"增加日期",LVCFMT_LEFT,120);

	UpdateData();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAttrDlg::UpdateData()
{
	int a=-1;
	while(!m_rs->adoEOF)
	{
		a++ ;
		m_rs->MoveNext();
	}

	if(a < 0)
	{
		return;
	}
	m_ListCtrl.DeleteAllItems();
	_variant_t var;
	int iCount = 0;
	m_rs->MoveFirst();
	while( !m_rs->adoEOF )
	{
		if(iCount >= m_ListCtrl.GetItemCount())
		{
			m_ListCtrl.InsertItem(iCount,"");
		}
		var = m_rs->GetCollect("ATTR");//属性代码
		if(var.vt != VT_NULL)
		{
				m_ListCtrl.SetItemText(iCount,0,(LPCSTR)_bstr_t(var));
		}

		var = m_rs->GetCollect("ATTRMC");//属性名称
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,1,(LPCSTR)_bstr_t(var));
		}

		var = m_rs->GetCollect("TYPE");//类型
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,2,(LPCSTR)_bstr_t(var));
		}
		
		var = m_rs->GetCollect("LEN");//长度
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,3,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("DEC");//小数位数
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,4,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("ZXTMC");//首增加子系统名称
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,5,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("RMMC_SZ");//增加人员
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,6,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("NYR_SZ");//增加日期
		if(var.vt!= VT_NULL)
		{
			CString NYR = (LPCSTR)_bstr_t(var);
			NYR =NYR.Mid(0,NYR.Find(' ',0));
	//		MessageBox(NYR);
			m_ListCtrl.SetItemText(iCount,7,LPCSTR(NYR));
			//m_ListCtrl.SetItemText(iCount,7,(LPCSTR)_bstr_t(var));
		}
		m_ListCtrl.SetItemData(iCount,iCount);
		m_rs->MoveNext();
		iCount++;
	}
}

void CAttrDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	if(pNMListView->iSubItem  == m_nSortedCol)
	{
		m_isAsc = !m_isAsc;
	}
	else
	{
		m_isAsc = true;
	}
	m_nSortedCol = pNMListView->iSubItem;
	for(int i=0;i<m_ListCtrl.GetItemCount();i++)
	{
		m_ListCtrl.SetItemData(i,i);
	}
	m_ListCtrl.SortItems(CompareFunc,(LPARAM)this);
	*pResult = 0;
}

void CAttrDlg::OnChaXun() 
{
	// TODO: Add your control notification handler code here
	CDialog::UpdateData(TRUE);
	if(m_Radio_sort == 0 || m_Radio_sort == 1)
	{
		if(m_nSortedCol == m_Radio_sort)
		{
			m_isAsc = !m_isAsc;
		}
		else
		{
			m_isAsc = true;
			m_nSortedCol = m_Radio_sort;
		}
		for(int i=0;i<m_ListCtrl.GetItemCount();i++)
		{
			m_ListCtrl.SetItemData(i,i);
		}
		m_ListCtrl.SortItems(CompareFunc,(LPARAM)this);
	}
	else
	{
		m_ListCtrl.DeleteAllItems();
		m_rs = m_encaAdo.GetRecordSet("select * from ATTRIBUTE");
		UpdateData();
	}

}


int CALLBACK CAttrDlg::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	CAttrDlg *pDlg = (CAttrDlg*)lParamSort;
	CString str1 = pDlg->m_ListCtrl.GetItemText(lParam1,pDlg->m_nSortedCol);
	CString str2 = pDlg->m_ListCtrl.GetItemText(lParam2,pDlg->m_nSortedCol);
	if(pDlg->m_isAsc)
	{
		return strcmp(str2,str1);
	}
	else
	{
		return -strcmp(str2,str1);
	}
}

void CAttrDlg::OnBtnInsertRow() 
{
	// TODO: Add your control notification handler code here
	CInsertAttrDlg dlg;
	dlg.DoModal();
	UpdateData();
}

void CAttrDlg::OnBtnDeleteRow() 
{
	// TODO: Add your control notification handler code here
	if(m_ListCtrl.GetSelectionMark() == -1)
	{
		MessageBox("没选择任何行");
	}
/*	if(CompareStr("123","123") == 0 &&
		CompareStr("123","124") < 0 )
	{
		MessageBox("function CompareStr is correct!");
	}
	else
	{
		MessageBox("function CompareStr is not correct!");
	}
	return ;
*/	
	if(MessageBox("\t是否删除?","确认删除",MB_YESNO) != IDYES)
	{
		return;
	}
	
	CString attr = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),0);
	CString strsql;
	strsql.Format("select SYSTEM from ATTRIBUTE where ATTR = '%s'",attr);
	m_rs = m_encaAdo.GetRecordSet(LPCSTR(strsql)); 
	_variant_t var = m_rs->GetCollect("SYSTEM");
	CString strYes = "是";
	CString strDB = "";
	if(var.vt != VT_NULL)
	{
		strDB = LPCSTR(_bstr_t(var));
	}
	//if(!CompareStr(strYes,strDB))
	if(!strYes.Compare(strDB))
	{
		MessageBox("该属性已经在表中存在,不能删除.");
	}
	else
	{
		CString strsql2 = "";
		strsql2.Format("delete from ATTRIBUTE where ATTR = '%s'",attr);
		if(m_encaAdo.ExecuteSQL(LPCSTR(strsql2)))
		{
			MessageBox("删除成功!");
			UpdateData();
		}
		else
		{
			MessageBox("删除失败!");
		}
	}
}

void CAttrDlg::OnSubmitSave() 
{
	// TODO: Add your control notification handler code here
	this->EndDialog(0);
}

int CAttrDlg::CompareStr(CString str1, CString str2)
{
	int len1 = str1.GetLength();
	int len2 = str2.GetLength();
	for(int i=0;i<len1 && i<len2;i++)
	{
		if(str1.GetAt(i) != str2.GetAt(i))
		{
			return str1.GetAt(i) - str2.GetAt(i);
		}
	}
	return len1 - len2;
}

void CAttrDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
//	MessageBox("OnItemdblclickList1");

	CString strATTR = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),0);
	CInsertAttrDlg dlg;
	dlg.readATTR(strATTR);
	dlg.DoModal();
	UpdateData();
	*pResult = 0;
}

void CAttrDlg::OnItemchangingList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	// TODO: Add your control notification handler code here
//	MessageBox("OnItemchangingList1");
	*pResult = 0;
}

void CAttrDlg::OnChaXun2() 
{
	CDialog::UpdateData(TRUE);
/*	CString strsql;
	char array[8][10] = {"char",
		"nchar",
		"nvarchar",
		"int",
		"datetime",
		"numeric",
		"float",
		"binary"};
	if(m_comboLeiXing != -1)
	{
		strsql.Format("select * from ATTRIBUTE where TYPE like '%%%s%%'",array[m_comboLeiXing]);
	//	MessageBox(strsql);
		m_ListCtrl.DeleteAllItems();
		m_rs = m_encaAdo.GetRecordSet(LPCSTR(strsql));
		UpdateData();
	}
*/	/*char
	nchar
nvarchar
int
datetime
numeric
float
binary
*/	
/*陆拥军
闫兴安
张鹏
宋超*/
	CString strsql;
	char array[4][10] = {"陆拥军",
		"闫兴安",
		"张鹏",
		"宋超"
	};
	if(m_ComboRMMC != -1)
	{
		strsql.Format("select * from ATTRIBUTE where RMMC_SZ like '%%%s%%'",array[m_ComboRMMC]);
		CShowStringDlg dlg;
		dlg.SetString(strsql);
	//	dlg.DoModal();
	//	MessageBox(strsql);
		m_ListCtrl.DeleteAllItems();
		m_rs = m_encaAdo.GetRecordSet(LPCSTR(strsql));
		UpdateData();
	}
}

⌨️ 快捷键说明

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