📄 database_main.cpp
字号:
// Database_main.cpp : implementation file
//
#include "stdafx.h"
#include "stdlib.h"
#include "gear_cutter_database.h"
#include "Database_main.h"
#include "Resource.h"
#include "Sheet_Standard_Append.h"
#include "Sheet_Tiqian_Tutai_Append.h"
#include "Sheet_Tiqian_No_Tutai_Append.h"
#include "Gear_Para_Main.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int symbol;
CRecordset m_pset_gear;
/////////////////////////////////////////////////////////////////////////////
// CDatabase_main dialog
static UINT indicators[] =
{
//ID_SEPARATOR,// status line indicator
//ID_My_STRING,
ID_My_TIME
};
CDatabase_main::CDatabase_main(CWnd* pParent /*=NULL*/)
: CDialog(CDatabase_main::IDD, pParent)
{
//{{AFX_DATA_INIT(CDatabase_main)
m_edit_value = _T("");
//}}AFX_DATA_INIT
}
void CDatabase_main::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDatabase_main)
DDX_Control(pDX, IDC_LIST_data1, m_list_control1);
DDX_Control(pDX, IDC_COMBO_rela, m_combo_rela);
DDX_Control(pDX, IDC_COMBO_attri, m_combo_attri);
DDX_Control(pDX, IDC_TREE_sort, m_tree_control);
DDX_Control(pDX, IDC_LIST_data, m_list_control);
DDX_Text(pDX, IDC_EDIT_value, m_edit_value);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDatabase_main, CDialog)
//{{AFX_MSG_MAP(CDatabase_main)
ON_WM_CREATE()
ON_WM_DESTROY()
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_sort, OnSelchangedTREEsort)
ON_WM_TIMER()
ON_COMMAND(ID_MENUITEM_delete, OnMENUITEMdelete)
ON_COMMAND(ID_MENUITEM_append, OnMENUITEMappend)
ON_COMMAND(ID_MENUITEM_modify, OnMENUITEMmodify)
ON_BN_CLICKED(ID_BTN_all, OnBTNall)
ON_BN_CLICKED(IDC_BUTTON_ask, OnBUTTONask)
ON_COMMAND(ID_MENUITEM_exit, OnMENUITEMexit)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_data, OnDblclkLISTdata)
ON_NOTIFY(NM_CLICK, IDC_LIST_data, OnClickLISTdata)
ON_COMMAND(ID_MENUITEM_inquery, OnMENUITEMinquery)
ON_WM_CONTEXTMENU()
ON_COMMAND(ID_MENUITEM_refresh, OnMENUITEMrefresh)
ON_COMMAND(ID_MENUITEM_ini, OnMENUITEMini)
ON_COMMAND(ID_MENUITEM_gear, OnMENUITEMgear)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDatabase_main message handlers
int CDatabase_main::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if (!m_wndStatusBar.Create(this)||!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))
{
MessageBox("状态栏建立失败!","提示",MB_ICONERROR+MB_OK);
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
CRect rect;
GetClientRect(&rect);
m_wndStatusBar.SetPaneInfo(0,ID_My_TIME,SBPS_STRETCH,0);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,ID_My_TIME);
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_TOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndToolBar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
return 0;
}
BOOL CDatabase_main::ShowInformation(CString strSQL)
{
if(!m_pdatabase->IsOpen()) return FALSE;
if(!m_pset) return FALSE;
try{
BeginWaitCursor();
if(m_pset->IsOpen()) m_pset->Close();
m_pset->Open(CRecordset::dynaset,strSQL);
if(!m_pset->IsEOF())
{m_pset->MoveLast();
m_pset->MoveFirst();}
int nFieldCount=m_pset->GetODBCFieldCount();
CODBCFieldInfo fieldinfo;
for(int n=0;n<nFieldCount;n++){
m_pset->GetODBCFieldInfo(n,fieldinfo);
int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
}
CString strValue;
m_pset->MoveFirst();
int nCount=0;
while(!m_pset->IsEOF()){
m_list_control.InsertItem(nCount,strValue);
for(int j=0;j<nFieldCount;j++){
m_pset->GetFieldValue(j,strValue);
m_list_control.SetItemText(nCount,j,strValue);
}
m_pset->MoveNext();
nCount++;
}
EndWaitCursor();
}
catch(CDBException *e){
e->Delete();
EndWaitCursor();
return FALSE;
}
return TRUE;
}
void CDatabase_main::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
KillTimer(1);
delete m_pset;
delete m_pdatabase;
}
BOOL CDatabase_main::OnInitDialog()
{
CDialog::OnInitDialog();
SetTimer(1,1000,NULL);
InitTree();
ClearList();
m_small.Create(IDB_BITMAP1,16,0,FALSE);
m_tree_control.SetImageList(&m_small,TVSIL_NORMAL);
// TODO: Add extra initialization here
try{
m_pdatabase=new CDatabase();
m_pset=new CRecordset();
m_pdatabase->Open(_T("gear_cutter_database"),FALSE,FALSE,_T("ODBC;DSN=gear_cutter_database"),FALSE);
m_pset->m_pDatabase=m_pdatabase;
}
catch(CDBException* e){
e->ReportError();
e->Delete();
delete m_pset;
delete m_pdatabase;
return TRUE;}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDatabase_main::ClearList()
{
//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
m_list_control.DeleteAllItems();
while(m_list_control.DeleteColumn(0));
UpdateWindow();
}
void CDatabase_main::ClearList_Gear()
{
//m_list_control1.SetExtendedStyle(LVS_EX_FULLROWSELECT);
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
m_list_control1.DeleteAllItems();
while(m_list_control1.DeleteColumn(0));
}
void CDatabase_main::InitTree()
{
TV_ITEM tvItem;
tvItem.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
tvItem.pszText="齿轮刀具类型";
tvItem.cchTextMax=12;
tvItem.iImage=0;
tvItem.iSelectedImage=1;
TV_INSERTSTRUCT tvInsert;
tvInsert.hParent=TVI_ROOT;
tvInsert.hInsertAfter=TVI_LAST;
tvInsert.item=tvItem;
HTREEITEM hRoot=m_tree_control.InsertItem(&tvInsert);
tvItem.pszText="标准滚刀";
tvItem.cchTextMax=8;
tvInsert.hParent=hRoot;
tvInsert.item=tvItem;
m_tree_control.InsertItem(&tvInsert);
tvItem.pszText="剃前滚刀";
tvItem.cchTextMax=8;
tvInsert.hParent=hRoot;
tvInsert.item=tvItem;
hRoot=m_tree_control.InsertItem(&tvInsert);
tvItem.pszText="一次修缘、带凸台";
tvItem.cchTextMax=16;
tvInsert.hParent=hRoot;
tvInsert.item=tvItem;
m_tree_control.InsertItem(&tvInsert);
tvItem.pszText="一次修缘、不带凸台";
tvItem.cchTextMax=18;
tvInsert.hParent=hRoot;
tvInsert.item=tvItem;
m_tree_control.InsertItem(&tvInsert);
}
void CDatabase_main::OnSelchangedTREEsort(NMHDR* pNMHDR, LRESULT* pResult)
{
char str[20];
NM_TREEVIEW* pTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CTreeCtrl *pTree=(CTreeCtrl *)GetDlgItem(IDC_TREE_sort);
HTREEITEM pSelected=pTreeView->itemNew.hItem;
TV_ITEM item;
item.mask=TVIF_HANDLE|TVIF_TEXT;
item.hItem=pSelected;
item.pszText=str;
item.cchTextMax=20;
VERIFY(pTree->GetItem(&item));
sort.Format("%s",str);
if(sort=="标准滚刀")
{
CString table_name("standard_hob_table");
ComboxData(table_name);
DataShow(table_name);
sort_mid=sort;
}
if(sort=="一次修缘、带凸台")
{
CString table_name("tiqian_tutai_hob_table");
ComboxData(table_name);
DataShow(table_name);
sort_mid=sort;
}
if(sort=="一次修缘、不带凸台")
{
CString table_name("tiqian_no_tutai_hob_table");
ComboxData(table_name);
DataShow(table_name);
sort_mid=sort;
}
*pResult = 0;
}
void CDatabase_main::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent==1)
{
CTime MyTime;
MyTime=CTime::GetCurrentTime();
CString strDate=MyTime.Format("%Y年%m月%d日");
CString strTime=MyTime.Format("%H:%M:%S");
strDate="操作日期:"+strDate+" 当前时间:"+strTime;
m_wndStatusBar.SetPaneText(0,strDate);
CDialog::OnTimer(nIDEvent);
}
}
void CDatabase_main::DataDelete(CString table_name,CString attri)
{
if(m_list_control.GetSelectedCount()==0)
{
MessageBox("请先选择刀具参数!","提示",MB_ICONWARNING+MB_OK);
return;
}
if(MessageBox("是否真的要删除这条记录!","提示",MB_ICONQUESTION+MB_OKCANCEL)!=IDOK)
return;
if(!m_pdatabase->IsOpen()) {MessageBox("数据获取失败!","提示",MB_ICONERROR+MB_OK);return;}
if(!m_pset) {MessageBox("数据获取失败!","提示",MB_ICONERROR+MB_OK);return;}
if(m_pset->IsOpen()) m_pset->Close();
UINT i,uSelectedCount=m_list_control.GetSelectedCount();
int nItemSel=0;
if(uSelectedCount>0)
{
for(i=0;i<uSelectedCount;i++)
{
nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
CString str("");
str=m_list_control.GetItemText(nItemSel,0);
CString strSQL;
strSQL="delete from "+table_name+" where "+attri+"="+"'"+str+"'";
try
{
m_pdatabase->ExecuteSQL(strSQL);
}
catch(CDBException* e)
{
e->ReportError();
e->Delete();
return;
}
m_list_control.DeleteItem(nItemSel);
UpdateWindow();
ClearList_Gear();
}
}
}
void CDatabase_main::DataShow(CString table_name)
{
ClearList();
ClearList_Gear();
CString strSQL;
strSQL="select * from "+table_name;
ShowInformation(strSQL);
}
void CDatabase_main::OnMENUITEMdelete()
{
// TODO: Add your command handler code here
if(m_list_control.GetSelectedCount()==0)
{
MessageBox("请先选择刀具参数!","提示",MB_ICONWARNING+MB_OK);
return;
}
if(sort_mid=="标准滚刀")
{
DataDelete("standard_hob_table","齿轮零件号");
}
if(sort_mid=="一次修缘、带凸台")
{
DataDelete("tiqian_tutai_hob_table","齿轮零件号");
}
if(sort_mid=="一次修缘、不带凸台")
{
DataDelete("tiqian_no_tutai_hob_table","齿轮零件号");
}
}
void CDatabase_main::OnMENUITEMappend()
{
// TODO: Add your command handler code here
if(sort_mid=="")
{
MessageBox("请先选择刀具类型!","提示",MB_ICONWARNING+MB_OK);
return;
}
if(sort_mid=="标准滚刀")
{
symbol=0;
Standard_Hob_Append();
return;
}
if(sort_mid=="一次修缘、带凸台")
{
symbol=0;
Tiqian_Tutai_Append();
return;
}
if(sort_mid=="一次修缘、不带凸台")
{
symbol=0;
Tiqian_No_Tutai_Append();
return;
}
}
void CDatabase_main::OnMENUITEMmodify()
{
// TODO: Add your command handler code here
if(sort_mid=="")
{
MessageBox("请先选择刀具类型!","提示",MB_ICONWARNING+MB_OK);
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -