📄 convertdlg.cpp
字号:
{
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 + -