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

📄 myknowledgeview.cpp

📁 一个自己编的ODBC数据库的程序。
💻 CPP
字号:
// MyknowledgeView.cpp : implementation of the CMyknowledgeView class
//

#include "stdafx.h"
#include "Myknowledge.h"
#include "OpenSet.h"
#include "Opendlg.h"
#include "MyknowledgeSet.h"
#include "MyknowledgeDoc.h"
#include "MyknowledgeView.h"
#include "Namedlg.h"
#include "MRUCombo.h"
#include "odbcinst.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyknowledgeView

IMPLEMENT_DYNCREATE(CMyknowledgeView, CRecordView)

BEGIN_MESSAGE_MAP(CMyknowledgeView, CRecordView)
	//{{AFX_MSG_MAP(CMyknowledgeView)
	ON_COMMAND(ID_BUTTON_ADD, OnButtonAdd)
	ON_COMMAND(ID_BUTTON_DLE, OnButtonDle)
	ON_COMMAND(ID_BUTTON_MOD, OnButtonMod)
	ON_COMMAND(ID_BUTTON_FOND, OnButtonFond)
	ON_COMMAND(ID_BUTTON_BACK, OnButtonBack)
	ON_WM_LBUTTONDBLCLK()
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_COMMAND(ID_BUTTON_NEW, OnButtonNew)
	ON_COMMAND(ID_BUTTON_OPEN, OnButtonOpen)
	ON_COMMAND(ID_BUTTON_START, OnButtonStart)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyknowledgeView construction/destruction

CMyknowledgeView::CMyknowledgeView()
	: CRecordView(CMyknowledgeView::IDD)
{
	//{{AFX_DATA_INIT(CMyknowledgeView)
	m_pSet = NULL;
	m_0 = 0;
	m_2 = _T("");
	m_1 = _T("");
	m_3 = _T("");
	m_4 = _T("");
	m_5 = _T("");
	m_st1 = _T("");
	m_st2 = _T("");
	//}}AFX_DATA_INIT
	// TODO: add construction code here

}

CMyknowledgeView::~CMyknowledgeView()
{
}

void CMyknowledgeView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyknowledgeView)
	DDX_Control(pDX, IDC_EDIT2, m_com1);
	DDX_Control(pDX, IDC_EDIT3, m_com2);
	DDX_Control(pDX, IDC_LIST1, m_ctrlperson);
	DDX_Text(pDX, IDC_EDIT1, m_0);
	DDX_Text(pDX, IDC_EDIT3, m_2);
	DDX_Text(pDX, IDC_EDIT2, m_1);
	DDX_Text(pDX, IDC_EDIT4, m_3);
	DDX_Text(pDX, IDC_EDIT5, m_4);
	DDX_Text(pDX, IDC_EDIT6, m_5);
	DDX_Text(pDX, IDC_STATIC1, m_st1);
	DDX_Text(pDX, IDC_STATIC2, m_st2);
	//}}AFX_DATA_MAP
}

BOOL CMyknowledgeView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CRecordView::PreCreateWindow(cs);
}

void CMyknowledgeView::OnInitialUpdate()
{
 DWORD size=50;
      char curpath[50];
      GetCurrentDirectory(size,curpath);
      CString sstr;
      sstr.Format("DBQ=%s\\我的知识库.mdb\0",curpath);
	  //sstr=CurPState.DatabaseFileD
	SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,
        "Microsoft Access Driver (*.mdb)", 
        "DSN=我的知识库\0"
        "DESCRIPTION=TRMS_ACCESS\0"
		//"DBQ=E:\\vc6\MSDev98\MyProjects\Myknowledge\我的知识库.mdb\0"
        "DBQ=E:\\vc6\\MSDev98\\MyProjects\\Myknowledge\\我的知识库.mdb\0"
        "DefaultDir=e:\\\0"
        "FIL=MS Access\0");
	m_pSet = &GetDocument()->m_myknowledgeSet;
	CRecordView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
	m_ctrlperson.InsertColumn(0,"编号");
	m_ctrlperson.InsertColumn(1,"目录");
	m_ctrlperson.InsertColumn(2,"分类");
	m_ctrlperson.InsertColumn(3,"标题");
	m_ctrlperson.InsertColumn(4,"内容");
	m_ctrlperson.InsertColumn(5,"备注");
	m_ctrlperson.SetColumnWidth(0,50);	
	m_ctrlperson.SetColumnWidth(1,103);
	m_ctrlperson.SetColumnWidth(2,100);
	m_ctrlperson.SetColumnWidth(3,110);
	m_ctrlperson.SetColumnWidth(4,300);
	m_ctrlperson.SetColumnWidth(5,100);
	m_ctrlperson.SetExtendedStyle(LVS_EX_FULLROWSELECT| LVS_EX_GRIDLINES);
    GetParentFrame()->SetWindowText("我的知识库");
    k1=0;k2=0;
	c1=1;c2=1;

}

/////////////////////////////////////////////////////////////////////////////
// CMyknowledgeView printing

BOOL CMyknowledgeView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyknowledgeView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyknowledgeView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyknowledgeView diagnostics

#ifdef _DEBUG
void CMyknowledgeView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CMyknowledgeView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

CMyknowledgeDoc* CMyknowledgeView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyknowledgeDoc)));
	return (CMyknowledgeDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyknowledgeView database support
CRecordset* CMyknowledgeView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CMyknowledgeView message handlers

void CMyknowledgeView::RefreshData()
{
				if(!m_database.IsOpen())
	{
		m_database.Open(_T("我的知识库"));
	}
	//对列表控件的内容更新,清空原来的内容
	m_ctrlperson.DeleteAllItems();
	//创建记录集
	CMyknowledgeSet m_personset(&m_database);
   
		m_query.Format("select * from %s order by 编号 ASC",m_strname);
	//m_query.Format("select * from %s order by data ASC",m_strname);
	m_personset.Open(AFX_DB_USE_DEFAULT_TYPE,m_query);
	CDBVariant varValue;
	//char buf[200];
	//用来记录当前记录的序号  

	int i=0;
 
	
	
	
	k1=m_com1.GetCount();
	k2=m_com2.GetCount();
	//如果表中有记录,打开后将游标定在第一位,使记录集中的第一条记录成为当前记录
	if(m_personset.GetRecordCount()!=0)		m_personset.MoveFirst();
CFileFind find;

   

	//;  
	while(!m_personset.IsEOF())
	//for( i=0;i<m_personset.GetRecordCount();i++)
	{
	CString s1;
		s1.Format("%d",m_personset.m_0);
	
		m_ctrlperson.InsertItem(i, s1, 0);
	      m_ctrlperson.SetItemText(i, 1, m_personset.m_1);
     	  m_ctrlperson.SetItemText(i, 2, m_personset.m_2);
		  m_ctrlperson.SetItemText(i, 3, m_personset.m_3);
		  m_ctrlperson.SetItemText(i, 4, m_personset.m_4); 
		  m_ctrlperson.SetItemText(i, 5, m_personset.m_5);
	
		
		c1=1;
        for(int j=0;j<k1;j++)
		{
		   m_com1.GetLBText(j,m_1);
		 
          if( m_personset.m_1.Compare(m_1)==0)//
			c1=0;
		  
		  		
		}
		if(c1!=0){m_com1.AddString(m_personset.m_1);
		}
		 k1=m_com1.GetCount();
		 c2=1;
		  for(int l=0;l<k2;l++)
		{
		   m_com2.GetLBText(l,m_2);
		 
          if( m_personset.m_2.Compare(m_2)==0)//
			c2=0;
		  
		  		
		}
		if(c2!=0){m_com2.AddString(m_personset.m_2);
		}
		 k2=m_com2.GetCount();
           m_personset.MoveNext();
		    i++;
			
		
	  
			
			
	}
 
    
	
	
     UpdateData(true);    
    CString st1,st2,tile;
	long p1,p2,p3;
	tile.Format("我的知识库-%s",m_strname);
	GetParentFrame()->SetWindowText(tile);
	p1=m_personset.GetRecordCount();
	 st1.Format("本记录共:%ld条",p1);
    p2=m_personset.GetRecordCount()-1;
    p3=atoi(m_ctrlperson.GetItemText(p2,0));
	 st2.Format("最后一编号:%ld号",p3);
	 m_st1=st1;
	 m_st2=st2;
	 m=p3+1;
	 m_0=m;
   UpdateData(false);
}

void CMyknowledgeView::OnButtonAdd() 
{
		if(!m_database.IsOpen())
	{
		m_database.Open(_T("我的知识库"));
	}//RefreshData();
	CString s,ss,t,t1;
	UpdateData(true);		 
    
   CTime time;
	time=CTime::GetCurrentTime();
    
   ss=time.Format("%Y-%m-%d."+m_5);
	s.Format("Insert Into %s (编号,目录,分类,标题,内容,备注) Values (%d,'%s','%s','%s','%s','%s')",m_strname,m_0,m_1,m_2,m_3,m_4,ss);
/* t=m_1;
 k=m_com1.GetCount();
	for(int j=0;j<k;j++)
		{
		   m_com1.GetLBText(j,m_1);
		 t1=m_1;
          if( t.Compare(t1)==0)//
			c=0;
		  
		  		
		}
	
	//if(!c==0)m_com1.AddString(t);*/

	
	   m_database.ExecuteSQL(s);
                          
   	m_database.Close();
	
	RefreshData();
 UpdateData(true);
   OnButtonStart();
   m_0=m;
   UpdateData(false);
	
}

void CMyknowledgeView::OnButtonDle() 
{
	int i=m_ctrlperson.GetSelectionMark();
	CString strSQL,msg,strname;
	strname=m_ctrlperson.GetItemText(i,3);
	int d=atoi(m_ctrlperson.GetItemText(i,0));
	msg.Format("第 %d 项,编号为%d,标题为“%s”的记录将被删除!是否继续?",i+1,d,strname);
	//如果用户没有选择记录,则提示选取一条记录
	if(i==-1)
	{
		MessageBox("请选择一条要删除的记录!","提示",MB_OK|MB_ICONINFORMATION);
	}
	else
	{
		
		if(MessageBox(msg,"提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
		{
			CString strclass=m_ctrlperson.GetItemText(i,2);
             CString strname=m_ctrlperson.GetItemText(i,3);
			 int n=atoi(m_ctrlperson.GetItemText(i,0));
			//从表中删除对应的记录
			strSQL.Format("delete from %s where 编号=%d  and 标题='%s'",m_strname,n,strname);
			m_database.ExecuteSQL(strSQL);
			m_database.Close();
			RefreshData();
		}
	}
	
}

void CMyknowledgeView::OnButtonMod() 
{
		if(!m_database.IsOpen())
	{
		m_database.Open(_T("我的知识库"));
	}
   	int i=m_ctrlperson.GetSelectionMark();
	CString strSQL,msg,strname;
	strname=m_ctrlperson.GetItemText(i,3);
	int d=atoi(m_ctrlperson.GetItemText(i,0));
	msg.Format("第 %d 项,编号为%d,标题为“%s”的记录将被修改!是否继续?",i+1,d,strname);
	//如果用户没有选择记录,则提示选取一条记录
	if(i==-1)
	{
		MessageBox("请选择一条要修改的记录!","提示",MB_OK|MB_ICONINFORMATION);
	}
	else
	{
		
		if(MessageBox(msg,"提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
		{
			CString strclass=m_ctrlperson.GetItemText(i,2);
             CString strname=m_ctrlperson.GetItemText(i,3);
			 int n=atoi(m_ctrlperson.GetItemText(i,0));
			UpdateData(true);//从表中删除对应的记录,,'',,%f,,,,
			strSQL.Format("Update %s Set 编号=%d,目录='%s',分类='%s',标题='%s',内容='%s',备注='%s' where 编号=%d and 分类='%s' and 标题='%s'",m_strname,m_0,m_1,m_2,m_3,m_4,m_5,n,strclass,strname);
			m_database.ExecuteSQL(strSQL);
			m_database.Close();
			RefreshData();
		}
	}
	
}

void CMyknowledgeView::OnButtonFond() 
{	
    
	CString s0,s1,s2,s3,s4,s5,ss1,ss2,ss3,ss4,ss5;
		
	if(!m_database.IsOpen())
	{
		m_database.Open(_T("我的知识库"));
	}

   	if(UpdateData(true)){
	
    if(m_0==0)
	s0="";
	
	else 
	{s0.Format("and 编号=%d",m_0);}
   UpdateData(true);
	if(m_1.IsEmpty())
	{	s1.Format("");}
	else {
			ss1="%";
		ss1=ss1+m_1+"%";

	s1.Format("and  目录 like '%s'",ss1);}
	if(m_2.IsEmpty())
		s2="";
	else 
	{
			ss2="%";
		ss2=ss2+m_2+"%";

		s2.Format("and 分类 like '%s'",ss2);}
		
	if(m_3.IsEmpty())
		s3="";
	else 
	{	ss3="%";
		ss3=ss3+m_3+"%";

		s3.Format("and 标题 like '%s'",ss3);}
		if(m_4.IsEmpty())
		s4="";
	else 
	{	ss4="%";
		ss4=ss4+m_4+"%";

		s4.Format("and 内容 like '%s'",ss4);}
		
	if(m_5.IsEmpty())
		s5="";
	else 
	{	ss5="%";
		ss5=ss5+m_5+"%";

		s5.Format("and 备注 like '%s'",ss5);}
	}

	m_searchSQL.Format("Select * from %s where 编号>=0 %s %s %s %s %s %s   ",m_strname,s0,s1,s2,s3,s4,s5);

	SearchData();
}

void CMyknowledgeView::SearchData()
{
		if(!m_database.IsOpen())
	{
		m_database.Open(_T("我的知识库"));
	}
	//对列表控件的内容更新,清空原来的内容
	m_ctrlperson.DeleteAllItems();
	//创建记录集
	CMyknowledgeSet m_personset(&m_database);
	m_personset.Open(AFX_DB_USE_DEFAULT_TYPE,m_searchSQL);
	CDBVariant varValue;
	//char buf[200];
	//用来记录当前记录的序号
	int i=0;
	if(m_personset.GetRecordCount()==0)	
	{MessageBox("没找到任何记录!","提示",MB_OK|MB_ICONINFORMATION);
	

	return;}
	//如果表中有记录,打开后将游标定在第一位,使记录集中的第一条记录成为当前记录
	if(m_personset.GetRecordCount()!=0)		m_personset.MoveFirst();
    
	while(!m_personset.IsEOF())
	{
		CString s1;
		s1.Format("%d",m_personset.m_0);
	
		m_ctrlperson.InsertItem(i, s1, 0);
	      m_ctrlperson.SetItemText(i, 1, m_personset.m_1);
     	  m_ctrlperson.SetItemText(i, 2, m_personset.m_2);
		  m_ctrlperson.SetItemText(i, 3, m_personset.m_3);
		  m_ctrlperson.SetItemText(i, 4, m_personset.m_4); 
		  m_ctrlperson.SetItemText(i, 5, m_personset.m_5);
		 
           m_personset.MoveNext();
		    i++;
	  
			
			
	}
	 CString tile;
	tile.Format("我的知识库-筛查");
    GetParentFrame()->SetWindowText(tile);
   
}

void CMyknowledgeView::OnButtonBack() 
{
	m_query.Format("select * from %S order by 编号 ASC",m_strname);

   RefreshData();
   UpdateData(true);
   OnButtonStart();
   m_0=m;
   UpdateData(false);
}

void CMyknowledgeView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CRecordView::OnLButtonDblClk(nFlags, point);
}

void CMyknowledgeView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData(true);
	int i=m_ctrlperson.GetSelectionMark();
    m_1 = m_ctrlperson.GetItemText(i,1);
	m_0 =atoi( m_ctrlperson.GetItemText(i,0));
	m_2 = m_ctrlperson.GetItemText(i,2);
	m_3 = m_ctrlperson.GetItemText(i,3);
	m_4 =( m_ctrlperson.GetItemText(i,4));
	m_5 = (m_ctrlperson.GetItemText(i,5));
	UpdateData(false);
	*pResult = 0;
}

void CMyknowledgeView::OnButtonNew() 
{
			
	if(!m_database.IsOpen())
	{
		m_database.Open(_T("我的知识库"));
	}

	Namedlg  dlg;
   dlg.DoModal();
   UpdateData(TRUE);
   if(!dlg.m_strname.IsEmpty()){
	   
	   strtab.Format("%s",dlg.m_strname);
   	CString	SQL,s,sql,ss;
	
	SQL.Format("Select * Into %s from 医学 where 编号=0",strtab);
	sql.Format("delete * from %s",strtab);
   	m_database.ExecuteSQL(SQL);
	m_database.ExecuteSQL(sql);
	s.Format("Insert Into list (name) Values('%s')",strtab);
   m_database.ExecuteSQL(s);
   m_database.Close();
   }
 
   
}

void CMyknowledgeView::OnButtonOpen() 
{
		COpendlg dlg;
	dlg.DoModal();	
	// m_com1.EmptyMRU();
	 m_com1.ResetContent();
    m_com2.ResetContent();
	m_com1.AddString("");
   	m_com2.AddString("");
	m_strname.Format("%s",dlg.m_dlgname);
	//m_strname=dlg.m_open.GetItemText(0,1); //m_0=strname;
	if(!m_strname.IsEmpty())
	{m_query.Format("select * from %s order by 编号 ASC",m_strname);

	
   

	

 
			

 
	
	RefreshData();	 

	}

   	
}

void CMyknowledgeView::OnButtonStart() 
{
   UpdateData(true);
   m_0=0;
   m_1.Format("");
   m_2.Format("");
   m_3.Format("");
   m_4.Format("");
   m_5.Format("");
   UpdateData(false);

}

⌨️ 快捷键说明

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