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

📄 geninfo.cpp

📁 CT工作站具有打印报告、病历管理、图像处理专家词库等功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	ADD();
	return;
/*
	UpdateData();
	HENV	henv;
	HDBC	hdbc;
	HSTMT	hStmt;

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

	SQLFreeStmt(hStmt,SQL_CLOSE);
	SQLFreeStmt(hStmt,SQL_CLOSE);
	RETCODE rt;
	SDWORD cbValue;
	char ts[4000];

	while(m_id.GetLength()<10)
	m_id = "0" + m_id;

	sprintf(ts,"SELECT NAME,SEX,AGE,CLASS,BEDID,HOSPID,CHECKSTYLE,CHECKPOS,ADDRESS,POSTCODE,TELPHONE,DOCTER,ILLNAME,RESULT,REPORT,CHECKDATE FROM REPORT where ID='%s'",m_id);
	rt = SQLExecDirect(hStmt, (unsigned char *)ts, SQL_NTS);


	CString sField;
	rt = SQLFetch(hStmt);
	if (!(rt != SQL_SUCCESS && rt != SQL_SUCCESS_WITH_INFO) )
	{
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,1,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_name=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));

		rt	= SQLGetData(hStmt,2,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_sex=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,3,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_age=atoi(sField);
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,4,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_class=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,5,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_bedid=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,6,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_hospid=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,7,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_checkstyle=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,8,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_checkpos=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,9,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_address=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,10,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_postcode=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,11,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_telphone=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,12,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		((CBxtDlg*)AfxGetMainWnd())->report->SendMessage(WX_SETRPT,1,(long)sField.GetBuffer(6000));
		//m_telphone=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		
		 rt	= SQLGetData(hStmt,13,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		((CBxtDlg*)AfxGetMainWnd())->report->SendMessage(WX_SETRPT,2,(long)sField.GetBuffer(6000));
		//m_telphone=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,14,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		((CBxtDlg*)AfxGetMainWnd())->report->SendMessage(WX_SETRPT,3,(long)sField.GetBuffer(6000));
		//m_telphone=sField;
		//UpdateData(false);
		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,15,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
    	//m_telphone=sField;
		((CBxtDlg*)AfxGetMainWnd())->report->SendMessage(WX_SETRPT,4,(long)sField.GetBuffer(6000));

		memset(ts,0,sizeof(ts));
		rt	= SQLGetData(hStmt,16,SQL_C_CHAR,ts,sizeof(ts),&cbValue);
		sField = ts;
		sField.TrimLeft();
		sField.TrimRight();
		m_date = sField.Left(14);
		m_time = sField.Right(12);
		UpdateData(false);
		m_isnew	= false;
		CString		path;
		path		= ((CBxtDlg *)AfxGetMainWnd())->m_imagepath;
		path		+= m_id;
		//_mkdir(path.GetBuffer(path.GetLength()));
		((CBxtDlg *)AfxGetMainWnd())->m_workingpath	= path;

		//char id[20];
		//strcpy(id,m_id);
		((CBxtDlg *)AfxGetMainWnd())->m_currentid = m_id;
		int imgNum=1;
		char xfilename[300];
		while(true)
		{
			sprintf(xfilename,"%s\\%d.jpg",path.GetBuffer(200),imgNum);
			FILE *fp;
			fp	= fopen(xfilename,"rb");
			if (fp != NULL)
			{
				fclose(fp);
				imgNum++;
			}
			else
			{
				break;
			}
		}
		((CBxtDlg *)AfxGetMainWnd())->rec->CapturedNum = imgNum;
	}
	else
	{
		//AfxMessageBox("没有该编号的记录!");
	}
	SQLFreeStmt(hStmt,SQL_DROP);
	SQLDisconnect(hdbc);
	SQLFreeConnect(hdbc);
	SQLFreeEnv(henv);
*/	
}

BOOL GenInfo::ADD()
{
	HENV		henv;				//	ODBC
	HDBC		hdbc;				//	ODBC
	HSTMT		hStmt;				//	ODBC
	CString		sBaseID;			//	CT Base ID
	CString		sID;				//	CT ID
	INT			i;

	UpdateData(TRUE);

	sBaseID		= m_id;
	GetBaseID(sBaseID);

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

	SQLFreeStmt(hStmt, SQL_CLOSE);
	SQLFreeStmt(hStmt, SQL_CLOSE);

	sID	= sBaseID;
	if	(!RecordExist(hStmt, sID.GetBuffer(sID.GetLength())))
	{
		FillNewRecord(sID);
		m_isnew		= TRUE;
	}
	else
	{
		for	(i = 0; i < 26; i++)
		{
			sID	= sBaseID + (CHAR)('A' + i);
			if	(!RecordExist(hStmt, sID.GetBuffer(sID.GetLength())))
			{
				GetRecordInfo(hStmt, sBaseID.GetBuffer(sBaseID.GetLength()));
				m_id	= sID;
				m_isnew	= TRUE;
				UpdateData(FALSE);
				break;
			}
		}		
	}

	SQLFreeStmt(hStmt, SQL_DROP);
	SQLDisconnect(hdbc);
	SQLFreeConnect(hdbc);
	SQLFreeEnv(henv);
	
	return	(TRUE);
}

BOOL
GenInfo::RecordExist(HSTMT hStmt, CHAR *sID)
{
	RETCODE		rt;					//	Return Code
	CHAR		sql[1000];
	INT			iCount;
	LONG		cbValue;

	sprintf(sql, "SELECT COUNT(*) FROM REPORT WHERE ID='%s'", sID);
		SQLExecDirect(hStmt, (unsigned char *)(sql), SQL_NTS);
	rt	= SQLFetch(hStmt);
	rt	= SQLGetData(hStmt, 1, SQL_C_LONG, &iCount, sizeof(INT), &cbValue);
	::SQLFreeStmt(hStmt, SQL_CLOSE);

	return	(0 == iCount) ? (FALSE) : (TRUE);
}

BOOL
GenInfo::GetBaseID(CString &sID)
{
	CString		sLastChar;
	CString		sChar;
	INT			iIDLen;
	INT			i;

	sID.MakeUpper();
	sLastChar	= sID.Right(1);

	if	(sLastChar >= "A" && sLastChar <= "Z")
	{
		sID	= sID.Left(sID.GetLength() - 1);
	}
	else
	{
		sLastChar	= "";
	}
	iIDLen	= sID.GetLength();

	if	(iIDLen > 10)	return	(FALSE);
	for	(i = 0; i < iIDLen; i++)
	{
		sChar	= sID.Mid(i, 1);
		if	(sChar < "0" || sChar > "9")	return	(FALSE);		
	}

	while	(sID.GetLength() < 10)	sID	= "0" + sID;

	return	(TRUE);
}

BOOL
GenInfo::FillNewRecord(CString sID)
{
	m_id		= sID;
	m_name		= "";
	m_sex		= "男";
	m_age		= 0;
	m_class		= "";
	m_bedid		= "";
	m_hospid	= "";
	m_checkstyle= "";
	m_checkpos	= "";
	m_telphone	= "";
	m_address	= "";
	m_postcode	= "0";
	m_date		= "";
	m_time		= "";

	UpdateData(FALSE);

	return	(TRUE);
}

BOOL
GenInfo::GetRecordInfo(HSTMT hStmt, CHAR *sBaseID)
{
	RETCODE		rt;					//	Return Code
	CHAR		sql[1000];
	LONG		cbValue;
	CHAR		sBuf[1000];
	CString		sField;
	INT			i;
	CString		*svp[]	= {NULL,	//	0
		&m_name,					//	1
		&m_sex,						//	2
		NULL,						//	3
		&m_class,					//	4
		&m_bedid,					//	5
		&m_hospid,					//	6
		&m_checkstyle,				//	7
		&m_checkpos,				//	8
		NULL,	//	&m_address,					//	9
		NULL,						//	10
		NULL,	//	&m_telphone,				//	11
		NULL,	//	&m_postcode,				//	12
		NULL,						//
		NULL,
		NULL,
		NULL,
		NULL,
		NULL};

	sprintf(sql, "SELECT NAME,SEX,AGE,CLASS,BEDID,HOSPID,CHECKSTYLE,CHECKPOS,ADDRESS,POSTCODE,TELPHONE,DOCTER,ILLNAME,RESULT,REPORT,CHECKDATE FROM REPORT WHERE ID='%s'", sBaseID);

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

	if (rt != SQL_SUCCESS && rt != SQL_SUCCESS_WITH_INFO)	return	(FALSE);

	for	(i = 1; i <= 16; i++)
	{
		memset(sBuf, 0, sizeof(sBuf));
		rt	= SQLGetData(hStmt,	i, SQL_C_CHAR, sBuf, sizeof(sBuf), &cbValue);
		sField		= sBuf;
		sField.TrimLeft();
		sField.TrimRight();
		if	(3 == i)				m_age		= atoi(sField);
		else if	(NULL != svp[i])	*svp[i]		= sField;
	}

	::SQLFreeStmt(hStmt, SQL_CLOSE);
	return	(TRUE);
}

⌨️ 快捷键说明

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