📄 formview2.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 + -