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

📄 query.cpp

📁 超声影像工作站系统可与各种型号的B超、彩超连接
💻 CPP
字号:
// Query.cpp : implementation file
//

#include "stdafx.h"
#include "bxt.h"
#include "Query.h"
#include "SelPic.h"
#include "Pic.h"
#include "BxtDlg.h"
#include "Direct.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#include "glbfun.h"

/////////////////////////////////////////////////////////////////////////////
// Query dialog


Query::Query(CWnd* pParent /*=NULL*/)
	: CDialog(Query::IDD, pParent)
{
	//{{AFX_DATA_INIT(Query)
	m_doctor = _T("");
	m_illname = _T("");
	m_result = _T("");
	//}}AFX_DATA_INIT
}


void Query::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Query)
	DDX_Control(pDX, IDC_RICHEDIT_REPORT, m_rich);
	DDX_Control(pDX, IDC_MSFLEXGRID1, m_grd);
	DDX_Text(pDX, IDC_EDIT_DOCTOR, m_doctor);
	DDX_Text(pDX, IDC_EDIT_ILLNAME, m_illname);
	DDX_Text(pDX, IDC_EDIT_RESULT, m_result);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Query, CDialog)
	//{{AFX_MSG_MAP(Query)
	ON_BN_CLICKED(IDC_BUTTON_DELETERECORD, OnButtonDeleterecord)
	ON_BN_CLICKED(IDC_BUTTON_PRINT_REPORT, OnButtonPrintReport)
	ON_BN_CLICKED(IDC_BUTTON_PRINT_REPORT2, OnButtonPrintReport2)
	ON_BN_CLICKED(IDC_BUTTON_DEAL_WITH_IMAGE, OnButtonDealWithImage)
	ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
	ON_BN_CLICKED(IDC_BUTTON14, OnButton14)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WX_QUERY,QueryRun)
	ON_MESSAGE(WX_SETRECORDID,SetRecordID)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Query message handlers

BOOL Query::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_grd.SetRows(1);
	m_grd.SetCols(9);
    m_grd.SetRow(0);

	m_grd.SetCol(1);	m_grd.SetText( "超声号" );
	m_grd.SetCol(2);	m_grd.SetText( "姓名" );
	m_grd.SetCol(3);	m_grd.SetText( "性别" );
	m_grd.SetCol(4);	m_grd.SetText( "年龄" );
	m_grd.SetCol(5);	m_grd.SetText( "科别" );
	m_grd.SetCol(6);	m_grd.SetText( "确诊疾病" );
	m_grd.SetCol(7);	m_grd.SetText( "检查部位" );
	m_grd.SetCol(8);	m_grd.SetText( "检查日期" );

	m_grd.SetColWidth(0,200);
	m_grd.SetColWidth(1,1450);
	m_grd.SetColWidth(2,1200);
	m_grd.SetColWidth(3,600);
	m_grd.SetColWidth(4,600);
	m_grd.SetColWidth(5,1500);
	m_grd.SetColWidth(6,1500);
	m_grd.SetColWidth(7,1000);
	m_grd.SetColWidth(8,2900);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void
Query::QueryRun(WPARAM wParm,LPARAM lParm)
{
	HENV	henv;
	HDBC	hdbc;
	HSTMT	hstmt;

	SQLAllocEnv(&henv);
	SQLAllocConnect(henv,&hdbc);
	SQLConnect(hdbc,(unsigned char *)"BXX",SQL_NTS,NULL,0,NULL,0);
	SQLAllocStmt(hdbc,&hstmt);

	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLFreeStmt(hstmt,SQL_CLOSE);
	char ts[68000];
	RETCODE rt;
	SDWORD cbValue;
	if ((char *)lParm == NULL)
	{
		strcpy(ts,"SELECT ID,NAME,SEX,AGE,CLASS,ILLNAME,CHECKPOS,CHECKDATE FROM REPORT ORDER BY ID");
	}
	else
	{
		strcpy(ts,(char *)lParm);
	}
	rt = SQLExecDirect(hstmt, (unsigned char *)ts, SQL_NTS);

	m_grd.SetRedraw(FALSE);
	m_grd.SetRows(1);

	CString field;
	for (int row = 2;; row++)
	{
		rt = SQLFetch(hstmt);
		if (rt != SQL_SUCCESS && rt != SQL_SUCCESS_WITH_INFO) break;

		m_grd.SetRows(row);
		m_grd.SetRow(row-1);
		
		for (int i = 1; i <= 8; i++)
		{
			m_grd.SetCol(i);
			if (i != 4)
			{
				memset(ts,0,sizeof(ts));
				rt	= SQLGetData(hstmt,i,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
				field = ts;
				field.TrimLeft();
				field.TrimRight();
				m_grd.SetText(field);
			}
			else
			{
				int age;
				char buf[10];
				rt	= SQLGetData(hstmt,i,SQL_C_SLONG,&age,sizeof(int),&cbValue);
				m_grd.SetText(itoa(age,buf,10));
			}
		}
	}
	m_grd.SetRedraw(TRUE);
	m_grd.Invalidate(TRUE);

	SQLFreeStmt(hstmt,SQL_DROP);
	SQLDisconnect(hdbc);
	SQLFreeConnect(hdbc);
	SQLFreeEnv(henv);

	ShowCurrentRecordInfo();
/*
	if (row > 2)
	{
		
	}
	else
	{
		m_doctor	= "";
		m_illname	= "";
		m_result	= "";
		CString	richtext = "";
		EDITSTREAM es	= {(DWORD)&richtext, 0, EditStreamCallBack};
		m_rich.StreamIn(SF_RTF, es);
	}
*/
	UpdateData(false);

/*
	if(rs.IsOpen()) 
	{
		rs.Close();
		m_grd.SetRows(1);
	}

	rs.Open(AFX_DAO_USE_DEFAULT_TYPE,(LPCTSTR)lParm);
	//rs.Open(AFX_DAO_USE_DEFAULT_TYPE,"select * from report");
	rs.MoveFirst();
	char xage[10];
	while(! rs.IsEOF())
	{
		m_grd.SetRows(m_grd.GetRows()	+ 1);
		m_grd.SetRow(m_grd.GetRows()	- 1);
		m_grd.SetCol(1);	m_grd.SetText(rs.m_ID);
		m_grd.SetCol(2);	m_grd.SetText(rs.m_NAME);
		m_grd.SetCol(3);	m_grd.SetText(rs.m_SEX);
		//if(rs.m_AGE 
		if(rs.m_AGE > 200)	rs.m_AGE =0;
		if(rs.m_AGE < 0)	rs.m_AGE =0;
		sprintf(xage,"%d",rs.m_AGE );
		m_grd.SetCol(4);	m_grd.SetText(xage);
		m_grd.SetCol(5);	m_grd.SetText(rs.m_CLASS);
		m_grd.SetCol(6);	m_grd.SetText(rs.m_ILLNAME);
		m_grd.SetCol(7);	m_grd.SetText(rs.m_CHECKPOS);
		m_grd.SetCol(8);	m_grd.SetText(rs.m_CHECKDATE);
		rs.MoveNext();
	}
*/
}

BEGIN_EVENTSINK_MAP(Query, CDialog)
    //{{AFX_EVENTSINK_MAP(Query)
	ON_EVENT(Query, IDC_MSFLEXGRID1, -600 /* Click */, OnClickMsflexgrid1, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void Query::OnOK() 
{
//	CDialog::OnOK();
}

void Query::OnCancel() 
{

//	CDialog::OnCancel();
}

void Query::OnButtonDeleterecord() 
{
	char	sql[2000];
	CString id;

	id	= m_grd.GetTextMatrix(m_grd.GetRow(),1);
	if (id.IsEmpty())
	{
		AfxMessageBox("请选择超声编号!");
		return;
	}

	if (id == m_currentid)
	{
		AfxMessageBox("禁止删除当前记录!");
		return;
	}

	sprintf(sql,"DELETE FROM REPORT WHERE ID='%s'",id.GetBuffer(id.GetLength()));

	HENV henv;
	HDBC  hdbc;
	HSTMT hstmt;

	SQLAllocEnv(&henv);
	SQLAllocConnect(henv,&hdbc);
	SQLConnect(hdbc,(unsigned char *)"BXX",SQL_NTS,NULL,0,NULL,0);
	SQLAllocStmt(hdbc,&hstmt);

	RETCODE rt;
	SQLFreeStmt(hstmt,SQL_CLOSE);

	rt = SQLExecDirect(hstmt, (unsigned char*)sql, SQL_NTS);

	SQLFreeStmt(hstmt,SQL_DROP);
	SQLDisconnect(hdbc);
	SQLFreeConnect(hdbc);
	SQLFreeEnv(henv);

	QueryRun(0,0);

	CString path;
	path	= ((CBxtDlg *)AfxGetMainWnd())->m_imagepath;
	path	+= id;
	DeleteDir(path.GetBuffer(path.GetLength()));
}

void Query::OnClickMsflexgrid1()
{
	ShowCurrentRecordInfo();
}

void Query::SetRecordID(WPARAM wParm, LPARAM lParm)
{
	strcpy(m_currentid,(char *)lParm);
}

void Query::OnButtonPrintReport()
{
	((CBxtDlg *)AfxGetMainWnd())->PrintReport(false,2);
}

void Query::OnButtonPrintReport2() 
{
	((CBxtDlg *)AfxGetMainWnd())->PrintReport(false,4);
}

BOOL Query::DeleteDir(char *path)
{
	CFileFind tt;
	BOOL FindSuccess;

	char fn[1000];
	sprintf(fn,"%s\\*.*",path);
	FindSuccess	= tt.FindFile(fn);
	while(FindSuccess)
	{
		FindSuccess	= tt.FindNextFile();
		if (!tt.IsDirectory())
			DeleteFile(tt.GetFilePath());
	}
	tt.Close();
	RemoveDirectory(path);
	return true;
}

void Query::OnButtonDealWithImage() 
{
	CString	picpath;
	picpath	= ((CBxtDlg *)AfxGetMainWnd())->m_imagepath;
	picpath	+= m_id;
	picpath	+= "\\";
	
	((CBxtDlg *)AfxGetMainWnd())->imgpcs->ReFresh(picpath.GetBuffer(picpath.GetLength()));

	((CBxtDlg *)AfxGetMainWnd())->m_m.SelectTab(1);
	((CBxtDlg *)AfxGetMainWnd())->TabSelChange(IDC_TAB1,0);
}

void Query::ShowCurrentRecordInfo()
{
	m_id	= m_grd.GetTextMatrix(m_grd.GetRow(),1);
	//if (m_id.GetLength() != 13) return;
	
	HENV	henv;
	HDBC	hdbc;
	HSTMT	hstmt;

	SQLAllocEnv(&henv);
	SQLAllocConnect(henv,&hdbc);
	SQLConnect(hdbc,(unsigned char *)"BXX",SQL_NTS,NULL,0,NULL,0);
	SQLAllocStmt(hdbc,&hstmt);

	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLFreeStmt(hstmt,SQL_CLOSE);
	char ts[68000];
	RETCODE rt;
	SDWORD cbValue;
	sprintf(ts,"SELECT REPORT,RESULT,DOCTER,ILLNAME,HOSPID,BEDID,CLASS,NAME,SEX,AGE,DEVICE,CHECKSTYLE,CHECKPOS,CHECKDATE FROM REPORT WHERE ID='%s'",m_grd.GetTextMatrix(m_grd.GetRow(),1));
	rt = SQLExecDirect(hstmt, (unsigned char *)ts, SQL_NTS);
	rt = SQLFetch(hstmt);

	strcpy(ts,"");
	rt	= SQLGetData(hstmt,1,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	CString xtemp;
	xtemp	= ts;
	EDITSTREAM es	= {(DWORD)&xtemp, 0, EditStreamCallBack};
	m_rich.StreamIn(SF_RTF, es);

	rt	= SQLGetData(hstmt,2,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_result	= ts;
	rt	= SQLGetData(hstmt,3,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_doctor	= ts;
	rt	= SQLGetData(hstmt,4,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_illname	= ts;
	rt	= SQLGetData(hstmt,5,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_hospid	= ts;
	rt	= SQLGetData(hstmt,6,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_bedid		= ts;
	rt	= SQLGetData(hstmt,7,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_class		= ts;
	rt	= SQLGetData(hstmt,8,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_name		= ts;
	rt	= SQLGetData(hstmt,9,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_sex		= ts;
	rt	= SQLGetData(hstmt,10,SQL_C_SLONG,&m_age,sizeof(m_age),&cbValue);
//	m_age		= ts;
	rt	= SQLGetData(hstmt,11,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_device	= ts;
	rt	= SQLGetData(hstmt,12,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_checkstyle= ts;
	rt	= SQLGetData(hstmt,13,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_checkpos	= ts;
	rt	= SQLGetData(hstmt,14,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
	m_checkdate	= ts;

	SQLFreeStmt(hstmt,SQL_DROP);
	SQLDisconnect(hdbc);
	SQLFreeConnect(hdbc);
	SQLFreeEnv(henv);
	
	UpdateData(false);
}

void Query::OnButton5() 
{
	((CBxtDlg *)AfxGetMainWnd())->PrintReport(false,3);	
}

void Query::OnButton14() 
{
	((CBxtDlg *)AfxGetMainWnd())->PrintReport(false,5);		
}

⌨️ 快捷键说明

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