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

📄 function.cpp

📁 本人工作中的一个软件开发实例。里面包含了数据库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/**
* 
* 文件名称:function.cpp
* 文件标识:
* 摘    要:实现公用函数
* 
* 当前版本:1.0
* 作    者:输入作者(或修改者)名字
* 完成日期:2003年5月8日
*/cc

#include "function.h"
#include "StdAfx.h"
#include "OIL.h"

extern  COILApp theApp;
/*********************************************************
全局变量
**********************************************************/
struct tagGlobal  theGlobal;
/********************************************************
全局常量
*********************************************************/
//下边三个常量代表登录人员角色描述
const CString gc_SuperMakeout = "开票系统超级用户";
const CString gc_SuperSendout = "发油系统超级用户";
const CString gc_Ticket	   = "开票用户";
const CString gc_Manage	   = "发油用户";

//员工的职责
const CString gc_MakeOut  = "开票";
const CString gc_SendOut  = "发油";
const CString gc_Spot     = "现场";
const CString gc_Guarder  = "门卫";
const CString gc_Handle   = "经办人";
const CString gc_Account  = "财务";
const CString gc_Manager  = "值长";

//常数代表重油,柴油
const CString gc_DieselOil  = "柴油";
const CString gc_Gas		 = "汽油";
const CString gc_HeavyOil   = "重油";

/*********************************************************
//从SQL语句刷新ListCtrl
//pListCtrl为列表控件指针
//sql为将要执行的SQL语句
*********************************************************/
void ReadtoListCtrl(CListCtrl *pListCtrl,CString sql)
{
	//定义数据集	
	_RecordsetPtr       m_pRecordset; 

	//删除所有list中的数据。
	pListCtrl->DeleteAllItems();

	int numline=0;
	try
	{
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		if(!m_pRecordset->adoEOF)		
		{
			LV_ITEM lvitem;
			lvitem.pszText="";
			lvitem.mask=LVIF_TEXT;
			lvitem.iSubItem=0;
             
			//得到记录集字段个数
	        int m_nColumCount=m_pRecordset->Fields->Count;

			//处理每条记录
			while(!m_pRecordset->adoEOF)
			{   //定义返回值
				_variant_t      vtTemp;

				//插入一行
				lvitem.iItem=numline;
				pListCtrl->InsertItem(&lvitem);

				//读出数据写入到list中
				for(int i=0;i<m_nColumCount;i++)
				{
					vtTemp=m_pRecordset->Fields->GetItem((long )i)->GetValue();
					CString strTemp;
					switch(vtTemp.vt)
					{
						case VT_UI1: //字符
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_BSTR: //字符串
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_I2:   //短整数
							strTemp.Format("%d", (short int)vtTemp);
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_I4:   //整数
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case 14:   //长整数
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_I8:   //长整数
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_R4:   //实数
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_R8:   //双精度数
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_DATE:  //日期
							strTemp=(LPCTSTR)(_bstr_t)vtTemp;
							strTemp=strTemp.Left(10);   //去掉时间
							pListCtrl->SetItemText(numline,i,strTemp);	
							break;
						case VT_NULL:  //空值
							strTemp="";
							pListCtrl->SetItemText(numline,i,strTemp);
							break;
						case VT_EMPTY: //NULL
							strTemp="";
							pListCtrl->SetItemText(numline,i,strTemp);
							break;
						default:      //错误
							AfxMessageBox("求知数据类型");
							break;
					}//End Switch
				}//End fro

				numline++;
				m_pRecordset->MoveNext();
			}//end while
		}//end else
		m_pRecordset->Close();
	}//end try
	catch(_com_error e)///捕捉异常
	{
		CString temp;
		temp.Format("连接数据库错误信息:%s",e.ErrorMessage());
		AfxMessageBox(temp);
		return;
	}
}

/***********************
高亮ListCtrl控件中所选列
***********************/
void DispListCtrlRow(CListCtrl *pListCtrl,int nItem)
{
    pListCtrl->EnsureVisible(nItem,true);
	pListCtrl->SetItemState(nItem,LVNI_FOCUSED|LVNI_SELECTED,LVNI_FOCUSED|LVNI_SELECTED);
	pListCtrl->SetFocus();
}

/**********************
修改指定行的数据
***********************/
void EditLineToListCtrl(CListCtrl *pListCtrl,CString sql)
{

}

/**********************
增加一行数据到ListCtrl
***********************/
void ListCtrlAddLine(CListCtrl *pListCtrl,CString sql)
{
    
}
/**********************
删除ListCtrl中一行数据
***********************/
void ListCtrlDelLine(CListCtrl *pListCtrl,int nItem)
{
    
}

/***********************************************************
//初始化ComboBox
//pComboBox要初始化的ComboBox
//sql查询语句
************************************************************/
void ReadtoComBoBox(CComboBox *pComboBox,CString sql)
{
	//定义数据集	
	_RecordsetPtr       m_pRecordset; 

	//删除所有ComboBox中的数据。
	pComboBox->ResetContent();

	int numline=0;
	try
	{
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		if(!m_pRecordset->adoEOF)
		{
			//多个字段
			int m_nColumCount=m_pRecordset->Fields->Count;
			if(m_nColumCount!=1) 
			{
				AfxMessageBox("SQL记录集多于一个字段");
				return;
			}
			//处理每条记录
			while(!m_pRecordset->adoEOF)
			{   
				//读出数据写入到ComboBox中  
				pComboBox->AddString((LPCTSTR)(_bstr_t)m_pRecordset->Fields->GetItem((long )0)->GetValue());		

				numline++;
				m_pRecordset->MoveNext();
			}
		}
		m_pRecordset->Close();
	}
	catch(_com_error e)///捕捉异常
	{
		CString temp;
		temp.Format("连接数据库错误信息:%s",e.ErrorMessage());
		AfxMessageBox(temp);
		return;
	}
}

/**************************
//初始化职责ComboBox
***************************/
void InitDutyComboBox(CComboBox *pComboBox)
{
    pComboBox->AddString("开票");
    pComboBox->AddString("发油");
	pComboBox->AddString("现场");
	pComboBox->AddString("门卫");
	pComboBox->AddString("经办人");
	pComboBox->AddString("财务");
	pComboBox->SelectString(0,"开票");
}

/**********************************
//初始化性别ComboBox
*************************************/
void InitSexComboBox(CComboBox *pComboBox)
{   
    pComboBox->AddString("M");
    pComboBox->AddString("F");
	pComboBox->SelectString(0,"M");
}

/**********************************
//初始化客户ComboBox
*************************************/
void InitCustomerComboBox(CComboBox *pComboBox)
{   
   CString sql="Select CustomerName from customer";
   ReadtoComBoBox(pComboBox,sql);
}

/****************************
显示指定字符串,如果没有则显示空
****************************/
void DisplayComBoBox(CComboBox *pComboBox,CString str)
{
    int nIndex =pComboBox->SelectString(0,str);
	ASSERT(nIndex != LB_ERR);
}

/******************************
//显示指定字符串,nIndex为字符串序号
*******************************/
void DisplayComBoBox(CComboBox *pComboBox,int nIndex)
{
	 //CString strTemp;
     //pComboBox->GetLBText(0,strTemp);
	 pComboBox->SetCurSel(nIndex);
}

/***********************************************************
//得到自动编号
//sql:从数据库表中取最大值的SQL语句
//nLen:最右为数据的个数
***********************************************************/
CString GetAutoID(CString sql,int nLen)
{
	CString				strReturn;		//返回值  	
	char				tmpstr[20];     //临时串
	_RecordsetPtr       m_pRecordset; 	//定义数据集
  
	memset(tmpstr,'0',nLen);            //变量初始化
	tmpstr[nLen]='\0';
    try
	{
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		if(!m_pRecordset->adoEOF)

⌨️ 快捷键说明

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