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

📄 adoconn.cpp

📁 这个是一个比较全的超市管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		fValue=0;
		break;
	case VT_ERROR:
		fValue=0;
		break;
	case VT_EMPTY:
		fValue=0;
		break;
	default:
		fValue=vValue.fltVal;
	}
	strType.Format("%d.%d",strLSum,strRSum);
	strType="%"+strType+"f";
	strValue.Format(strType,fValue);
	return strValue;
}
//功能:取得字段中的长整型整数的字符串
//index:字段集中的索引
long CADOConn::GetValueLong(int index)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	long lValue;//数值返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		lValue=0;
		break;
	case VT_ERROR:
		lValue=0;
		break;
	case VT_EMPTY:
		lValue=0;
		break;
	default:
		lValue=vValue.lVal;
	}
	return lValue;
}
//功能:取得字段中的长整型整数的字符串形式
//index:字段集中的索引
//strSum:返回的字符的长度(<=实际:代表全部返回,>实际:左补空格)
CString CADOConn::GetValueLongStr(int index,int strSum)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	long lValue;//数值返回值
	CString strValue,strType;//strValue:字符串返回值 strType:格式化字符串
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		lValue=0;
		break;
	case VT_ERROR:
		lValue=0;
		break;
	case VT_EMPTY:
		lValue=0;
		break;
	default:
		lValue=vValue.lVal;
	}
	strType.Format("%d",strSum);
	strType="%"+strType+"d";
	strValue.Format(strType,lValue);
	return strValue;	
}
//返回时间型值
//数据库中存的格式为字符串(yyyy-mm-dd HH-MM-SS)
CTime CADOConn::GetValueDate(int index)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	CString strValue;//数值返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		strValue="1980-08-08";
		break;
	case VT_ERROR:
		strValue="1980-08-08";
		break;
	case VT_EMPTY:
		strValue="1980-08-08";
		break;
	default:
		strValue=(LPCSTR)_bstr_t(vValue);
		break;
	}
	CString strYear,strMonth,strDay,strHour,strMin,strSec;
	strYear=strValue.Mid(0,4);
	strMonth=strValue.Mid(5,2);
	strDay=strValue.Mid(8,2);
	if(strValue.GetLength()>10)
	{
		strHour=strValue.Mid(11,2);
		strMin=strValue.Mid(14,2);
		strSec=strValue.Mid(17,2);
	}
	else
	{
		strHour="0";
		strMin="0";
		strSec="0";
	}
	CTime TValue(atoi(strYear),atoi(strMonth),atoi(strDay),atoi(strHour),atoi(strMin),atoi(strSec));
	return TValue;
}
//返回时间型值的字符串
//数据库中存的格式为字符串(yyyy-mm-dd HH-MM-SS)
CString CADOConn::GetValueDateStr(int index,CString strType)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	CString strValue="";//数值返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		strValue="1980-08-08";
		break;
	case VT_ERROR:
		strValue="1980-08-08";
		break;
	case VT_EMPTY:
		strValue="1980-08-08";
		break;
	default:
		strValue=(LPCSTR)_bstr_t(vValue);
		break;
	}
	CString strYear,strMonth,strDay,strHour,strMin,strSec;
	strYear=strValue.Mid(0,4);
	strMonth=strValue.Mid(5,2);
	strDay=strValue.Mid(8,2);
	if(strValue.GetLength()>10)
	{
		strHour=strValue.Mid(11,2);
		strMin=strValue.Mid(14,2);
		strSec=strValue.Mid(17,2);
	}
	else
	{
		strHour="0";
		strMin="0";
		strSec="0";
	}
	CTime TValue(atoi(strYear),atoi(strMonth),atoi(strDay),atoi(strHour),atoi(strMin),atoi(strSec));
	CString str=TValue.Format(strType);
	return str;	
}
//功能:执行SQL语句(Insert Update delete)
//strSQL:SQL语句
//返回值:TRUE:成功 FALSE:失败
BOOL CADOConn::ExecuteSQL(CString strSQL)
{
	try
	{
		// 是否已经连接数据库
		if(m_pConnection == NULL) OnInitCADOConn();
		strSQL.TrimLeft();
		strSQL.TrimRight();
		m_pConnection->Execute(_bstr_t(strSQL),NULL,adCmdText);
		return TRUE;
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
		return FALSE;
	}
}
//功能:退出连接
void CADOConn::ExitConnect()
{
	try
	{
	if (m_pRecordset !=NULL) m_pRecordset->Close();
	if (m_pConnection !=NULL) m_pConnection->Close();
	// 释放环境
	::CoUninitialize();
	}
	catch (_com_error e) 
	{
		AfxMessageBox(e.Description());
	}
}
//功能:向一表中添加一行数据
//strTable:表名
//strSum:表中字段集的数目
//pszText...:strSum个数据字符串
//返回值:TRUE:成功 FALSE:错误
BOOL CADOConn::AddItem(CString strTable,int strSum,LPCTSTR pszText, ... )
{
	strTable.TrimLeft();
	strTable.TrimRight();
	CString strSQL="select * from "+strTable;
	CString strFirst=pszText;
	LPTSTR* arrpsz = new LPTSTR[strSum];//初始化一列表存放数据
	arrpsz[ 0 ] = new TCHAR[ lstrlen( pszText ) + 1 ];
	(void)lstrcpy( arrpsz[ 0 ], pszText );
 	va_list list;
	va_start( list, pszText );//向列表填充数据
	Open(strSQL);//字符集类型的查找
	strSQL="insert into "+strTable+" values(";
	int iType;
	iType=GetValueType(0);
	if (iType==ado_Field_Str||iType==ado_Field_Text||iType==ado_Field_Date)
		strSQL=strSQL+"'"+strFirst+"',";//字符型
	else
	{
		if(strFirst=="") strFirst="0";
		strSQL=strSQL+strFirst+",";//数字型
	}
	for( int iColumn = 1; iColumn <strSum; iColumn++ )
	{
		pszText = va_arg( list, LPCTSTR );
		ASSERT_VALID_STRING( pszText );
		iType=GetValueType(iColumn);
		if (iType==ado_Field_Str||iType==ado_Field_Text||iType==ado_Field_Date)
			strSQL=strSQL+"'"+pszText+"',";
		else
		{
			CString strValue=pszText;
			if(strValue=="") strValue="0";
			strSQL=strSQL+strValue+",";
		}
		arrpsz[ iColumn ] = new TCHAR[ lstrlen( pszText ) + 1 ];
		(void)lstrcpy( arrpsz[ iColumn ], pszText );
	}

	va_end( list );
	//开始执行
	strSQL=strSQL.Left(strSQL.GetLength()-1)+")";
	try
	{
		//执行插入操作
		m_pConnection->Execute(_bstr_t(strSQL),NULL,adCmdText);
		return TRUE;
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
		return FALSE;
	}
}
//功能:返回索引为Index时的数据的类型
//返回值:数据类型
int CADOConn::GetValueType(int index)
{
	_variant_t vIndex;
	int Tpye;
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	Tpye=m_pRecordset->Fields->GetItem(vIndex)->GetType();
	return Tpye;	
}
//功能:判断字段集是否结束
//返回值:TRUE:结束 FALSE:未结束
BOOL CADOConn::adoEOF()
{
	if(m_pRecordset->adoEOF)
		return TRUE;
	else
		return FALSE;
}
//功能:填充列表
//listMain:列表指针 ColOpenEnd:代表展开多少列
//返回值:TRUE:成功 FALSE:失败
BOOL CADOConn::FillList(CListCtrl *listMain,int ColOpenEnd)
{
	int i,iType,iRow=0,listWidth=0;//iType:字段集的数据类型 listWidth:列表中列的宽度
	long lMax=0;
	_variant_t vIndex;
	lMax=m_pRecordset->Fields->Count;
	vIndex.vt=VT_I2;
	listMain->SetExtendedStyle( LVS_EX_FULLROWSELECT);
	listMain->DeleteAllItems();
	for(i=0;i<100;i++)
		listMain->DeleteColumn(i);
	for(i=0;i<lMax;i++)
	{	
		CString strTitle="";
		vIndex.iVal=i;
		strTitle=(LPCTSTR)m_pRecordset->Fields->GetItem(vIndex)->GetName();
		listMain->InsertColumn(i,strTitle,LVCFMT_CENTER,100,0);
	}
	if(!m_pRecordset->adoEOF)
	{	
		MoveFirst();
		while (!m_pRecordset->adoEOF)
		{
			for (i=0;i<lMax;i++)
			{
				CString strValue="";
				vIndex.iVal=i;
				iType=m_pRecordset->Fields->GetItem(vIndex)->GetType();
				switch(iType)
				{
				case ado_Field_Str:
				case ado_Field_Text:
					strValue=GetValueString(i,0);
					break;
				case ado_Field_Long:
					strValue=GetValueLongStr(i,0);
					break;
				case ado_Field_Int:
					strValue=GetValueIntStr(i,0);
					break;
				case ado_Field_Float:
					strValue=GetValueFloatStr(i,0,2);
					break;
				case ado_Field_Double:
					strValue=GetValueDoubleStr(i,0,2);
					break;
				case ado_Field_Byte:
					strValue=GetValueByteStr(i,0);
					break;
				case ado_Field_Date:
					strValue=GetValueString(i,0);
					break;
				default:
					strValue="";
					break;
				}
				if(m_DataType==2)
					strValue=GetValueString(i,0);
				if(i==0)
					listMain->InsertItem(iRow,strValue,0);
				else
					listMain->SetItemText(iRow,i,strValue);
			}
			m_pRecordset->MoveNext();
			iRow=iRow+1;
		}
		//移向开头
		MoveFirst();
	}
	if(listMain->GetItemCount()>0)
	{			
		if(ColOpenEnd>0)
		{
			for(int i=0;i<ColOpenEnd;i++)
			{
				listMain->SetColumnWidth(i,LVSCW_AUTOSIZE);
				listWidth=listMain->GetColumnWidth(i);
				listMain->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
				if(listWidth<listMain->GetColumnWidth(i))
					listMain->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
			}	
		}
		else
		{
			listMain->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
		}

	}
	else
	{
		for(i=0;i<lMax;i++)
		{
			listMain->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
			listWidth=listWidth+listMain->GetColumnWidth(i);
		}
		RECT rectList;
		listMain->GetWindowRect(&rectList);
		if(listWidth<(rectList.right-rectList.left))
		{
			listWidth=(rectList.right-rectList.left-listWidth)/11;
			listMain->SetColumnWidth(i,listMain->GetColumnWidth(i)+listWidth);
		}
	}
	return TRUE;
}
//功能:初始化自动排列列表
//CListCtrl:列表指针;colSum:列表中已经存在列数
BOOL CADOConn::InitList(CListCtrl *listMain,int colSum)
{
	int intWidth=0;
	int i;
	for(i=0;i<colSum;i++)
	{
		listMain->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
		intWidth=intWidth+listMain->GetColumnWidth(i);
	}
	RECT rectList;
	listMain->GetWindowRect(&rectList);
	if(intWidth<(rectList.right-rectList.left))
	{
		intWidth=(rectList.right-rectList.left-intWidth)/colSum;
		listMain->SetColumnWidth(i,listMain->GetColumnWidth(i)+intWidth);
	}
	return TRUE;
}

⌨️ 快捷键说明

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