📄 dataview.cpp
字号:
// DataView.cpp : implementation file
//
#include "stdafx.h"
#include "XOffice.h"
#include "DataView.h"
#include "msword9.h"
#include <string.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDataView
IMPLEMENT_DYNCREATE(CDataView, CFormView)
CDataView::CDataView()
: CFormView(CDataView::IDD)
{
//{{AFX_DATA_INIT(CDataView)
m_name = _T("");
//}}AFX_DATA_INIT
}
BOOL CDataView::Create(LPCTSTR p1, LPCTSTR p2, DWORD d1,
const RECT& rec, CWnd* pWnd, UINT u1, CCreateContext* pContext)
{
return CFormView::Create(p1,p2,d1,rec,pWnd,u1,pContext);
}
CDataView::~CDataView()
{
}
void CDataView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDataView)
DDX_Control(pDX, IDC_CMBTEMPLATE, m_CombTemp);
DDX_Control(pDX, IDC_LIST_DISPLAYRECORD, m_list);
DDX_Text(pDX, IDC_EDIT_FIND_NAME, m_name);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDataView, CFormView)
//{{AFX_MSG_MAP(CDataView)
ON_BN_CLICKED(IDC_BUTTON_ALLRECORD, OnButtonAllrecord)
ON_BN_CLICKED(IDC_BUTTON_FINDRECORD, OnButtonFindrecord)
ON_NOTIFY(NM_CLICK, IDC_LIST_DISPLAYRECORD, OnClickListDisplayrecord)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_DISPLAYRECORD, OnDblclkListDisplayrecord)
ON_BN_CLICKED(IDC_BUTTON_PRINTRECORD, OnButtonPrintrecord)
ON_BN_CLICKED(IDC_BUTTON_PRINTHISTORY, OnButtonPrinthistory)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDataView diagnostics
#ifdef _DEBUG
void CDataView::AssertValid() const
{
CFormView::AssertValid();
}
void CDataView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDataView message handlers
void CDataView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
LONG lStyle = m_list.SendMessage
(LVM_GETEXTENDEDLISTVIEWSTYLE);
lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
LVS_EX_HEADERDRAGDROP;
m_list.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
(LPARAM)lStyle);
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH ;
lvc.iSubItem = 0;
lvc.pszText = (char *)"ENDSCPID";
lvc.cx = 80;
m_list.InsertColumn(0,&lvc);
lvc.iSubItem =1;
lvc.pszText = (char *)"姓名";
lvc.cx = 80;
m_list.InsertColumn(1,&lvc);
lvc.iSubItem = 2;
lvc.pszText = (char *)"性别";
lvc.cx = 60;
m_list.InsertColumn(2,&lvc);
lvc.iSubItem = 3;
lvc.pszText = (char *)"年龄";
lvc.cx =60;
m_list.InsertColumn(3,&lvc);
lvc.iSubItem = 4;
lvc.pszText = (char *)"联系地址";
lvc.cx = 200;
m_list.InsertColumn(4,&lvc);
lvc.iSubItem = 5;
lvc.pszText = (char *)"检查时间";
lvc.cx = 80;
m_list.InsertColumn(5,&lvc);
lvc.iSubItem = 6;
lvc.pszText = (char *)"检查医生";
lvc.cx = 80;
m_list.InsertColumn(6,&lvc);
lvc.iSubItem = 7;
lvc.pszText = (char *)"超声提示";
lvc.cx = 250;
m_list.InsertColumn(7,&lvc);
lvc.iSubItem = 8;
lvc.pszText = (char *)"超声描述";
lvc.cx = 250;
m_list.InsertColumn(8,&lvc);
// 把模板名称添加到组合框中
CFileFind TempFileFind;
CString szDir;
CString strTitle;
szDir="c:\\temp\\template\\*.*";
BOOL res = TempFileFind.FindFile(szDir);
while(res)
{
res = TempFileFind.FindNextFile();
if(TempFileFind.IsArchived() )
{
strTitle = TempFileFind.GetFileName();
m_CombTemp.AddString(strTitle);
}
}
TempFileFind.Close();
return ;
}
void CDataView::OnButtonAllrecord()
{
CString TempSql;
TempSql="select endscpid,patientname,sex,age,address,checkdrname,checktime,diagnosedesc,checkdesc "
"from patiente_v";
fillList(TempSql);
}
void CDataView::OnButtonFindrecord()
{
UpdateData(TRUE);
if ( strcmp(m_name,"") == 0 )
{
AfxMessageBox("请输入你要查询的姓名");
return;
}
CString strTemp;
strTemp = "select endscpid,patientname,sex,age,address,checkdrname,checktime,diagnosedesc,checkdesc "
"from patiente_v WHERE patientname like '%" + m_name + "%'";
fillList(strTemp);
}
void CDataView::OnClickListDisplayrecord(NMHDR* pNMHDR, LRESULT* pResult)
{
int nSelRows = m_list.GetSelectedCount();
if(!nSelRows)
return;
POSITION pos =m_list.GetFirstSelectedItemPosition();
int i = m_list.GetNextSelectedItem(pos);
if (i != -1)
{
m_patientName= m_list.GetItemText(i, 1);
m_endscpId=m_list.GetItemText(i,0);
m_imagePath=GetImagePathById(m_endscpId);
return;
}
*pResult = 0;
}
void CDataView::OnDblclkListDisplayrecord(NMHDR* pNMHDR, LRESULT* pResult)
{
OnButtonPrintrecord();
*pResult = 0;
}
void CDataView::OnButtonPrintrecord()
{
UpdateData(true);
int i=m_CombTemp.GetCurSel();
if(m_patientName.IsEmpty() || i==-1)
{
AfxMessageBox("请先选择打印模板或记录!!!");
return;
}
outputToDat("new","printRecord");
CXOfficeApp * app=(CXOfficeApp *) AfxGetApp();
app->OpenDocument();
}
void CDataView::outputToDat(CString sLabel,CString sOperationType)
{
if(sOperationType.CompareNoCase("printHistory")==0)
{
m_template="report.doc";
}
else
{
m_CombTemp.GetLBText(m_CombTemp.GetCurSel(),m_template);
}
CFile tmpFile("c:\\temp\\template.DAT",CFile::modeCreate|CFile::modeWrite);
tmpFile.Write(sLabel,lstrlen(sLabel));
tmpFile.Write(",",1);
tmpFile.Write(m_patientName,lstrlen(m_patientName));
tmpFile.Write(",",1);
tmpFile.Write(m_template,lstrlen(m_template));
tmpFile.Write(",",1);
if(m_endscpId.IsEmpty())
m_endscpId="Empty";
tmpFile.Write(m_endscpId,lstrlen(m_endscpId));
tmpFile.Close();
}
bool CDataView::FindFileInDir(CString sTemplate,CString sImagePath)
{
CString szDir,sName;
CFileFind TempFileFind;
szDir=sImagePath+"*.*";
BOOL res = TempFileFind.FindFile(szDir);
while(res)
{
res = TempFileFind.FindNextFile();
if(TempFileFind.IsArchived() )
{
sName = TempFileFind.GetFileName();
if(sName.CompareNoCase("report.doc")==0)
return true;
}
}
return false;
}
void CDataView::OnButtonPrinthistory()
{
UpdateData(true);
if(m_imagePath.IsEmpty())
{
AfxMessageBox("记录没被选中或图片路径不存在!!!");
return;
}
if (m_imagePath.ReverseFind('\\')!=(m_imagePath.GetLength()-1))
{
m_imagePath+="\\";
}
if(FindFileInDir(m_template,m_imagePath))
{
outputToDat("look","printHistory");
_Application app;
app.CreateDispatch(_T("Word.Application"));
app.SetVisible(TRUE);
Documents m_Docs=app.GetDocuments();
CComVariant Filename(m_imagePath+m_template);
CComVariant vTrue(true);
CComVariant vFalse(false);
CComVariant tmp(""),Visible(true);
CComVariant format(1);
m_Docs.Open(&Filename,&vFalse,&vFalse,&vFalse,&tmp,&tmp,&vTrue,
&tmp,&tmp,&format,&tmp,&Visible );
}
else
AfxMessageBox("对不起,不存在该历史文档!!!");
}
CString CDataView::GetImagePathById(CString sId)
{
CString sSql;
CString sResult;
sSql = "select top 1 * from patientimage where endscpid="+sId+" and imagestatus=4";
CADORecordset* pRs = new CADORecordset(CXOfficeApp::g_pDb);
if(pRs->Open((LPCTSTR) sSql ))
{
if(!pRs->IsEof())
{
pRs->GetFieldValue("imagename",sResult);
}
pRs->Close();
}
else
AfxMessageBox("记录集创建失败");
delete pRs;
int ipos=sResult.ReverseFind('\\');
if(ipos>0) sResult=sResult.Left(ipos+1);
return sResult;
}
void CDataView::fillList(CString sSql)
{
m_list.DeleteAllItems();
CADORecordset* pRs = new CADORecordset(CXOfficeApp::g_pDb);
CString TempSql;
int i = -1;
if(pRs->Open((LPCTSTR)sSql))
{
m_list.BeginWaitCursor();
while(!pRs->IsEof())
{
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.state = 0;
lvitem.stateMask = 0;
lvitem.iItem = ++i;
lvitem.iSubItem = 0;
pRs->GetFieldValue("ENDSCPID",TempSql);
lvitem.pszText =TempSql.GetBuffer(TempSql.GetLength());
m_list.InsertItem(&lvitem);
pRs->GetFieldValue("patientname",TempSql);
m_list.SetItemText(i, 1, (LPCTSTR)TempSql);
pRs->GetFieldValue("sex",TempSql);
if (TempSql.CompareNoCase("0"))
TempSql="男";
else
TempSql="女";
m_list.SetItemText(i, 2, (LPCTSTR)TempSql);
pRs->GetFieldValue("age",TempSql);
m_list.SetItemText(i, 3, (LPCTSTR)TempSql);
pRs->GetFieldValue("address",TempSql);
m_list.SetItemText(i, 4, (LPCTSTR)TempSql);
pRs->GetFieldValue("checktime",TempSql);
TempSql=TempSql.Left(10);
m_list.SetItemText(i, 5, (LPCTSTR)TempSql);
pRs->GetFieldValue("checkdrname",TempSql);
m_list.SetItemText(i, 6, (LPCTSTR)TempSql);
pRs->GetFieldValue("diagnosedesc",TempSql);
m_list.SetItemText(i, 7, (LPCTSTR)TempSql);
pRs->GetFieldValue("checkdesc",TempSql);
m_list.SetItemText(i, 8, (LPCTSTR)TempSql);
pRs->MoveNext();
}
pRs->Close();
m_list.EndWaitCursor();
}
else
AfxMessageBox("记录集创建失败");
delete pRs;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -