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

📄 formview2.cpp

📁 请在安装及运行时点击右键 用其中的管理员模式运行 否则可能无法正常使用 笔记本在安装后请在客户端 属性--网络中选择正确的网卡
💻 CPP
字号:
// FORMVIEW2.cpp : 实现文件
//

#include "stdafx.h"
#include "DBDesign.h"
#include "FORMVIEW2.h"
#include ".\formview2.h"


// CFORMVIEW2 对话框

IMPLEMENT_DYNAMIC(CFORMVIEW2, CDialog)
CFORMVIEW2::CFORMVIEW2(CWnd* pParent /*=NULL*/)
	: CDialog(CFORMVIEW2::IDD, pParent)
{
}

CFORMVIEW2::~CFORMVIEW2()
{
}

void CFORMVIEW2::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST1, m_list0);
	DDX_Control(pDX, IDC_LIST3, m_list1);
	DDX_Control(pDX, IDC_LIST4, m_list2);
}


BEGIN_MESSAGE_MAP(CFORMVIEW2, CDialog)
	ON_COMMAND(ID_32774, OnListMenu0)
	ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnNMRclickList1)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnLvnItemchangedList0)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST4, OnLvnItemchangedList2)
	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
END_MESSAGE_MAP()
// CFORMVIEW2 消息处理程序
BOOL CFORMVIEW2::OnInitDialog(void)
{
	BOOL bResult;
	bResult=CDialog::OnInitDialog();

	m_list0.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
	m_list0.InsertColumn(0,"编号",LVCFMT_LEFT,70);
	m_list0.InsertColumn(1,"姓名",LVCFMT_LEFT,150);
	m_list0.InsertColumn(2,"地址",LVCFMT_LEFT,300);

	m_list1.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
	m_list1.InsertColumn(0,"编号",LVCFMT_LEFT,30);
	m_list1.InsertColumn(1,"刊物名称",LVCFMT_LEFT,90);
	m_list1.InsertColumn(2,"刊物类别",LVCFMT_LEFT,60);
	m_list1.InsertColumn(3,"单价",LVCFMT_LEFT,40);

	m_list2.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
	m_list2.InsertColumn(0,"刊物名称",LVCFMT_LEFT,90);
	m_list2.InsertColumn(1,"刊物类别",LVCFMT_LEFT,60);
	m_list2.InsertColumn(2,"单价",LVCFMT_LEFT,40);
	m_list2.InsertColumn(3,"份数",LVCFMT_LEFT,25);
	m_list2.InsertColumn(4,"始",LVCFMT_LEFT,25);
	m_list2.InsertColumn(5,"至",LVCFMT_LEFT,25);

	GetDlgItem(IDC_EDIT1)->SetWindowText("1");
	GetDlgItem(IDC_EDIT2)->SetWindowText("1");
	GetDlgItem(IDC_EDIT3)->SetWindowText("12");

	this->LoadUserData();
	m_list0.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);
	this->LoadNMData(0);

	return bResult;
}


void CFORMVIEW2::LoadUserData()
{
	_RecordsetPtr pRecord;
	_variant_t value;
	CString temp,sql;
	int i=0;
	// 清空list
	m_list0.DeleteAllItems();
	try
	{
		// 生成Recordset实例
		pRecord.CreateInstance("ADODB.Recordset");

		// 打开记录集,静态光标(静态记录集),乐观锁定方式
		// 查询所有语句
		sql="select cno,name,addr from [CUSTOMER] ORDER BY CNO";
		pRecord->Open(_bstr_t(sql),_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		while( !pRecord->adoEOF )
		{
			value = pRecord->GetCollect("cno");
			if(value.vt!=VT_NULL)
			{
				value.ChangeType(VT_BSTR);
				temp=value.bstrVal;
			}
			else
				temp="";
			m_list0.InsertItem(i,temp);

			value = pRecord->GetCollect("name");
			if(value.vt!=VT_NULL)
				temp=value.bstrVal;
			else
				temp="name";
			m_list0.SetItemText(i,1,temp.Trim());

			value = pRecord->GetCollect("addr");
			if(value.vt!=VT_NULL)
				temp=value.bstrVal;
			else
				temp="";
			m_list0.SetItemText(i,2,temp.Trim());
			
			i++;
			pRecord->MoveNext();
		}
		pRecord->Close();
		pRecord = NULL;
	}
	catch( _com_error *e )
	{
		MessageBox( e->ErrorMessage() );
	}
	
}
//-----------------------------------------
void CFORMVIEW2::LoadNMData(int s)
{
	_RecordsetPtr pRecord;
	_variant_t value;
	CString temp,sql;
	int i=0;
	// 清空list
	m_list1.DeleteAllItems();
	m_list2.DeleteAllItems();
	try
	{
		// 生成Recordset实例
		pRecord.CreateInstance("ADODB.Recordset");

		// 打开记录集,静态光标(静态记录集),乐观锁定方式
		// 查询所有语句  未选报刊
		sql=(CString)"select nmno,title,period,price from [NMTABLE] WHERE NMNO NOT IN (SELECT NMNO FROM [CUS_ORDER] WHERE CNO=0"+m_list0.GetItemText(s,0) +(CString)") ORDER BY NMNO";
		pRecord->Open(_bstr_t(sql),_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		while( !pRecord->adoEOF)
		{
			value = pRecord->GetCollect("nmno");
			if(value.vt!=VT_NULL)
			{
				value.ChangeType(VT_BSTR);
				temp=value.bstrVal;
			}
			else
				temp="";
			m_list1.InsertItem(i,temp);

			value = pRecord->GetCollect("title");
			if(value.vt!=VT_NULL)
				temp=value.bstrVal;
			else
				temp="name";
			m_list1.SetItemText(i,1,temp.Trim());

			value = pRecord->GetCollect("period");
			if(value.vt!=VT_NULL)
				temp=value.bstrVal;
			else
				temp="";
			m_list1.SetItemText(i,2,temp.Trim());

			value = pRecord->GetCollect("price");
			if(value.vt!=VT_NULL)
			{
				value.ChangeType(VT_BSTR);
				temp=value.bstrVal;
			}
			else
				temp="";
			m_list1.SetItemText(i,3,temp.Trim());

			i++;
			pRecord->MoveNext();
		}
		pRecord->Close();


		// 查询所有语句  已选报刊
		sql=(CString)"SELECT  title,period,price,qty,start,term from [NMTABLE],[CUS_ORDER] WHERE NMTABLE.NMNO=CUS_ORDER.NMNO AND CNO=0"+ m_list0.GetItemText(s,0) +" ORDER BY NMTABLE.NMNO";
		pRecord->Open(_bstr_t(sql),_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		i=0;
		while( !pRecord->adoEOF)
		{
			value = pRecord->GetCollect("title");
			if(value.vt!=VT_NULL)
				temp=value.bstrVal;
			else
				temp="";
			m_list2.InsertItem(i,temp.Trim());

			value = pRecord->GetCollect("period");
			if(value.vt!=VT_NULL)
				temp=value.bstrVal;
			else
				temp="name";
			m_list2.SetItemText(i,1,temp.Trim());

			value = pRecord->GetCollect("price");
			if(value.vt!=VT_NULL)
			{
				value.ChangeType(VT_BSTR);
				temp=value.bstrVal;
			}
			else
				temp="";
			m_list2.SetItemText(i,2,temp.Trim());

			value = pRecord->GetCollect("qty");
			if(value.vt!=VT_NULL)
			{
				value.ChangeType(VT_BSTR);
				temp=value.bstrVal;
			}
			else
				temp="";
			m_list2.SetItemText(i,3,temp.Trim());
			
			value = pRecord->GetCollect("start");
			if(value.vt!=VT_NULL)
			{
				value.ChangeType(VT_BSTR);
				temp=value.bstrVal;
			}
			else
				temp="";
			m_list2.SetItemText(i,4,temp.Trim());

			value = pRecord->GetCollect("term");
			if(value.vt!=VT_NULL)
			{
				value.ChangeType(VT_BSTR);
				temp=value.bstrVal;
			}
			else
				temp="";
			m_list2.SetItemText(i,5,temp.Trim());

			i++;
			pRecord->MoveNext();
		}
		pRecord->Close();
		pRecord = NULL;
		//GetDlgItem(IDC_EDIT1)->SetWindowText(m_list2.GetItemText(s,3));
	}
	catch(...)
	{
		MessageBox("载入数据出错!");
	}
}

void CFORMVIEW2::OnLvnItemchangedList0(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	int i;

	for(i =0;i<m_list0.GetItemCount();i++ )
	{
		if(m_list0.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)//选中状态。。
		{
			break;
		}
	}
	this->LoadNMData(i);

	*pResult = 0;
}

void CFORMVIEW2::OnBnClickedButton1()
{
	CString SQL,temp;
	int i,j,k;
	CString qty,start,term;
	_CommandPtr m_pCommand;

	for(k=m_list0.GetItemCount()-1;k>=0;k--)
	{
		if(m_list0.GetItemState(k,LVIS_SELECTED)==LVIS_SELECTED)
			break;
	}
	j=m_list1.GetItemCount();
	if(k<0 || j==0 || m_list1.GetSelectedCount()==0)
	{
		MessageBox("请先选择你要订阅的报刊!");
		return;
	}
	GetDlgItem(IDC_EDIT1)->GetWindowText(qty);
	GetDlgItem(IDC_EDIT2)->GetWindowText(start);
	GetDlgItem(IDC_EDIT3)->GetWindowText(term);
	try
	{
		m_pCommand.CreateInstance("ADODB.Command");
		m_pCommand->ActiveConnection = theApp.m_pConnection;
		for(i=0;i<j;i++)
		{
			if(m_list1.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
			{
				SQL=(CString)"INSERT INTO [CUS_ORDER](CNO,ORDERDATE,[NMNO],START,TERM,QTY) VALUES(0"+m_list0.GetItemText(k,0)+(CString)",GetDate(),"
					+m_list1.GetItemText(i,0)+","+start+","+term+","+qty +")";
				m_pCommand->CommandText = _bstr_t(SQL); 
				m_pCommand->Execute(NULL, NULL,adCmdText); 				
			}
		}
	}
	catch(...)
	{
		MessageBox("执行SQL语句出错!");
	}
	this->LoadNMData(k);

}
void CFORMVIEW2::OnLvnItemchangedList2(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	int i;

	for(i =0;i<m_list2.GetItemCount();i++ )
	{
		if(m_list2.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)//选中状态。。
		{
			break;
		}
	}
	GetDlgItem(IDC_EDIT1)->SetWindowText(m_list2.GetItemText(i,3));

	*pResult = 0;
}

void CFORMVIEW2::OnBnClickedButton2()
{
	CString SQL,temp;
	int i,j,k;
	_CommandPtr m_pCommand;

	for(k=m_list0.GetItemCount()-1;k>=0;k--)
	{
		if(m_list0.GetItemState(k,LVIS_SELECTED)==LVIS_SELECTED)
			break;
	}
	j=m_list2.GetItemCount();
	if(k<0 || j==0 || m_list2.GetSelectedCount()==0)
	{
		MessageBox("请先选择你要取消订阅的报刊!");
		return;
	}

	try
	{
		m_pCommand.CreateInstance("ADODB.Command");
		m_pCommand->ActiveConnection = theApp.m_pConnection;
		for(i=0;i<j;i++)
		{
			if(m_list2.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
			{
				SQL=(CString)"DELETE FROM [CUS_ORDER] WHERE CNO="+ m_list0.GetItemText(k,0) +(CString)" AND [NMNO]=(SELECT [NMNO] FROM NMTABLE WHERE TITLE='"+ m_list2.GetItemText(i,0) +(CString)"')";
				m_pCommand->CommandText = _bstr_t(SQL); 
				m_pCommand->Execute(NULL, NULL,adCmdText); 
			}
		}
	}
	catch(...)
	{
		MessageBox("执行SQL语句出错!");
	}
	this->LoadNMData(k);
}
void CFORMVIEW2::OnNMRclickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
	CPoint oPoint;
	int istat;
	CMenu menu ,*pSubMenu; //定义下面要用到的cmenu对象

	
	istat=m_list0.GetSelectionMark();//用istat存放当前选定的是第几项
	if(istat<0)	return ;

	menu.LoadMenu(IDR_MENU2); //装载自定义的右键菜单
	pSubMenu = menu.GetSubMenu(0);//获取第一个弹出菜单,所以第一个菜单必须有子菜单
	GetCursorPos( &oPoint);//获取当前光标的位置,以便使得菜单可以跟随光标
	pSubMenu->TrackPopupMenu (TPM_LEFTALIGN, oPoint.x, oPoint.y, this); //在指定位置显示弹出菜单

	*pResult = 0;
}
void CFORMVIEW2::OnListMenu0()
{
	this->LoadUserData();
	m_list0.SetItemState(m_list0.GetSelectionMark(),LVIS_SELECTED,LVIS_SELECTED);
}

⌨️ 快捷键说明

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