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

📄 convertdlg.cpp

📁 示例为对一地下管线数据库的操作
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	{
		m_pPointRecordSet->MoveLast();
       	PointNum=m_pPointRecordSet->GetRecordCount();
	}

	//////////////////////
    m_Progress.SetStep(1);
	if(PointNum<1) return;
    TCHAR szValue[MAX_PATH],szValue1[MAX_PATH],szGg[MAX_PATH],sdH[MAX_PATH],xbh[MAX_PATH];
	 szValue1[0]=szValue[0] = '\0';  
	 COleVariant varValue;
    for(i=0;i<=LineNum;i++)//"="
	{   m_Progress.SetPos(100*i/LineNum);
		m_pLineRecordSet->SetAbsolutePosition(i);
	    m_pLineRecordSet->GetFieldValue("本点号", varValue);
		GetFieldValue(varValue,szValue);
		m_pLineRecordSet->GetFieldValue("管径", varValue);
		GetFieldValue(varValue,szGg);//规格
		m_pLineRecordSet->GetFieldValue("上点号", varValue);
		GetFieldValue(varValue,sdH);//上点号
		tempStr=szGg;
        k=tempStr.Find("*",0);
        if(k>-1)
		{
			 len=tempStr.GetLength( );
			 tempStr=tempStr.Right(len-k-1);
			 strcpy(szGg,tempStr.GetBuffer(2));

			 tempStr.ReleaseBuffer();			

		}
		 gj=atof(szGg)/1000.0;//管径

		if(strlen(szValue)>0)
		{
		  for(j=0;j<=PointNum;j++)//"<="
		  {
			  m_pPointRecordSet->SetAbsolutePosition(j);
	          m_pPointRecordSet->GetFieldValue("本点号", varValue);
		      GetFieldValue(varValue,szValue1);
			  /////////////////////////
			  if(flag>1) {
				       flag=0;
				       break;
			  }
			  
			  if(strcmp(szValue,szValue1)==0)
			  {
				  flag=flag+1;
				  m_pPointRecordSet->GetFieldValue("地面高", varValue);
                  GetFieldValue(varValue,szValue1);
				  dmg=atof(szValue1);//地面高         
                  m_pPointRecordSet->GetFieldValue("埋深", varValue);
                  GetFieldValue(varValue,szValue1);
				  ms=atof(szValue1);//埋深

				   m_pPointRecordSet->GetFieldValue("新编号", varValue);
                  GetFieldValue(varValue,xbh);
				  //xbh=atof(szValue1);//新编号
				  
				  if(fabs(ms)<0.01||fabs(dmg)<0.01)
				  {
					 // bz1=1;
					  continue;
				  }
				      
                      //bz1=0;
				  float g1,g2;
				  if(m_glx==1||m_glx==2)
				  {
				    g1=dmg-ms;
					g2=g1-gj;

				  }
				  else
				  {
					g2=dmg-ms;
					g1=g2+gj;					 
				  }
				  COleVariant varValueg,varValued;
		          varValueg.vt=VT_R8; 
	              varValueg.dblVal =g1;
		          m_pLineRecordSet->Edit();
                  m_pLineRecordSet->SetFieldValue("本点管顶高程", varValueg);
				  varValued.vt=VT_R8; 
                  varValued.dblVal =g2; 
                  m_pLineRecordSet->SetFieldValue("本点管底高程", varValued);                  
		          varValued.dblVal =ms; 
                  m_pLineRecordSet->SetFieldValue("埋深", varValued); 

				  varValued.dblVal =dmg; 
                  m_pLineRecordSet->SetFieldValue("地面高", varValued);

				  //varValued.dblVal =xbh; 
                  m_pLineRecordSet->SetFieldValue("新编号1", xbh);

				  m_pLineRecordSet->Update();
				 
			  }
			  //////////////////////////////////
			  
			  if(strcmp(sdH,szValue1)==0)
			  {
				  flag=flag+1;
				  m_pPointRecordSet->GetFieldValue("地面高", varValue);
                  GetFieldValue(varValue,szValue1);
				  dmg=atof(szValue1);
                  m_pPointRecordSet->GetFieldValue("埋深", varValue);
                  GetFieldValue(varValue,szValue1);
				  ms=atof(szValue1);

				  m_pPointRecordSet->GetFieldValue("新编号", varValue);
                  GetFieldValue(varValue,xbh);
				  //xbh=atof(szValue1);//新编号
				  
				    
				   if(fabs(ms)<0.01||fabs(dmg)<0.01)
				  {
					  //  bz2=1;
					   	continue;
				  }
				  
				      //  bz2=0;
				   float g1,g2;
				  if(m_glx==1||m_glx==2)
				  {
				    g1=dmg-ms;
					g2=g1-gj;

				  }
				  else
				  {
					g2=dmg-ms;
					g1=g2+gj;					 
				  }
				  COleVariant varValueg,varValued;
		          varValueg.vt=VT_R8; 
	              /*varValueg.dblVal =g1;
		          m_pLineRecordSet->Edit();
                  m_pLineRecordSet->SetFieldValue("上点管顶高程", varValueg);

				  varValued.vt=VT_R8; 
                  varValued.dblVal =g2; 
                  m_pLineRecordSet->SetFieldValue("上点管底高程", varValued);*/

                  //varValueg.dblVal =ms; 
				  m_pLineRecordSet->Edit();
                  //m_pLineRecordSet->SetFieldValue("上点埋深", varValueg);         
		          
				  // varValued.dblVal =bz2; 
                  //m_pLineRecordSet->SetFieldValue("检2", varValued); 
				  //varValued.dblVal =xbh; 
                  m_pLineRecordSet->SetFieldValue("新编号2", xbh);

				  m_pLineRecordSet->Update();
				 
			  }
		  }
		}
		}
	
}

void CConvertDlg::GetField()
{

}

void CConvertDlg::OnSelchangeCombo1() 
{
	// TODO: Add your control notification handler code here
	int n;
	char tempStr[100];
	m_Progress.SetPos(0);
	m_glx=-1;
	     ((CButton *)GetDlgItem(IDC_PIPE_RADIO))->SetCheck(0);
        ((CButton *)GetDlgItem(IDC_RADIO2))->SetCheck(0);
		((CButton *)GetDlgItem(IDC_RADIO3))->SetCheck(0);
		if(m_pPointRecordSet != NULL)
	{
		ASSERT_VALID(m_pPointRecordSet);
		if(m_pPointRecordSet->IsOpen())
			m_pPointRecordSet->Close();
		delete m_pPointRecordSet;
		m_pPointRecordSet = NULL;
	}
   if((n=m_PointCombo.GetCurSel())!=CB_ERR)
   {
	   m_PointCombo.GetLBText( n,tempStr); 
	   m_PointTable=tempStr;
   }

	if(m_PointTable.GetLength()>0)
	{
	m_pPointRecordSet = new CDaoRecordset(m_pDataBase);
	CString strSQL = "SELECT * FROM " + m_PointTable;//Set up SQL statement	
	try
	{
		m_pPointRecordSet->Open(dbOpenDynaset, strSQL);//Open recordset using SQL statement
		
	}
	catch(CDaoException* e)
	{
		AfxMessageBox(e->m_pErrorInfo->m_strDescription, MB_ICONEXCLAMATION );
		delete m_pPointRecordSet;
		m_pDataBase->Close();
		delete m_pDataBase;
		e->Delete();
		return;
	}
	}
	else 
		return;
	if(m_pPointRecordSet != NULL)
	{
	////////
		GetPointAttrib();
	
	
				
	}
	
}

void CConvertDlg::OnSelchangeCombo2() 
{
	// TODO: Add your control notification handler code here
		int n;
		char tempStr[100];
		CString str1,str2;
		if(m_pPointRecordSet == NULL)
		{
			MessageBox("请先选择点表!!!");
			return;
		}
		if((n=m_LineCombo.GetCurSel())!=CB_ERR)
		{
	     m_LineCombo.GetLBText( n,tempStr); 
	      m_LineTable=tempStr;
		}
		str1=m_PointTable.Left(m_PointTable.GetLength()-1);
		str2=m_LineTable.Left(m_LineTable.GetLength()-1);
		str1.MakeLower();
		str2.MakeLower();
		if(str1!=str2)
		{
			MessageBox("点表和线表名称不匹配!!!");
			return;

		}


		m_glx=-1;
		((CButton *)GetDlgItem(IDC_PIPE_RADIO))->SetCheck(0);
        ((CButton *)GetDlgItem(IDC_RADIO2))->SetCheck(0);
		((CButton *)GetDlgItem(IDC_RADIO3))->SetCheck(0);
	
		if(m_pLineRecordSet != NULL)
	{
		ASSERT_VALID(m_pPointRecordSet);
		if(m_pLineRecordSet->IsOpen())
			m_pLineRecordSet->Close();
		delete m_pPointRecordSet;
		m_pLineRecordSet = NULL;
	}
   

	if(m_LineTable.GetLength()>0)
	{
	m_pLineRecordSet = new CDaoRecordset(m_pDataBase);
	CString strSQL = "SELECT * FROM " + m_LineTable;//Set up SQL statement	
	try
	{
		m_pLineRecordSet->Open(dbOpenDynaset, strSQL);//Open recordset using SQL statement
		
	}
	catch(CDaoException* e)
	{
		AfxMessageBox(e->m_pErrorInfo->m_strDescription, MB_ICONEXCLAMATION );
		delete m_pLineRecordSet;
		m_pDataBase->Close();
		delete m_pDataBase;
		e->Delete();
		return;
	}
	}
	else 
		return;
	if(m_pLineRecordSet != NULL)
	{
	////////
		GetLineAttrib();
	
	
				
	}
	
}

void CConvertDlg::GetPointAttrib()
{
	    CString temp;
	    m_PointField.RemoveAll(); 
		m_PointType.RemoveAll();  
		CDaoFieldInfo m_fieldinfo;
		int len=m_pPointRecordSet->GetFieldCount();
		for(int i = 0; i < len; i++) // set up columns
		{			
			m_pPointRecordSet->GetFieldInfo(i, m_fieldinfo);//get field name
			temp = m_fieldinfo.m_strName;
            m_PointType.Add(m_fieldinfo.m_nType);
			m_PointField.Add(temp);		
		}


}

void CConvertDlg::GetLineAttrib()
{
	   CString temp;
	    m_LineField.RemoveAll(); 
		m_LineType.RemoveAll();  
		CDaoFieldInfo m_fieldinfo;
		int len=m_pLineRecordSet->GetFieldCount();
		for(int i = 0; i < len; i++) // set up columns
		{			
			m_pLineRecordSet->GetFieldInfo(i, m_fieldinfo);//get field name
			temp = m_fieldinfo.m_strName;
            m_LineType.Add(m_fieldinfo.m_nType);
			m_LineField.Add(temp);		
		}

}

void CConvertDlg::GetFieldValue(COleVariant varValue, TCHAR szValue[])
{
	const VARIANT* variant = LPCVARIANT(varValue);
            szValue[0] = '\0';
			if(variant->vt & VT_BYREF)
				return;
			switch(variant->vt)
				{
				case VT_ERROR:{	
					strcpy(szValue, "Error");					
					break;
					 }
					case VT_I2:{	sprintf(szValue, "%d", variant->iVal);
							break;
					   }
			     case VT_I4:{	sprintf(szValue, "%d", variant->lVal);
							break;
					   }
			     case VT_R4:{
					        sprintf(szValue, "%.3f", variant->fltVal);
							break;
					   }	
			     case VT_R8:
					 {
					       sprintf(szValue, "%.3f", variant->dblVal);
							break;
					   }
			     case VT_CY:{	COleCurrency c(varValue);
							CString s = c.Format();//ie. 1.00
							strcpy(szValue, s.GetBuffer(s.GetLength()));
							s.ReleaseBuffer();
							break;
					   }
			     case VT_DATE:{	COleDateTime t(variant->date);
							CString s = t.Format( "%B %d, %Y" );//Day of Week, Month Day, Year
							strcpy(szValue, s.GetBuffer(s.GetLength()));
							s.ReleaseBuffer();
							break;
						 }
			     case VT_BSTR:{  CString str = V_BSTRT( &varValue );//convert BSTR to CString
							strcpy(szValue, str.GetBuffer(str.GetLength()));
							str.ReleaseBuffer();
							break;
						}
			     case VT_BOOL:{	if(variant->boolVal)
								strcpy(szValue, "TRUE");
							else
								strcpy(szValue, "FALSE");
							break;
						 }
			     case VT_UI1:{	strcpy(szValue, (char*)variant->bVal);
							break;
						}

				 default:{
							szValue[0] = '\0';
							break;
						}
					 }

}

⌨️ 快捷键说明

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