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