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

📄 database_main.cpp

📁 C# 教学示例程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -