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

📄 getdatabase.cpp

📁 一个通过PCI卡向LED屏发送股票实时行情的系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				temp=temp.Left(temp.GetLength()-2);
			if(temp.GetLength()>6)
				temp="---";
			temp1.Empty();
			for(j=0;j<(7-(int)strlen(temp));j++)
				temp1+=" ";
			BGu[i]=BGu[i]+temp1+temp;
			i++;
		}
		m_set.MoveNext();
		m_BcurRecord++;
	}
	if(m_set.IsEOF())
		m_BcurRecord=1;   
	if(m_set.IsOpen())
	{
		m_set.Close();
	}
	return TRUE;
}

CString CGetDatabase::GetVariantString(_variant_t var)
{
	CString str;
	str="";
    DECIMAL   data;              

	char  tt;
	double tt2;
    double scale,sign;
	BOOL boverMax=FALSE;//数据太大

	switch(var.vt)
	{
	case VT_BSTR:
		str=(LPCTSTR)var.bstrVal;
		break;
	case VT_I2:
		str.Format("%d",(int)var.iVal);
		break;
	case VT_I4:
		str.Format("%d",var.lVal);
		break;
	case VT_R4:
		str.Format("%10.5f",(double)var.fltVal);
		break;
	case VT_R8:
		str.Format("%10.5f",var.dblVal);
		break;
	case VT_CY:
		str=COleCurrency(var).Format();
		break;
	case VT_DATE:
		str=COleDateTime(var).Format();
		break;
	case VT_BOOL:
		str=(var.boolVal==0)?"FALSE":"TRUE";
		break;
	case VT_NULL:
		str="----";
		break;
	case VT_DECIMAL:
		{
			data=var.decVal;
			tt=data.scale;
			scale=(double)(tt);
			tt=data.sign;
			sign=(unsigned int)(tt);
			tt2=(double)data.Lo32;
			if(data.Lo32!=data.Lo64)////////////////
			{
				tt2=(UDWORD)(data.Lo64/10000);//////////////
				boverMax=TRUE;
			}
			int tt1,jj;
			tt1=1;
			for(jj=0;jj<(int)scale;jj++)
			   tt1*=10;
			if(sign)
				tt2=(-1)*tt2;
			if(scale>0)
			{
				str.Format("%17.3f",(tt2)/(tt1));
/*				if(boverMax)
				{
					CString strL=str.Left(str.Find("."));
					CString strR=str.Right(str.GetLength()-str.Find(".")-1);
					str=strL+strR+"0.000";
				}*/
			}
			else
			{
				str.Format("%17.0f",tt2);
/*				if(boverMax)
				{
					CString strL=str.Left(str.Find("."));
					CString strR=str.Right(str.GetLength()-str.Find(".")-1);
					str=strL+strR+"0000";
				}*/
			}
		}
		break;
		default:
			str.Format("Unknown type %d",var.vt);
			TRACE("Unknown type %d",var.vt);
	}
	if(boverMax)	str+="#";//数据太大加一个标记

	return str;
}

void CGetDatabase::GetDataCjl(LPCTSTR lpszSQL)
{
	if(!m_Db.IsOpen())
		AfxMessageBox("数据库没有打开!");
	if(m_set.IsOpen())
		m_set.Close();
	m_set.Open(lpszSQL);

	short i,j;
	short nFields;
	CString str;
	CString temp;
	CString temp1;
	double  temp2;
	UINT m_cjje;
//    AGu_cjl1=0;//综合指数成交金额
//    AGu_cjl2=0;//基金指数成交金额
//	BGu_cjl=0;//深证B指中取成交金额

    LV_COLUMN lc;
	_variant_t vars; 
    lc.mask = LVCF_FMT | LVCF_WIDTH |
    	          LVCF_TEXT | LVCF_SUBITEM;
	nFields=(short)m_set.GetFieldCount();
	i=0;
	if(m_set.IsEOF())
	{
		AfxMessageBox("当前视图没有记录!");
		return ;
	}

    m_set.MoveFirst();
	while(!m_set.IsEOF())
	{ 
		vars.Clear();
		vars=m_set.GetFieldValue(0);
		temp=vars.bstrVal;
		temp.TrimLeft();
		temp.TrimRight();
//		if(temp.Left(2)=="00"&&temp!="000000")
 		if(temp=="399106")
		{//成交量1=深圳综合指数成交金额
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(6);///////////hqcjje
            temp=GetVariantString(vars);
			if(temp.Find("#")!=-1)	
				temp=temp.Left(temp.GetLength()-1);//去掉#
			else
			{
				int index12=temp.Find(".");
				if(index12!=-1)
					temp=temp.Left(temp.GetLength()-8);//除以10000
				else
					temp=temp.Left(temp.GetLength()-4);//除以10000
			}
			temp.TrimLeft();
			m_cjje=atol(temp);
			AGu_cjl1=m_cjje;
		}
 		if(temp=="399305")
		{//成交量2=深圳基金指数成交金额
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(6);///////////hqcjje
            temp=GetVariantString(vars);
			if(temp.Find("#")!=-1)	
			{
				temp=temp.Left(temp.GetLength()-1);//去掉#
				temp.TrimLeft();
				m_cjje=atol(temp);
				AGu_cjl2=m_cjje;
			}
			else
			{
				temp.TrimLeft();
				m_cjje=atol(temp);
				AGu_cjl2=m_cjje/10000;

			}
		}
 		else if(temp=="399108")			//(temp.Left(2)>="20")&&(temp.Left(2)<"28")
		{//深证B指中取成交je
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(6);///////////hqcjje
            temp=GetVariantString(vars);
			if(temp.Find("#")!=-1)	
			{	
				temp=temp.Left(temp.GetLength()-1);//去掉#
				temp.TrimLeft();
				m_cjje=atol(temp);
				BGu_cjl=m_cjje;
			}
			else
			{
				temp.TrimLeft();
				m_cjje=atol(temp);
				BGu_cjl=m_cjje/10000;
			}
		}
		else if(temp=="399001")
		{//成份指数
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(4);///////////hqzjcj
            temp=GetVariantString(vars);//数据《9万
			temp.TrimLeft();
			temp1.Empty();
 			for(j=0;j<(9-(int)strlen(temp));j++)
				temp1+=" ";
 			m_CFExp=temp1+temp;

	    	vars.Clear();
	    	vars=m_set.GetFieldValue(12);///////////hqjsd1
            temp=GetVariantString(vars);
			if(temp.Find("#")!=-1)	
			{//数据太大
				temp=temp.Left(temp.GetLength()-1);//去掉#
				temp="999999999999";
			}
			temp.TrimLeft();
			temp2=atof(temp);
			if(temp2>99999||temp2==0.00)
			{
				temp="     ---";
				m_CFExp_Color=3;
			}
			else if(temp2>0.0005)
			{
				m_CFExp_Color=1;
				temp.Format(_T("%+7.2f"),temp2);
			}
			else 
			{
				m_CFExp_Color=2;
				temp.Format(_T("%7.2f"),temp2);
			}
			m_CFExp=m_CFExp+temp;

		}
		else if(temp=="399003")
		{	//B股成份指数
			m_BGExp.Empty();
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(4);///////////hqzjcj
            temp=GetVariantString(vars);
			temp.TrimLeft();
			temp1.Empty();
			for(j=0;j<(8-(int)strlen(temp));j++)
				temp1+=" ";
 			m_BGExp=temp1+temp;

	    	vars.Clear();
	    	vars=m_set.GetFieldValue(12);///////////hqjsd1
            temp=GetVariantString(vars);
			if(temp.Find("#")!=-1)	
			{//数据太大
				temp=temp.Left(temp.GetLength()-1);//去掉#
				temp="999999999999";
			}
			temp.TrimLeft();
			temp2=atof(temp);
			if(temp2>99999||temp2==0.00)
			{
				temp="    ---";
				m_BGExp_Color=3;
			}
			else if(temp2>0.0005)
			{
				m_BGExp_Color=1;
				temp.Format(_T("%+7.2f"),temp2);
			}
			else 
			{
				m_BGExp_Color=2;
				temp.Format(_T("%7.2f"),temp2);
			}		
			m_BGExp=m_BGExp+temp;
		}
		m_set.MoveNext();
	}

	if(m_set.IsOpen())
		m_set.Close();

}


void CGetDatabase::GetNewStock(LPCTSTR lpszSQL)
{
	int i,j,kk;
	int flag;
	CString  temp;
	CString  temp1;
	double  temp2;
	double  m_zjcj;
	double  m_zrsp;
	double  m_sdf;
	int jijin_flag;
	if(!m_Db.IsOpen())
		AfxMessageBox("数据库没有打开!");
	if(m_set.IsOpen())
		m_set.Close();
	m_set.Open(lpszSQL);

	_variant_t vars; 
	short nFields=(short)m_set.GetFieldCount();
	i=0;
	if(m_set.IsEOF())
	{
		AfxMessageBox("当前视图没有记录!");
		return ;
	}

    m_set.MoveFirst();
	i=0;
	while(!m_set.IsEOF()&&i<m_NewStockNum)
	{ 
 		vars.Clear();
		vars=m_set.GetFieldValue(0);
		temp=vars.bstrVal;
		temp.TrimLeft();
		temp.TrimRight();
		m_NewStockStr[i].Empty();
		flag=0;
		for(kk=0;kk<m_NewStockNum;kk++)
		{
			if(temp==m_NewStock[kk].m_NewStockCode)
			{
				flag=1;
				m_NewStock[kk].m_bExist=TRUE;
				break;
			}
		}
		if(temp.Left(2)=="18")
			jijin_flag=1;
		else 
			jijin_flag=0;
		
		if(flag)
		{
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(1);///////////hqzqjc
		    temp=vars.bstrVal;
			temp.TrimLeft();
			m_NewStockStr[i]=temp;
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(4);///////////hqzjcj
            temp=GetVariantString(vars);
			if(temp.Find("#")!=-1)	
			{//数据太大
				temp=temp.Left(temp.GetLength()-1);//去掉#
				temp="999999999999";
			}
			temp.TrimLeft();
			temp2=atof(temp);
			m_zjcj=temp2;
			if(temp2>999999||temp2==0.00)
				temp="    ---";
			else if(temp2>9999)
                temp.Format(_T("%7.0f"),temp2);
            else
			{
				if(jijin_flag==1)
					temp.Format(_T("%7.3f"),temp2);
				else
					temp.Format(_T("%7.2f"),temp2);
			}
			temp1.Empty();
			for(j=0;j<(7-(int)strlen(temp));j++)
				temp1+=" ";
 			m_NewStockStr[i]=m_NewStockStr[i]+temp1+temp;
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(2);///////////hqzrsp
            temp=GetVariantString(vars);
			temp.TrimLeft();
			m_zrsp=atof(temp);
			temp1.IsEmpty();
			if(!(m_zrsp&&m_zjcj))
				temp.Format("    ---");
			else
			{
				m_sdf=(m_zjcj-m_zrsp)*100.00/m_zrsp;
				temp.Format("%+7.2f",m_sdf);
				for(j=0;j<(7-(int)strlen(temp));j++)
					temp1+=" ";
			}
			m_NewStockStr[i]=m_NewStockStr[i]+temp1+temp;
			i++;
		}

		m_set.MoveNext();
	}
	//检查是否有不存在的新股
	temp="";
	m_nNoExistNewGuCount=0;
	for(kk=0;kk<m_NewStockNum;kk++)
	{
		if(!m_NewStock[kk].m_bExist)
		{
			m_nNoExistNewGuCount++;
			temp+=m_NewStock[kk].m_NewStockCode;
			temp+=" ";
		}
	}
	if(!temp.IsEmpty())
		m_sNewGuAlarm=temp+"新股不存在";
	else
		m_sNewGuAlarm="";


  	if(m_set.IsOpen())
		m_set.Close();
}
	

void CGetDatabase::GetHotStock(LPCTSTR lpszSQL)
{
	int i,j;
	CString  temp;
	double  m_zrsp;
	double  m_zjcj;
//	double  m_cjsl;
	double  m_sdf;
	CString  m_zqjc;
//	int ii;
	if(!m_Db.IsOpen())
		AfxMessageBox("数据库没有打开!");
	if(m_set.IsOpen())
		m_set.Close();
	m_set.Open(lpszSQL);

    LV_COLUMN lc;
	_variant_t vars; 
    lc.mask = LVCF_FMT | LVCF_WIDTH |
    	          LVCF_TEXT | LVCF_SUBITEM;

	short nFields=(short)m_set.GetFieldCount();
    if(m_set.IsEOF())
	{
		AfxMessageBox("当前视图没有记录!");
		return ;
	}

    m_set.MoveFirst();
	while(!m_set.IsEOF())
	{ 
    	vars.Clear();
    	vars=m_set.GetFieldValue(4);///////////hqzjcj
        temp=GetVariantString(vars);
		temp.TrimLeft();
		m_zjcj=atof(temp);

		vars.Clear();
    	vars=m_set.GetFieldValue(2);///////////hqzrsp
        temp=GetVariantString(vars);
		temp.TrimLeft();
		m_zrsp=atof(temp);
		if(m_zrsp<0.01||m_zjcj<0.01)  
		{
			m_set.MoveNext();
			continue;
		}
 
		vars.Clear();
		vars=m_set.GetFieldValue(0);
		temp=vars.bstrVal;
		temp.TrimLeft();
		temp.TrimRight();
		
		if(temp.Left(2)=="00")
		{
	    	vars.Clear();
	    	vars=m_set.GetFieldValue(1);///////////hqzqjc
		    m_zqjc=vars.bstrVal;
			m_zqjc.TrimLeft();
			if(!(m_zrsp&&m_zjcj))
				m_sdf=0.00;
			else
				m_sdf=(m_zjcj-m_zrsp)*100.00/m_zrsp;
//////////////////////////深圳升幅
			for(i=0;i<MAX_HOTNUMBER;i++)
			{
				if(m_sdf>m_HotStock[0][i].m_sdf)  
					break;
			}

			if(i<MAX_HOTNUMBER)
			{
				for(j=MAX_HOTNUMBER-1;j>i;j--)
				{
					m_HotStock[0][j].m_sdf=m_HotStock[0][j-1].m_sdf;
					m_HotStock[0][j].m_zjcj=m_HotStock[0][j-1].m_zjcj;
					m_HotStock[0][j].m_zqjc=m_HotStock[0][j-1].m_zqjc;
//					m_HotStock[0][j].m_sdf=m_HotStock[0][j-1].m_sdf;
				}
				m_HotStock[0][i].m_sdf=m_sdf;
				m_HotStock[0][i].m_zjcj=m_zjcj;
				m_HotStock[0][i].m_zqjc=m_zqjc;
			}
//////////////////////////深圳跌幅
			for(i=0;i<MAX_HOTNUMBER;i++)
			{
				if(m_sdf<m_HotStock[1][i].m_sdf)  
					break;
			}

			if(i<MAX_HOTNUMBER)
			{
				for(j=MAX_HOTNUMBER-1;j>i;j--)
				{
					m_HotStock[1][j].m_sdf=m_HotStock[1][j-1].m_sdf;
					m_HotStock[1][j].m_zjcj=m_HotStock[1][j-1].m_zjcj;
					m_HotStock[1][j].m_zqjc=m_HotStock[1][j-1].m_zqjc;
//					m_HotStock[0][j].m_sdf=m_HotStock[0][j-1].m_sdf;
				}
				m_HotStock[1][i].m_sdf=m_sdf;
				m_HotStock[1][i].m_zjcj=m_zjcj;
				m_HotStock[1][i].m_zqjc=m_zqjc;
			}
		}

		m_set.MoveNext();
	}
  	if(m_set.IsOpen())
		m_set.Close();

}

⌨️ 快捷键说明

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