?? formview2.cpp
字號(hào):
// FORMVIEW2.cpp : 實(shí)現(xiàn)文件
//
#include "stdafx.h"
#include "DBDesign.h"
#include "FORMVIEW2.h"
#include ".\formview2.h"
// CFORMVIEW2 對(duì)話框
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,"編號(hào)",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,"編號(hào)",LVCFMT_LEFT,30);
m_list1.InsertColumn(1,"刊物名稱",LVCFMT_LEFT,90);
m_list1.InsertColumn(2,"刊物類別",LVCFMT_LEFT,60);
m_list1.InsertColumn(3,"單價(jià)",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,"單價(jià)",LVCFMT_LEFT,40);
m_list2.InsertColumn(3,"份數(shù)",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;
// 清空l(shuí)ist
m_list0.DeleteAllItems();
try
{
// 生成Recordset實(shí)例
pRecord.CreateInstance("ADODB.Recordset");
// 打開(kāi)記錄集,靜態(tài)光標(biāo)(靜態(tài)記錄集),樂(lè)觀鎖定方式
// 查詢所有語(yǔ)句
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;
// 清空l(shuí)ist
m_list1.DeleteAllItems();
m_list2.DeleteAllItems();
try
{
// 生成Recordset實(shí)例
pRecord.CreateInstance("ADODB.Recordset");
// 打開(kāi)記錄集,靜態(tài)光標(biāo)(靜態(tài)記錄集),樂(lè)觀鎖定方式
// 查詢所有語(yǔ)句 未選報(bào)刊
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();
// 查詢所有語(yǔ)句 已選報(bào)刊
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("載入數(shù)據(jù)出錯(cuò)!");
}
}
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)//選中狀態(tài)。。
{
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("請(qǐng)先選擇你要訂閱的報(bào)刊!");
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("執(zhí)行SQL語(yǔ)句出錯(cuò)!");
}
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)//選中狀態(tài)。。
{
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("請(qǐng)先選擇你要取消訂閱的報(bào)刊!");
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("執(zhí)行SQL語(yǔ)句出錯(cuò)!");
}
this->LoadNMData(k);
}
void CFORMVIEW2::OnNMRclickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
CPoint oPoint;
int istat;
CMenu menu ,*pSubMenu; //定義下面要用到的cmenu對(duì)象
istat=m_list0.GetSelectionMark();//用istat存放當(dāng)前選定的是第幾項(xiàng)
if(istat<0) return ;
menu.LoadMenu(IDR_MENU2); //裝載自定義的右鍵菜單
pSubMenu = menu.GetSubMenu(0);//獲取第一個(gè)彈出菜單,所以第一個(gè)菜單必須有子菜單
GetCursorPos( &oPoint);//獲取當(dāng)前光標(biāo)的位置,以便使得菜單可以跟隨光標(biāo)
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);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -