📄 function.cpp
字号:
/**
*
* 文件名称: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 + -