📄 medmandlg.cpp
字号:
// MedManDlg.cpp : implementation file
//
#include "stdafx.h"
#include "HosptialMan.h"
#include "MedManDlg.h"
#include "MedEditDlg.h"
#include "Medicine.h"
#include "columns.h"
#include "column.h"
#include "COMDEF.H"
#include "_recordset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMedManDlg dialog
CMedManDlg::CMedManDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMedManDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMedManDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CMedManDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMedManDlg)
DDX_Control(pDX, IDC_SEL_COMBO, m_Sel);
DDX_Control(pDX, IDC_ADODC1, m_Adodc);
DDX_Control(pDX, IDC_ADODC2, m_AdoType);
DDX_Control(pDX, IDC_DATAGRID1, m_DataGrid);
DDX_Control(pDX, IDC_TYPE_DATACOMBO, m_Type);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMedManDlg, CDialog)
//{{AFX_MSG_MAP(CMedManDlg)
ON_CBN_SELCHANGE(IDC_SEL_COMBO, OnSelchangeSelCombo)
ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
ON_BN_CLICKED(IDC_EDIT_BUTTON, OnEditButton)
ON_BN_CLICKED(IDC_DELT_BUTTON, OnDeltButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMedManDlg message handlers
// 刷新记录
void CMedManDlg::RefreshData()
{
CString cSql; //设置SELECT语句
cSql = "SELECT m.MedId, m.Flag, (CASE WHEN m.Flag=0 THEN '中药' ELSE '西药' END) AS 种类,";
cSql += " m.MedName AS 药品名称, m.TypeId, b.TypeName AS 类别,";
cSql += " m.UnitId, b1.TypeName AS 单位, m.BuyPrice AS 进货价格, m.SalePrice AS 门诊价格,";
cSql += " m.Total AS 库存数量 FROM Medicine m, BaseType b, BaseType b1 ";
cSql += " WHERE b.TypeId=2 AND m.TypeId=b.Id AND m.UnitId=b1.Id AND b1.TypeId=3";
// 查询条件(类别)是否为空
CString cTypeId;
if(m_Sel.GetCurSel()==1)
{
cTypeId = m_Type.GetBoundText();
if (cTypeId!="")
cSql += " AND m.TypeId="+cTypeId;
}
// MessageBox(cSql);
//设置记录源
m_Adodc.SetRecordSource((LPCTSTR)(_bstr_t)cSql);
m_Adodc.Refresh();
// 设置列宽度
_variant_t vIndex;
vIndex = long(0);
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
vIndex = long(1);
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
vIndex = long(2); // 药品种类
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(40);
vIndex = long(3); // 药品名称
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(100);
vIndex = long(4); // 类别
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
vIndex = long(5); // 类别
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(60);
vIndex = long(6); // 单位
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
vIndex = long(7); // 单位
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(30);
vIndex = long(8); // 进货价格
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(80);
vIndex = long(9); // 门诊价格
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(80);
vIndex = long(10); // 库存数量
m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(80);
}
void CMedManDlg::OnSelchangeSelCombo()
{
if(m_Sel.GetCurSel()==0) //如果选择全部,则隐藏后面的组合框,否则显示
GetDlgItem(IDC_TYPE_DATACOMBO)->ShowWindow(SW_HIDE);
else
GetDlgItem(IDC_TYPE_DATACOMBO)->ShowWindow(SW_SHOW);
RefreshData(); //根据查询条件读取查询记录
}
BEGIN_EVENTSINK_MAP(CMedManDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CMedManDlg)
ON_EVENT(CMedManDlg, IDC_TYPE_DATACOMBO, -600 /* Click */, OnClickTypeDatacombo, VTS_I2)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CMedManDlg::OnClickTypeDatacombo(short Area)
{
RefreshData();
}
void CMedManDlg::OnAddButton()
{
CMedEditDlg dlg; //定义编辑对话框对象
dlg.cMId = ""; //设置cMId="",表示插入记录
if(dlg.DoModal() == IDOK) //打开对话框,如果用户单击“确定”按钮返回,则刷新显示
RefreshData();
}
void CMedManDlg::OnEditButton()
{
if (m_Adodc.GetRecordset().GetEof())
{
MessageBox("请选择要修改的数据");
return;
}
CMedEditDlg dlg; //定义编辑对话框对象
dlg.cMId = m_DataGrid.GetItem(0); //读取记录编号
dlg.cFlg = m_DataGrid.GetItem(1); //读取药品分类
dlg.m_MedName = m_DataGrid.GetItem(3); //读取药品名称
dlg.cMedName = m_DataGrid.GetItem(3);
dlg.cTId = m_DataGrid.GetItem(4); //读取药品类别编号
dlg.cUId = m_DataGrid.GetItem(6); //读取药品单位编号
dlg.m_BuyPrice = atof(m_DataGrid.GetItem(8)); //读取进货价格
dlg.m_SalePrice = atof(m_DataGrid.GetItem(9)); //读取门诊价格
dlg.m_Total = atof(m_DataGrid.GetItem(10)); //读取药品总数
if(dlg.DoModal()==IDOK) //打开对话框,,如果用户单击“确定”按钮返回,则刷新显示
RefreshData();
}
void CMedManDlg::OnDeltButton()
{
if (m_Adodc.GetRecordset().GetEof())
{
MessageBox("请选择要删除的数据");
return;
}
//确认删除
if (MessageBox("是否删除当前记录?","请确认", MB_YESNO) == IDYES)
{
CMedicine cMed;
cMed.sql_Delete(m_DataGrid.GetItem(0));
RefreshData();
}
}
BOOL CMedManDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_Sel.SetCurSel(0);
// 当查询条件为全部时,不显示类别信息
GetDlgItem(IDC_TYPE_DATACOMBO)->ShowWindow(SW_HIDE);
RefreshData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -