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

📄 dataview.cpp

📁 一个模板打印的源程序。可用于医院诊断报告的打印。
💻 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 + -