BOOL CCalStructPag::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here try { _RecordsetPtr rs; CString strSQL; strSQL.Format(_T("SELECT [SAStructComponent].[Number],[SAStructFormula].[Formula],[SAStructFormula].[Where],[SAStructFormula].[Caption] FROM [SAStructComponent],[SAStructFormula] WHERE [SAStructComponent].[ComponentID] = %d AND [SAStructComponent].[ComponentID]=[SAStructFormula].[ComponentID] AND [SAStructFormula].[Result]=\'%s\' "), m_lComponentID,m_strResult); rs=m_connSort->Execute(_bstr_t(strSQL),NULL,adCmdText); if(!rs->adoEOF) { CString strTemp; strTemp.Format(IDS_COMPONENT_de,vtoi(rs->GetCollect(0L)),m_strResult); this->SetWindowText(strTemp); this->m_strFormula=vtos(rs->GetCollect(1L)); this->m_strWhere=vtos(rs->GetCollect(2L)); this->m_strCaption=vtos(rs->GetCollect(3L)); m_iComNo=vtoi(rs->GetCollect(0L)); UpdateData(FALSE); } rs->Close(); } catch(_com_error e) { AfxMessageBox(e.Description()); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
//得到弹簧的工作荷载和安装荷载 //没有经过单位转换的荷载值 BOOL CAESARIIToPHS::GetHangerLoad( int iNode,const CString& strFileName, double& dWorkLoad,double& dInsLoad ) //得到弹簧的工作荷载和安装荷载 { _RecordsetPtr pHangerRs; pHangerRs.CreateInstance( __uuidof(Recordset) ); try { CString strSQL; strSQL.Format(_T("SELECT * FROM OUTPUT_HANGERS WHERE [NODE] = %d AND [JOBNAME] = '%s'"),iNode,strFileName); pHangerRs->Open(_variant_t(strSQL),(IDispatch *)m_pConnSourceDB,adOpenDynamic,adLockOptimistic,adCmdText); if(pHangerRs->adoEOF && pHangerRs->BOF) { pHangerRs->Close(); return FALSE; } else { dWorkLoad = vtoi ( pHangerRs->GetCollect( _T("NUMREQ") ) ) * vtof( pHangerRs->GetCollect( _T("HOT_LOAD") ) ); //工作荷载 dInsLoad = vtoi ( pHangerRs->GetCollect( _T("NUMREQ") ) ) * vtof( pHangerRs->GetCollect( _T("TH_INSTALL_LOAD") ) ); //安装荷载 } } catch (_com_error &e) { CString strMsg; strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description()); AfxMessageBox(strMsg); } if(pHangerRs->State==adStateOpen) { pHangerRs->Close(); } return TRUE; }
//------------------------------------------------------------------ // DATE : [2006/02/17] // Author : ZSY // Parameter(s) : nID[in] 显示当前记录的序号 // Return : 读取成功返回1,否则返回0 // Remark : 读取埋地管道的保温数据到输入窗口中 //------------------------------------------------------------------ short CDlgParameterSubterranean::GetDataToSubterraneanControl(long nID) { CString strSQL; int nSelect; try { if ( m_pRsSubterranean == NULL || ( m_pRsSubterranean->GetState() != adStateOpen ) ) { return 1; } if ( !m_pRsSubterranean->adoEOF || !m_pRsSubterranean->BOF ) { m_pRsSubterranean->MoveFirst(); strSQL.Format("ID=%d", nID ); m_pRsSubterranean->Find( _bstr_t( strSQL ), NULL, adSearchForward ); } if ( m_pRsSubterranean->adoEOF || m_pRsSubterranean->BOF )// 没有找到当前工程指定序号的记录则新增一条 { m_pRsSubterranean->AddNew();// m_pRsSubterranean->PutCollect( _variant_t("ID"), _variant_t(nID) ); m_pRsSubterranean->PutCollect( _variant_t("EnginID"), _variant_t(m_strProjectID)); m_pRsSubterranean->Update(); m_ctlPipeCount.SetCurSel(0); } else { nSelect = vtoi( m_pRsSubterranean->GetCollect( _variant_t("c_Pipe_Count") ) ); nSelect = (nSelect > 0) ? nSelect -1 : 0; m_ctlPipeCount.SetCurSel(nSelect); } m_nID = nID; //保存当前记录的序号 m_nPipeLay = vtoi( m_pRsSubterranean->GetCollect( _variant_t("c_lay_mark") ) ); // 管道敷设状态 m_dPipeSubDepth = vtof( m_pRsSubterranean->GetCollect( _variant_t("c_Pipe_Sub_Depth")));// 管道的埋设深度(地表面到管道中心的距离) m_dEdaphicTemp = vtof( m_pRsSubterranean->GetCollect( _variant_t("c_Edaphic_Temp") )); // 土壤的温度℃ m_dPipeSpan = vtof( m_pRsSubterranean->GetCollect( _variant_t("c_Pipe_Span") ) ); // 两根管道之间的当量间距 m_dEdaphicLamda = vtof( m_pRsSubterranean->GetCollect( _variant_t("c_Edaphic_Lamda"))); // 土壤的导热系数 m_dSupportK = vtof( m_pRsSubterranean->GetCollect( _variant_t("c_Support_K") ) ); // 支吊架的热损失校正系数 m_dPipeDag = vtof( m_pRsSubterranean->GetCollect( _variant_t("c_Pipe_Dag") ) ); // 管沟当量直径 m_dCanalDepth = vtof( m_pRsSubterranean->GetCollect( _variant_t("c_Canal_Depth") ) ); // 管沟深度 } catch (_com_error& e) { AfxMessageBox( e.Description() ); return 0; } UpdateData( FALSE ); // 更新控件的状态 UpdateControlState(); return 1; }
//吊架和支架数据的导入pfg20050615 //flag=0 为吊架; flag=1 为支架 //记录集是结果集 对应ZA表 //rsHR记录集是数据源集(弹簧、吊架) //ltemp 支吊架号 void CAESARIIToPHS::ImportHangerRestraints(_RecordsetPtr rsData,_RecordsetPtr rsHR,long <emp,long &FileNameID,char *strPSAVER,long &node,int flag) { _variant_t tmpvar; long lTmp; try { if(flag) { tmpvar=rsHR->GetCollect(_T("node_num")); lTmp=vtoi(rsHR->GetCollect(_T("RES_TYPEID")));//pfg20050624 } else { tmpvar=rsHR->GetCollect(_T("node")); } if(tmpvar.vt==VT_EMPTY||tmpvar.vt==VT_NULL) { return; } else { node=vtoi(tmpvar); } if ( node < 1e-6 ) //5.2版本中所有的约束信息会导入INPUT_RESTRAINTS表中(同一约束点会有四条记录,所以会有NODE_NUM为-1情况) return; if(rsData->GetRecordCount()>0) { rsData->MoveFirst(); } rsData->Filter = _variant_t(CString("[jsdbh1] = ") + ltos(node)+" AND [FileNameID]="+ltos(FileNameID)); if (rsData->adoEOF&&rsData->BOF) { rsData->AddNew(); rsData->PutCollect("VolumeID",_variant_t(EDIBgbl::SelVlmID)); rsData->PutCollect("zdjh",_variant_t((long)(ltemp+1))); rsData->PutCollect("FileNameID",_variant_t(FileNameID)); ltemp++; rsData->Update(); } rsData->PutCollect("PSAver", _variant_t(strPSAVER)); rsData->PutCollect("UPxyz",_variant_t((long)m_iUPxyz)); rsData->PutCollect("JSDBH1", _variant_t((long)node)); rsData->Update(); } catch (_com_error &e) { CString strMsg; strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description()); AfxMessageBox(strMsg); } }
void CDlgFavoriteTemplate::InitFavoriteList() { m_lstFavorite.ResetContent(); CString strTemplateName; int iWillSelIndex=0; long iSampleID=1; _variant_t varTmp; if(m_rsFavorite->BOF || m_rsFavorite->adoEOF ) { return; } for(int iIndex=0; !m_rsFavorite->adoEOF ; m_rsFavorite->MoveNext()) { m_rsFavorite->get_Collect((_variant_t)"SampleID", &varTmp); iSampleID = vtoi(varTmp); m_rsFavorite->get_Collect((_variant_t)"SampleName", &varTmp); if( vtos(varTmp) != "" ) { iIndex = m_lstFavorite.AddString(vtos(varTmp)); m_lstFavorite.SetItemData(iIndex,(DWORD)iSampleID); } if(m_lSampleID == iSampleID) { iWillSelIndex = iIndex; } } m_iCurSel = iWillSelIndex; m_lstFavorite.SetCurSel(iWillSelIndex); }
//------------------------------------------------------------------ // DATE :[2006/01/17] // Parameter(s) : // Return : // Remark :从数据库中取出不同的行业名称 //------------------------------------------------------------------ int CDlgSelCritDB::GetCallingFromDB(struct KeyToCalling sutKeyCalling[]) { // 不同的行业名称用数据库统一进行管理 [2006/01/17] _RecordsetPtr pRsCalling; // 行业管理表 pRsCalling.CreateInstance( __uuidof( Recordset ) ); CString strSQL; // SQL语句 int nCount = 0; // 不同行业的个数 try { strSQL = "SELECT * FROM [CallingManage]"; pRsCalling->Open( _variant_t(strSQL), theApp.m_pConRefInfo.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText ); if ( pRsCalling->adoEOF && pRsCalling->BOF ) { return -1; } for (pRsCalling->MoveFirst(); !pRsCalling->adoEOF; pRsCalling->MoveNext()) { sutKeyCalling[nCount].strKey = vtoi( pRsCalling->GetCollect( _variant_t("CallingKey") ) ); sutKeyCalling[nCount].strCallingName = vtos( pRsCalling->GetCollect( _variant_t("CallingName") ) ); sutKeyCalling[nCount].strCodeName = vtos( pRsCalling->GetCollect( _variant_t("CODE") ) ); nCount++; } } catch (_com_error& e) { AfxMessageBox( e.Description() ); return -1; } return nCount; }
//在当前工程中查找给定的卷册,如果不存在则增加. void newproject::AddCurrentVolume() { _RecordsetPtr pRs; CString strSQL; try { if ( EDIBgbl::SelPrjID.IsEmpty() || EDIBgbl::SelVlmCODE.IsEmpty() ) { //如果工程代号或者卷册代号为空时,将不考虑. return; } pRs.CreateInstance(__uuidof(Recordset)); pRs->CursorLocation = adUseClient; strSQL = "SELECT * FROM [Volume] WHERE EnginID = '"+EDIBgbl::SelPrjID+"' AND JCDM = '"+EDIBgbl::SelVlmCODE+"' "; pRs->Open(_bstr_t(strSQL), theApp.m_pConAllPrj.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); if( pRs->adoEOF && pRs->BOF ) { //没有记录,增加卷册. pRs->Close(); strSQL = "Select * FROM [Volume] ORDER BY VolumeID "; pRs->Open(_bstr_t(strSQL),theApp.m_pConAllPrj.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); pRs->MoveLast(); _variant_t var = pRs->GetCollect("VolumeID"); long VlmID = vtoi(var); VlmID++; pRs->AddNew(); pRs->PutCollect(_variant_t("VolumeID"),_variant_t(VlmID)); pRs->PutCollect(_variant_t("EnginID"),_variant_t(EDIBgbl::SelPrjID) ); pRs->PutCollect(_variant_t("JCDM"),_variant_t(EDIBgbl::SelVlmCODE)); pRs->PutCollect(_variant_t("JCMC"),_variant_t("") ); //无 pRs->PutCollect(_variant_t("SJHYID"),_variant_t(EDIBgbl::SelHyID)); pRs->PutCollect(_variant_t("SJJDID"),_variant_t(EDIBgbl::SelDsgnID) ); pRs->PutCollect(_variant_t("ZYID"),_variant_t(EDIBgbl::SelSpecID) ); pRs->Update(); } } catch(_com_error& e) { ReportExceptionErrorLV2(e); } }
BOOL CCalculate::AutoCalPhs(const VARIANT FAR& varRs, short zdjh, short nth) { // TODO: Add your dispatch handler code here CFrmStatus FrmProgress; if(!IsWindow(FrmProgress.m_hWnd)) FrmProgress.Create(IDD_STATUS,NULL); FrmProgress.CenterWindow(); FrmProgress.ShowWindow(SW_SHOW); modPHScal::zdjh=zdjh; modPHScal::iSelSampleID=vtoi(FrmTxsr.m_pViewTxsr->m_ActiveRs->GetCollect(_T("iSelSampleID"))); CString sTmp; sTmp.Format(_T("%d"),zdjh); frmStatus.m_Label1.Format(GetResStr(IDS_CalculatingNoXphs),sTmp);// _T("正在计算") & zdjh & _T("号支吊架") frmStatus.SetWindowText(GetResStr(IDS_PhsCalculation)); //' _T("计算支吊架") frmStatus.UpdateData(false); frmStatus.UpdateStatus(0.02f,true); frmStatus.UpdateWindow(); _RecordsetPtr rs; rs.CreateInstance(__uuidof(Recordset)); if(varRs.vt == VT_DISPATCH && varRs.pdispVal != NULL) { rs = _RecordsetPtr (varRs.pdispVal ); } else { AfxMessageBox("数据库错误,退出计算!"); return FALSE; } modPHScal::VB_Cal (rs,zdjh,FrmProgress,nth); FrmProgress.UpdateWindow(); FrmProgress.ShowWindow(SW_HIDE); FrmProgress.DestroyWindow(); return TRUE; }
//------------------------------------------------------------------ // DATE :[2005/07/14] // Author :ZSY // Parameter(s) : // Return : // Remark :增加阀门 //------------------------------------------------------------------ BOOL CImportAutoPD::AddValve() { _RecordsetPtr pRs_ValveType; CString strSQL; //SQL语句 int nValveIndex; //阀门类型的索引 CString strValveName; //阀门名称 pRs_ValveType.CreateInstance(__uuidof(Recordset)); pRs_ValveType->PutCursorLocation(adUseClient); try { strSQL = "SELECT * FROM [ValveType] "; //打开阀门类型表 pRs_ValveType->Open(_variant_t(strSQL), theApp.m_pConnectionCODE.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); if (pRs_ValveType->GetRecordCount() <= 0) { return FALSE; } for (; !pRs_ValveType->adoEOF; pRs_ValveType->MoveNext()) { nValveIndex = vtoi(pRs_ValveType->GetCollect(_variant_t("ValveTypeID"))); strValveName = vtos(pRs_ValveType->GetCollect(_variant_t("TypeName"))); if (strValveName.IsEmpty()) { continue; } if (FileExists(strValveName)) { CFile::Remove(strValveName); } } } catch (_com_error) { return FALSE; } return TRUE; }
//------------------------------------------------------------------ // DATE : [2006/03/01] // Author : ZSY // Parameter(s) : void // Return : void // Remark : 加载管道敷设状态 //------------------------------------------------------------------ void CDlgParameterSubterranean::InitPipeLayList() { m_comboPipeLay.ResetContent(); CString strSQL; // SQL语句 CString strCount; int nIndex; _RecordsetPtr pRsLay; pRsLay.CreateInstance( __uuidof( Recordset ) ); try { m_comboPipeLay.ResetContent(); strSQL.Format("SELECT * FROM [埋地管道敷设状态] ORDER BY Index"); pRsLay->Open( _variant_t(strSQL), theApp.m_pConnectionCODE.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText ); if ( pRsLay->GetadoEOF() && pRsLay->GetBOF() ) return; for (pRsLay->MoveFirst(); !pRsLay->adoEOF; pRsLay->MoveNext()) { nIndex = m_comboPipeLay.AddString( vtos( pRsLay->GetCollect(_variant_t("PipeLay")) ) ); m_comboPipeLay.SetItemData(nIndex, vtoi( pRsLay->GetCollect(_variant_t("Index")) ) ); } // 同时敷设根数 m_ctlPipeCount.ResetContent(); for (int i = 1; i <= nSubMaxPipeCount; i++) { strCount.Format("%d", i); m_ctlPipeCount.AddString(strCount); } } catch (_com_error& e) { AfxMessageBox( e.Description() ); return ; } }
BOOL CPreStylePag::GetTextStyleProperty( CString strTSName, CString &strShxFile, CString &strBigFile, double &dHeight, double &dWidthFactor, double &dAngleByDegree, short &iGenerationFlag) { CMObject obj, tsobj; long i, nCount; CString strtmp; //进行参数检查和初始化 strTSName.TrimLeft(); strTSName.TrimRight(); strTSName.MakeUpper(); if(strTSName.GetLength() <= 0) return FALSE; try { if(FindAcad() == FALSE) { return FALSE; } //SETUP-1: 获取ACAD文本样式列表 obj = EDIBAcad::objAcadDoc.GetPropertyByName( _T("TextStyles")); //SETUP-2: 获取样式对象 nCount = (long)obj.GetPropertyByName(_T("Count")); for( i = 0; i < nCount; i++) { tsobj = obj.Invoke(_T("Item"), 1, &_variant_t(i)); strtmp = vtos(tsobj.GetPropertyByName(_T("Name"))); strtmp.TrimLeft(); strtmp.TrimRight(); strtmp.MakeUpper(); if(strtmp == strTSName) { //获得目标样式的属性值 strShxFile = vtos(tsobj.GetPropertyByName( _T("FontFile"))); //获得字体文件名 strBigFile = vtos(tsobj.GetPropertyByName( _T("BigFontFile")));//获得大字体文件名 dHeight = vtod(tsobj.GetPropertyByName( _T("Height"))); //获得字体高度 dWidthFactor = vtod(tsobj.GetPropertyByName( _T("Width"))); //获得宽度比例因子*** dAngleByDegree = vtod(tsobj.GetPropertyByName( _T("ObliqueAngle"))); //获得字体倾斜角度 dAngleByDegree *= 180.0; dAngleByDegree /= 3.14159265359; if(dAngleByDegree > 270.0) dAngleByDegree -= 360; iGenerationFlag = vtoi(tsobj.GetPropertyByName( _T("TextGenerationFlag"))); //获得字体生成字段 iGenerationFlag &= 0x06; return TRUE; } } } catch (_com_error &e) { CString strMsg; strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description()); AfxMessageBox(strMsg); } return FALSE; }
//得到最小螺栓孔直径 int HDCrude::GetFjmin() { return vtoi(m_pRs.GetFieldValue(m_strFjminField)); }
main(int argc, char **argv) { int nt,nxi,nxo,ntfft,it,ix,nf,i,extrap; int nxipre; float dt,fmin,fmax; float *xi, *xo, *xipre; float *yi, *yo; char *hdrs; float tol; int niter, np; string datain, dataout; complex *ccexp, *ccexpo; int iccexp=1, iccexpo=1; int nxip, ifmin, lftwk, npp, nph; float tmp, tmp2; float df; FILE *infp,*outfp; segytrace tr; String pkey="tracl", ptype, skey="tracr", stype; Value pval, sval; int indxp, indxs; int ofill=0, dfill=1, nfill=1; int iof=1, inf=1; int nsmax, ns; int is, ip, ipre; float *sort; int *sortindex; char *hdrsort; /* get parameters */ initargs(argc,argv); askdoc(1); getparstring("pkey",&pkey); getparstring("skey",&skey); if(!getparint("ofill",&ofill)) iof = 0 ; if(!getparint("dfill",&dfill)) dfill = 1; if(!getparint("nfill",&nfill))inf = 0; if (!getparint("nsmax",&nsmax)) nsmax = 2000; /* open input/output */ if (!getparstring("datain",&datain)) { infp = stdin; } else { infp = fopen(datain,"r"); } if (!getparstring("dataout",&dataout)) { outfp = stdout; } else { outfp = fopen(dataout,"w"); } /* make file size to be able to exceed 2 G on convex */ file2g(infp); file2g(outfp); /* read in first trace for nt and dt */ if (!fgettr(infp,&tr)) err("can't get first trace"); nt = tr.ns; dt = (float)tr.dt/1000000.; /* optional parameters */ if (!getparint("ntfft",&ntfft)) ntfft=(nt*3/2)/2*2; if (ntfft < nt) ntfft = nt; nf = ntfft; radix_(&nf,&ntfft); if (!getparfloat("fmin",&fmin)) fmin = 0.; if (!getparfloat("fmax",&fmax)) fmax = .5 / dt * 2. / 3.; if (!getparint("niter",&niter)) niter = 10; if (!getparfloat("tol",&tol)) tol = 0.000001; if (!getparint("extrap",&extrap)) extrap = 1; ptype = hdtype(pkey); indxp = getindex(pkey); stype = hdtype(skey); indxs = getindex(skey); gethval(&tr, indxp, &pval); ipre = vtoi(ptype,pval); gethval(&tr, indxs, &sval); is = vtoi(stype,sval); nxo = nfill; if(inf==0) nxo = nsmax; xi = (float*)malloc(nsmax*sizeof(float)); xipre = (float*)malloc(nsmax*sizeof(float)); yi = (float*)malloc(nt*nsmax*sizeof(float)); xo = (float*)malloc(nxo*sizeof(float)); yo = (float*)malloc(nt*nxo*sizeof(float)); hdrs = (char*) malloc(nsmax*HDRBYTES*sizeof(char)); sort = (float*)malloc(nsmax*nt*sizeof(float)); hdrsort = (char*)malloc(nsmax*HDRBYTES); sortindex = (int*)malloc(nsmax*sizeof(int)); iccexp = 1; nxip = nsmax + 10; initpf_(&ntfft,&dt,&fmin,&fmax,&nxip,&ifmin,&df, &nf,&lftwk,&npp,&nph); tmp = (nph*2+1)*nf*nxip; tmp = tmp*sizeof(complex); if( tmp > 1600000000. ) { fprintf(stderr," --- forward t-p coefficients --- " ); fprintf(stderr," need memory %f MB \n",tmp/1000000.); fprintf(stderr," memory limit exceeded \n"); fprintf(stderr," no pre-computation of coefficients \n"); iccexp = -1; ccexp = (complex*) malloc(sizeof(complex)); tmp = 0.; } else { ccexp = (complex*) malloc((nph*2+1)*nf*nxip*sizeof(complex)); } iccexpo = 1; tmp2 = (nph*2+1)*nf*nxo; tmp2 = tmp2*sizeof(complex); tmp = tmp + tmp2; if( tmp > 1600000000. ) { fprintf(stderr," --- inverse t-p coefficients --- " ); fprintf(stderr," need memory %f MB \n",tmp/1000000.); fprintf(stderr," memory limit exceeded \n"); fprintf(stderr," no pre-computation of coefficients \n"); iccexpo = -1; ccexpo = (complex*) malloc(sizeof(complex)); } else { ccexpo = (complex*) malloc((nph*2+1)*nf*nxo*sizeof(complex)); } for(ix=0;ix<nxo;ix++) xo[ix] = ofill + ix*dfill; /* loop over input traces */ ns = 0; nxipre = 0; do { gethval(&tr, indxp, &pval); ip = vtoi(ptype,pval); gethval(&tr, indxs, &sval); is = vtoi(stype,sval); if(ns>nsmax) err("maximum number traces %d exceed %d \n",ns,nsmax); if(ip==ipre) { for(it=0;it<nt;it++) yi[it+ns*nt] = tr.data[it]; xi[ns] = is; bcopy((char*)&tr,hdrs+ns*HDRBYTES,HDRBYTES); ns = ns + 1; } else if(ip!=ipre && ns>0) { nxi = ns; /* sort xi into ascending order */ for(i=0;i<nxi;i++) sortindex[i] = i; qkisort(nxi,xi,sortindex); bcopy(yi,sort,nxi*nt*sizeof(float)); for(i=0;i<nxi;i++) { bcopy(sort+sortindex[i]*nt,yi+i*nt, nt*sizeof(float)); } bcopy(xi,sort,nxi*sizeof(float)); for(i=0;i<nxi;i++) { xi[i] = sort[sortindex[i]]; } bcopy(hdrs,hdrsort,nxi*HDRBYTES); for(i=0;i<nxi;i++) { bcopy(hdrsort+sortindex[i]*HDRBYTES, hdrs+i*HDRBYTES,HDRBYTES); } np = nxi; if(inf==0) nxo = nxi; if(iof==0) { for(ix=0;ix<nxo;ix++) xo[ix] = xi[ix]; } /* tau-p interpolation */ intps(xi,yi,xo,yo,nxi,nxo, nt,dt,np,fmin,fmax,ntfft, niter,tol,xipre,nxipre,ccexp,iccexp, ccexpo,iccexpo); for(ix=0;ix<nxi;ix++) { xipre[ix] = xi[ix]; } nxipre = nxi; /* output gather */ intout(xi,xo,yo,hdrs,nxi,nxo,nt, outfp,extrap,stype,indxs); fprintf(stderr, " interpolation done from input %d live traces to output %d traces at %s=%d \n",nxi, nxo, pkey, ipre); ns = 0; for(it=0;it<nt;it++) yi[it+ns*nt] = tr.data[it]; xi[ns] = is; bcopy((char*)&tr,hdrs+ns*HDRBYTES,HDRBYTES); ipre = ip; ns = ns + 1; } } while(fgettr(infp,&tr)); if (ns>0) { nxi = ns; for(i=0;i<nxi;i++) sortindex[i] = i; qkisort(nxi,xi,sortindex); bcopy(yi,sort,nxi*nt*sizeof(float)); for(i=0;i<nxi;i++) { bcopy(sort+sortindex[i]*nt,yi+i*nt, nt*sizeof(float)); } bcopy(xi,sort,nxi*sizeof(float)); for(i=0;i<nxi;i++) { xi[i] = sort[sortindex[i]]; } bcopy(hdrs,hdrsort,nxi*HDRBYTES); for(i=0;i<nxi;i++) { bcopy(hdrsort+sortindex[i]*HDRBYTES, hdrs+i*HDRBYTES,HDRBYTES); } np = nxi; if(inf==0) nxo = nxi; if(iof==0) { for(ix=0;ix<nxo;ix++) xo[ix] = xi[ix]; } /* interpolation */ intps(xi,yi,xo,yo,nxi,nxo,nt,dt,np,fmin,fmax,ntfft,niter,tol, xipre,nxipre,ccexp,iccexp, ccexpo,iccexpo); /* output gather */ intout(xi,xo,yo,hdrs,nxi,nxo,nt,outfp,extrap,stype,indxs); fprintf(stderr, " interpolation done from input %d live traces to output %d traces at %s=%d \n",nxi, nxo, pkey, ip); } free(xi); free(yi); free(xo); free(yo); free(hdrs); free(sort); free(sortindex); free(hdrs); return 0; }
int main(int argc, char **argv) { cwp_String key; /* header key word from segy.h */ cwp_String type;/* ... its type */ int index; /* ... its index */ int nsegy; /* number of bytes in the segy */ Value val; /* value of key in current gather */ Value valnew; /* value of key in trace being treated */ int verbose; /* verbose flag */ int val_i; /* key value as an integer */ int ntr=0; /* count of number of traces in an ensemble */ int numlength; /* length of numerical part of filenames */ FILE *tmpfp=NULL; /* file pointer */ FILE *outfp=NULL; /* file pointer */ cwp_String dir; /* directory name */ cwp_String suffix; /* suffix of output files */ char directory[BUFSIZ]; /* storage for directory name */ char tempfilename[BUFSIZ]; /* ...temporary filename */ char middle[BUFSIZ]; /* ...middle of final filename */ char stem[BUFSIZ]; /* ...stem of final filename */ char format[BUFSIZ]; /* ...format of numeric part */ char outfile[BUFSIZ]; /* ...final filename */ /* Initialize */ initargs(argc, argv); requestdoc(1); /* Get parameters */ MUSTGETPARSTRING("dir", &dir); if (!getparint ("verbose", &verbose)) verbose = 0; if (!getparstring("key", &key)) key = "ep"; if (!getparstring("suffix", &suffix)) suffix = ".hsu"; if (!getparint("numlength", &numlength)) numlength=7; /* Initialize */ /* tempfilename = ealloc1(strlen(tmplt)+3,sizeof(char)); */ type = hdtype(key); index = getindex(key); /* Set up for first trace (must compare new key field each time) */ nsegy = gettr(&intrace); /* Create temporary filename for the first gather */ strcpy(directory, dir); strcpy(tempfilename, temporary_filename(directory)); if((tmpfp = fopen(tempfilename,"w+")) == NULL) err("Cannot open file %s\n",tempfilename); if (verbose) warn(" temporary filename = %s", tempfilename); /* get key header value */ gethval(&intrace, index, &val); ntr=0; do { ++ntr; /* Get header value */ gethval(&intrace, index, &valnew); /* compare past header value to current value */ if (valcmp(type, val, valnew) || !nsegy) { /* Either val and valnew differ, indicating a */ /* new gather or nsegy is zero, indicating the */ /* end of the traces. */ /* capture key field value */ /* and build output filename */ val_i=vtoi(type,val); /* zero out name parts */ strcpy(outfile,""); strcpy(middle,""); strcpy(stem,""); /* build output name parts */ strcat(middle,directory); strcat(middle,"/"); strcat(stem,key); strcat(stem,"="); /* format for numeric part */ (void)sprintf(format, "%%s%%s%%0%dd%%s",numlength); /* build name of output file */ (void)sprintf(outfile, format,middle,stem, val_i, suffix); if (verbose) warn(" outfile = %s", outfile); /* rewind file */ rewind(tmpfp); /* open the new file */ if((outfp = fopen(outfile,"w+")) == NULL) err("Cannot open file %s\n",outfile); /* loop over traces setting ntr field */ /* and write to finalfile */ while(fgettr(tmpfp,&tmptr)) { tmptr.ntr = ntr; fputtr(outfp,&tmptr); } /* Close files */ fclose(tmpfp); fclose(outfp); remove(tempfilename); if (verbose) warn("val= %i", val_i); /* Set up for next gather */ /* create new tempfname first */ strcpy(tempfilename, temporary_filename(directory)); /* open filename */ if((tmpfp = fopen(tempfilename,"w+")) == NULL) err("Cannot open file %s\n",tempfilename); val = valnew; ntr=0; } fputtr(tmpfp,&intrace); } while(gettr(&intrace)); /* Close file */ rewind(tmpfp); val_i=vtoi(type,val); /* Move last gather into new location */ /* capture key field value */ /* and build output filename */ /* null out name parts */ strcpy(outfile,""); strcpy(middle,""); strcpy(stem,""); /* build name parts */ strcat(middle,directory); strcat(middle,"/"); strcat(stem,key); strcat(stem,"="); /* write format of numeric part of output filename */ (void)sprintf(format, "%%s%%s%%0%dd%%s",numlength); /* write output filename */ (void)sprintf(outfile, format,middle,stem, val_i, suffix); /* open the output file */ if((outfp = fopen(outfile,"w+")) == NULL) err("Cannot open file %s\n",outfile); /* loop over traces setting ntr field */ while(fgettr(tmpfp,&tmptr)) { tmptr.ntr = ntr; fputtr(outfp,&tmptr); } /* Close file */ fclose(tmpfp); fclose(outfp); remove(tempfilename); if (verbose) warn(" outfile = %s", outfile); if (verbose) warn("val= %i",val_i); return(CWP_Exit()); }
//得到组件质量 double HDCrude::GetWeight() { return vtoi(m_pRs.GetFieldValue(m_strWeightField)); }
main (int argc , char **argv) { int maxbyte=32000000; char *data; FILE *outfp=stdout; FILE *infp=stdin; int head=1; int i; int min=-2000000000, max=2000000000, j=1; int iigroup, iitrace, iimaxbyte, iimaxtrace; float iicomp, iimse; char *c80; /* SU initializations */ initargs (argc,argv); askdoc (1); file2g(outfp); /* fetch parameters */ getparint ("head",&head); getparint ("maxbyte",&maxbyte); getparint ("j",&j); getparint ("min",&min); getparint ("max",&max); /* allocate storage */ data = (char*) malloc (maxbyte>3600?maxbyte:3600); /* window compressed data */ file2g(infp); file2g(outfp); /* restore header */ if (head) { fread (data,1,3600,infp); fwrite (data,1,3600,outfp); } iimse = 0.; iicomp = 0.; iigroup = 0; iitrace = 0; iimaxbyte = 0; iimaxtrace = 0; c80 = (char*)malloc(80*sizeof(char)); fread (&ch,1,sizeof(ch),infp); /* read each chunk and copy to output */ do { if(ch.nbyte>maxbyte) err(" ch.nbyte=%d exceeds maxbyte:%d \n",ch.nbyte,maxbyte); if (fread (data,1,ch.nbyte,infp) < ch.nbyte) break; i = vtoi(hdtype(ch.key),ch.value); if( (i-min)%j==0 && i>=min && i<=max) { fwrite (&ch,1,sizeof(ch),outfp); fwrite (data,1,ch.nbyte,outfp); iigroup += 1; iitrace += ch.ntrace; if(ch.nbyte>iimaxbyte) iimaxbyte = ch.nbyte; if(ch.ntrace>iimaxtrace) iimaxtrace = ch.ntrace; iimse += ch.mse; iicomp += ch.compress; } } while(fread (&ch,1,sizeof(ch),infp)); iicomp = iicomp/iigroup; iimse = iimse/iigroup; sprintf(c80,"C40 END EBCDIC %s %d %d %d %d %8.3f %8.3f", ch.key,iigroup,iitrace,iimaxbyte,iimaxtrace,iicomp,iimse); if(head==1) { fseeko(outfp,80*39,0); fwrite(c80,80,sizeof(char),outfp); } free(c80); free(data); exit(0); }
void CPrePointPag::SetBasePoint() { /* try { long bFirst; CPreDrawPag* pag=(CPreDrawPag*)(((CPropertySheet*)this->GetParent())->GetPage(1)); pag->UpdateData(); this->UpdateData(); bFirst = 1; CDaoRecordset rs; rs.m_pDatabase=&EDIBgbl::dbSORT; if(pag->GetCheckedRadioButton(IDC_DRAWSIZE_A3,IDC_DRAWSIZE_AUTO)==IDC_DRAWSIZE_A3) modPHScal::Ax = "A3"; else modPHScal::Ax = "A4"; //modPHScal::Ax = CString("A") + IIf(OptionDrawSIZE_A3A4(0), "3", "4") int ix=this->GetCheckedRadioButton(IDC_OPTIONZ1,IDC_OPTIONZ3); if(ix!=0) ix-=IDC_OPTIONZ1; if(!bGetPos) ix=oldix; CString FDp; if(ix==0) FDp="1_"; else { if(ix==1) FDp="2_"; else FDp="S_"; } if(pag->m_bCheckDraw_BOM) FDp+="bom"; CString SQLx = "SELECT * FROM phsDrawPos"; rs.Open(dbOpenDynaset,SQLx); CString sTmp; FDp.MakeUpper(); COleVariant vTmp; for(int i=0;i<9;i++) { sTmp=m_posFld[i].FldName; sTmp.MakeUpper(); SQLx = "((name))=\'" + FDp + sTmp + "\'"; //MsgBox SQLx if(rs.FindFirst(SQLx)) { if(bGetPos) { rs.GetFieldValue(modPHScal::Ax+"pos",vTmp); if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } else if( bSetPrevious) { rs.Edit(); rs.GetFieldValue(modPHScal::Ax+"old",vTmp); rs.SetFieldValue(modPHScal::Ax+"pos",vTmp); rs.Update(); if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } else if(bSetDefault) { rs.Edit(); rs.GetFieldValue(modPHScal::Ax+"Default",vTmp); rs.SetFieldValue(modPHScal::Ax+"pos",vTmp); rs.Update(); if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } else if (bSetBPOK ) { vTmp=COleVariant((long)m_posFld[i].FldValue); rs.Edit(); rs.SetFieldValue(modPHScal::Ax+"pos",vTmp); rs.Update(); } else { rs.GetFieldValue(modPHScal::Ax+"pos",vTmp); if(iSetBPbegan == 1 ) { rs.Edit(); rs.SetFieldValue(modPHScal::Ax+"old",vTmp); rs.Update(); } if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } } } bSetDefault = false; bSetBPOK = false; bSetPrevious = false; iSetBPbegan = iSetBPbegan + 1; } catch(CDaoException *e) { //e->ReportError(); char ss[256]; e->GetErrorMessage(ss,255); MessageBox(ss); e->Delete(); } */ try { long bFirst; CPreDrawPag* pag=(CPreDrawPag*)(((CPropertySheet*)this->GetParent())->GetPage(1)); pag->UpdateData(); this->UpdateData(); bFirst = 1; _RecordsetPtr rs; rs.CreateInstance(__uuidof(Recordset)); if(pag->GetCheckedRadioButton(IDC_DRAWSIZE_A3,IDC_DRAWSIZE_AUTO)==IDC_DRAWSIZE_A3) modPHScal::Ax = "A3"; else modPHScal::Ax = "A4"; long curA3A4; //当前绘图选项的图幅尺寸 if((curA3A4 = pag->GetCheckedRadioButton(IDC_DRAWSIZE_A3, IDC_DRAWSIZE_AUTO)) == IDC_DRAWSIZE_A3) modPHScal::Ax = "A3"; else modPHScal::Ax = "A4"; if (curA3A4 != 0) curA3A4 -= IDC_DRAWSIZE_A3; CString strCurAx; if (oldA3A4 <= -1) { oldA3A4 = curA3A4; strCurAx = modPHScal::Ax; } else { if (oldA3A4 == 0) strCurAx = "A3"; else strCurAx = "A4"; } oldA3A4 = curA3A4; int ix=this->GetCheckedRadioButton(IDC_OPTIONZ1,IDC_OPTIONZ3); if(ix!=0) ix-=IDC_OPTIONZ1; if(!bGetPos) ix=oldix; CString FDp; if(ix==0) FDp="1_"; else { if(ix==1) FDp="2_"; else FDp="S_"; } if(pag->m_bCheckDraw_BOM) FDp+="bom"; CString SQLx = "SELECT * FROM phsDrawPos"; rs->Open((_bstr_t)SQLx,_variant_t((IDispatch*)EDIBgbl::dbPHScode,true), adOpenDynamic, adLockOptimistic, adCmdText); if (!rs->adoEOF) { CString sTmp; FDp.MakeUpper(); _variant_t vTmp; HRESULT hr = S_OK; rs->MoveFirst(); for(int i=0;i<9;i++) { sTmp=m_posFld[i].FldName; sTmp.MakeUpper(); SQLx = "((name))=\'" + FDp + sTmp + "\'"; hr = rs->Find((_bstr_t)(SQLx), 0, adSearchForward); if(!rs->adoEOF) { if(bGetPos) { rs->get_Collect((_variant_t)(strCurAx + "pos"), &vTmp); if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } else if( bSetPrevious) { rs->get_Collect((_variant_t)(strCurAx + "old"), &vTmp); rs->put_Collect((_variant_t)(strCurAx + "pos"), vTmp); rs->Update(); if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } else if(bSetDefault) { rs->get_Collect((_variant_t)(strCurAx + "Default"), &vTmp); rs->put_Collect((_variant_t)(strCurAx + "pos"), vTmp); rs->Update(); if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } else if (bSetBPOK ) { vTmp=_variant_t((long)m_posFld[i].FldValue); rs->put_Collect((_variant_t)(strCurAx + "pos"), vTmp); rs->Update(); } else { rs->get_Collect((_variant_t)(strCurAx + "pos"), &vTmp); if(iSetBPbegan == 1 ) { rs->put_Collect((_variant_t)(strCurAx + "old"), vTmp); rs->Update(); } if(vTmp.vt==VT_NULL) m_posFld[i].FldValue=10; else m_posFld[i].FldValue=vtoi(vTmp); } } } bSetDefault = false; bSetBPOK = false; bSetPrevious = false; iSetBPbegan = iSetBPbegan + 1; } } catch (_com_error &e) { CString strMsg; strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description()); AfxMessageBox(strMsg); } this->UpdateData(false); }
//导入弹簧数据(变力弹簧) void CAESARIIToPHS::ImportHanger(_RecordsetPtr rsData,long node,CString strJOBNAME_P) { CString strSQL; _RecordsetPtr pRs; double dLoadx=1.0;//力的单位转换因子 double dFOffset=0.0;//力的偏移量 _variant_t tmpvar; CString str; CString strSize; CString strPHSType; try { strSQL.Format(_T("SELECT * FROM [OUTPUT_HANGERS] WHERE [NODE] = %d AND [JOBNAME] = '%s'" ), node,strJOBNAME_P); pRs = m_pConnSourceDB->Execute(_bstr_t(strSQL),NULL,adCmdText); if(!(pRs->BOF&&pRs->adoEOF)) { pRs->MoveFirst(); //力的单位转换 /* str=vtos(pRs->GetCollect(_T("LOAD_UNITS"))); str.TrimLeft(); str.TrimRight(); str.MakeLower(); dLoadx=UnitsToUeUnits(rsData,str,m_strUNITFORCE,dFOffset); if(m_IsCaesarError) return;//pfg20050629当单位转换出错、终止导入数据 */ //pgz1工作荷载已经在表:OUTPUT_RESTRAINTS中导入了 // rsData->PutCollect("pgz1",_variant_t(vtof(pRs->GetCollect("HOT_LOAD"))*dLoadx)); // rsData->PutCollect("paz0",_variant_t(vtof(pRs->GetCollect("TH_INSTALL_LOAD"))*dLoadx+dFOffset)); // rsData->PutCollect("paz1",_variant_t(vtof(pRs->GetCollect("AC_INSTALL_LOAD"))*dLoadx+dFOffset)); double dLoadVariation = 0.0; dLoadVariation = vtof( pRs->GetCollect("LOAD_VARIATION") ); if ( dLoadVariation < 1E-6 ) { strPHSType = _T("9999"); //恒力弹簧 } else //变力弹簧 { rsData->PutCollect("CoefOfVarLoad",_variant_t( dLoadVariation /100 ) ); tmpvar = pRs->GetCollect("SIZE"); strSize.Format(_T("%02d"),vtoi(tmpvar)); //并联数 int iParalNum = vtoi( pRs->GetCollect( _T("NUMREQ") ) ); CString strHangerType = vtos( pRs->GetCollect( _T("FIGNUM") ) ); //串联数 int iSeriesNum = 0; if ( !GetHangerSeriesNum(strHangerType,iSeriesNum) ) //得到弹簧不成功 { CString strError; strError.Format( _T("无法通过弹簧类型%s获得弹簧的串联数,串联数默认为1"),strHangerType ); AfxMessageBox( strError ); iSeriesNum = 1; } //形成类似GLIF定义的支吊架类型号 strPHSType.Format( _T("%d%d%s"),iSeriesNum,iParalNum,strSize ); } rsData->PutCollect("TYPE",_variant_t(strPHSType)); rsData->PutCollect("psaTYPE",_variant_t(strPHSType)); } } catch (_com_error &e) { CString strMsg; strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description()); AfxMessageBox(strMsg); } if ( pRs->State == adStateOpen ) { pRs->Close(); } }
void CFrmPreferences::OnOK() { // TODO: Add extra validation here bool FLAG = modPHScal::gbSPRBHLOADUNITBYNEWTON; //保存 m_wndCalPag.SaveIniValue(); m_wndDrawPag.SaveIniValue(); m_wndPointPag.SaveIniValue(); if(m_wndStylePag.GetActiveTimes() > 1) { m_wndStylePag.SaveIniValue(); } SetRegValue(_T("Settings"), _T("CSPRAutoLugDia"), modPHScal::gbCSPRAutoLugDia); SetRegValue(_T("Settings"), _T("AutoTZ"), modPHScal::AutoOrdinateDrawing); SetRegValue(_T("Settings"), _T("CalSAbyConservativenessMethod"), (modPHScal::gbCalSAbyConservativenessMethod)); SetRegValue(_T("Settings"), _T("CalSAbyPJG"), (modPHScal::gbCalSAbyPJG)); SetRegValue(_T("Settings"), _T("CalCSPRLugDiaByPjg"), (modPHScal::gbCalCSPRLugDiaByPjg)); SetRegValue(_T("Settings"), _T("CalPARTbyMaxLoad"), (modPHScal::gbCalPARTbyMaxLoad)); SetRegValue(_T("Settings"), _T("AddPartWeight2PMax"), (modPHScal::gbAddPartWeight2PMax)); SetRegValue(_T("Settings"), _T("AddPartWeight2CSPRPgz"), (modPHScal::gbAddPartWeight2CSPRPgz)); SetRegValue(_T("Settings"), _T("AddPartWeight2SPRPgz"), (modPHScal::gbAddPartWeight2SPRPgz));//2007.07.30 SetRegValue(_T("Settings"),_T("PAForceZero"),(modPHScal::gbPAForceZero));//2007.09.25 SetRegValue(_T("Settings"), _T("MaxPgzPaz"), (modPHScal::gbMaxPgzPaz));//2007.09.03 SetRegValue(_T("Settings"), _T("MinMaxDispByActualDisp"), (modPHScal::gbMinMaxDispByActualDisp)); SetRegValue(_T("Settings"), _T("PhsOutINFOTableType"), (modPHScal::giPhsOutINFOTableType)); SetRegValue(_T("Settings"), _T("DrawSIZE_A3A4"), (modPHScal::giDrawSIZE_A3A4)); SetRegValue(_T("Settings"), _T("IsACAD"), (modPHScal::gIsACAD)); SetRegValue(_T("Settings"), _T("SpringOrder"), (modPHScal::giSpringOrder)); SetRegValue(_T("Settings"), _T("strSpringOrder"), modPHScal::gstrSpringOrder); SetRegValue(_T("Settings"), _T("strSpringOrderSQL"), modPHScal::gstrSpringOrderSQL); SetRegValue(_T("Settings"), _T("PhsColor"), modPHScal::gsPhsColor); SetRegValue(_T("Settings"), _T("Draw_BOM"), (modPHScal::gbDraw_BOM)); SetRegValue(_T("Settings"), _T("AnnotateCSPR"), (modPHScal::gbAnnotateCSPR)); SetRegValue(_T("Settings"), _T("Draw_OVERWRITE"), (modPHScal::gbDrawOVERWRITE)); SetRegValue(_T("Settings"), _T("WorksWithBoltsNuts"), (modPHScal::gbWorksWithBoltsNuts)); SetRegValue(_T("Settings"), _T("WorksWithSABoltsNuts"), (modPHScal::gbWorksWithSABoltsNuts)); SetRegValue(_T("Settings"), _T("DW_delta"), (modPHScal::gnDW_delta)); SetRegValue(_T("Settings"), _T("ZDJH"), (EDIBgbl::glCurRecordNo)); SetRegValue(_T("Settings"), _T("DrawNoPreMethod"), (modPHScal::gbDrawNoPreMethod)); SetRegValue(_T("Settings"), _T("AutoSaveDrawing"), (modPHScal::gbAutoSaveDrawing)); SetRegValue(_T("Settings"), _T("DrawNoStartNumber"), (modPHScal::glDrawNoStartNumber)); SetRegValue(_T("Settings"), _T("DwgVersion"), (EDIBgbl::strDwgVersion)); SetRegValue(_T("Settings"), _T("MaxLGLong"), (EDIBgbl::MaxLGLong));//pfg20050922 SetRegValue(_T("Settings"), _T("DWGPreMethod"), (modPHScal::glDWGPreMethod)); SetRegValue(_T("Settings"), _T("DWGPre"), modPHScal::gsDWGPre); SetRegValue(_T("Settings"), _T("CSPRCanSpecialDesign"), (modPHScal::gbCSPRCanSpecialDesign)); SetRegValue(_T("Settings"), _T("LimitLugMinDia"), (modPHScal::gbLimitLugMinDia)); SetRegValue(_T("Settings"), _T("AutoAlignCSPRtoSA"), (modPHScal::gbAutoAlignCSPRtoSA)); SetRegValue(_T("Settings"), _T("SumAllVolume"), (modPHScal::gbSumAllVolume)); //////////////////////////// if(FLAG!=modPHScal::gbSPRBHLOADUNITBYNEWTON)//单位改变时要初始化 { //this->ShowWindow(SW_HIDE); //modPHScal::blnSelphsSPEC(true); _variant_t tmpvar; int inttbExist=0;//0表示第一次进入循环,1表示表存在,2表示表不存在 _RecordsetPtr rsX; rsX.CreateInstance(__uuidof(Recordset)); _ConnectionPtr db, db1; db.CreateInstance(__uuidof(Connection)); db1.CreateInstance(__uuidof(Connection)); long lngErrNum ; CString sTmp; CString strConnect; strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s"), basDirectory::DBShareDir + _T("zdjcrude.mdb"), ModEncrypt::gstrDBZdjCrudePassWord); db->Open((_bstr_t)strConnect, "", "", adModeUnknown); db1->Open((_bstr_t)("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+basDirectory::ProjectDBDir+_T("sort.mdb")), (_bstr_t)"", (_bstr_t)"",adModeUnknown); if(rsX->State == adStateOpen) rsX->Close(); rsX->Open((_bstr_t)_T("SELECT * FROM phsManuSPRING ORDER BY [Observation],[standard] ASC"), _variant_t((IDispatch*)EDIBgbl::dbSORT,true), adOpenDynamic, adLockOptimistic, adCmdText); modPHScal::gsPhsSPRINGSel.TrimLeft();modPHScal::gsPhsSPRINGSel.TrimRight(); if( rsX->adoEOF && rsX->BOF ) { lngErrNum = IDS_NotFoundThisStandardInSortMdb; sTmp.Format(GetResStr(lngErrNum),EDIBgbl::GetDBName(db1),_T("phsManuBoltsNuts"),modPHScal::gsPhsBoltsNutsSel); ShowMessage(sTmp); if(rsX->State == adStateOpen) rsX->Close(); if(db->State == adStateOpen) db->Close(); if(db1->State == adStateOpen) db1->Close(); CPropertySheet::EndDialog(IDOK); } if(modPHScal::gsPhsSPRINGSel != _T("") ){ // rsX->Filter=_variant_t(CString(_T("standard=\'") )+ gsPhsPASel + _T("\'")); //rsX.FindFirst //rsX->Find(_bstr_t(CString(_T("standard=\'"))+gsPhsSPRINGSel+_T("\'")),0,adSearchForward); HRESULT hr = S_OK; CString strFind; strFind = _T("standard=\'")+modPHScal::gsPhsSPRINGSel+_T("\'"); hr = rsX->Find((_bstr_t)strFind, 0, adSearchForward); if( !rsX->adoEOF) { rsX->MoveFirst(); inttbExist=2; } } else { rsX->MoveFirst(); inttbExist=2; } while((inttbExist!=1)&&(!rsX->adoEOF)) { rsX->get_Collect((_variant_t)_T("standard"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::gsPhsSPRINGSel=_T(""); else{ modPHScal::gsPhsSPRINGSel=vtos(tmpvar); modPHScal::gsPhsSPRINGSel.TrimLeft();modPHScal::gsPhsSPRINGSel.TrimRight(); } rsX->get_Collect((_variant_t)_T("Spring_property"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::tbnSPRINGproperty=_T(""); else{ modPHScal::tbnSPRINGproperty=vtos(tmpvar); modPHScal::tbnSPRINGproperty.TrimLeft();modPHScal::tbnSPRINGproperty.TrimRight(); } rsX->get_Collect((_variant_t)_T("Spring_propertyMaxDist"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::tbnDiscSPRINGpropertyMaxDist=_T(""); else{ modPHScal::tbnDiscSPRINGpropertyMaxDist=vtos(tmpvar); modPHScal::tbnDiscSPRINGpropertyMaxDist.TrimLeft();modPHScal::tbnDiscSPRINGpropertyMaxDist.TrimRight(); } rsX->get_Collect((_variant_t)_T("Spring_id"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::tbnSPRINGid=_T(""); else{ modPHScal::tbnSPRINGid=vtos(tmpvar); modPHScal::tbnSPRINGid.TrimLeft();modPHScal::tbnSPRINGid.TrimRight(); } rsX->get_Collect((_variant_t)_T("Spring_Crude"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::tbnSPRINGCrude=_T(""); else{ modPHScal::tbnSPRINGCrude=vtos(tmpvar); modPHScal::tbnSPRINGCrude.TrimLeft();modPHScal::tbnSPRINGCrude.TrimRight(); } rsX->get_Collect((_variant_t)_T("CrudeTurnbuckle"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::tbnSPRINGL5Crude=_T(""); else{ modPHScal::tbnSPRINGL5Crude=vtos(tmpvar); modPHScal::tbnSPRINGL5Crude.TrimLeft();modPHScal::tbnSPRINGL5Crude.TrimRight(); } //以下判断弹簧原始数据表在数据库中是否存在 rsX->get_Collect((_variant_t)_T("DiameterSerial"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::tbnSPRDiameterSerial=_T(""); else{ modPHScal::tbnSPRDiameterSerial=vtos(tmpvar); modPHScal::tbnSPRDiameterSerial.TrimLeft();modPHScal::tbnSPRDiameterSerial.TrimRight(); } if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRDiameterSerial,_T("phsManuSPRING"),_T("DiameterSerial"),modPHScal::gsPhsSPRINGSel)) { if(inttbExist==0) //第一次移到第一条记录上 { rsX->MoveFirst(); inttbExist=2; } else //不是第一次,向后移一条记录 rsX->MoveNext(); continue; } if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGCrude,_T("phsManuSPRING"),_T("Spring_Crude"),modPHScal::gsPhsSPRINGSel)) { if(inttbExist==0) //第一次移到第一条记录上 { rsX->MoveFirst(); inttbExist=2; } else //不是第一次,向后移一条记录 rsX->MoveNext(); continue; } if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGL5Crude,_T("phsManuSPRING"),_T("CrudeTurnbuckle"),modPHScal::gsPhsSPRINGSel)) { if(inttbExist==0) //第一次移到第一条记录上 { rsX->MoveFirst(); inttbExist=2; } else //不是第一次,向后移一条记录 rsX->MoveNext(); continue; } if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGid,_T("phsManuSPRING"),_T("Spring_id"),modPHScal::gsPhsSPRINGSel)) { if(inttbExist==0) //第一次移到第一条记录上 { rsX->MoveFirst(); inttbExist=2; } else //不是第一次,向后移一条记录 rsX->MoveNext(); continue; } if(!modPHScal::HStbExists(db,db1,modPHScal::tbnSPRINGproperty,_T("phsManuSPRING"),_T("Spring_property"),modPHScal::gsPhsSPRINGSel)) { if(inttbExist==0) //第一次移到第一条记录上 { rsX->MoveFirst(); inttbExist=2; } else //不是第一次,向后移一条记录 rsX->MoveNext(); continue; } if(!modPHScal::HStbExists(db,db1,modPHScal::tbnDiscSPRINGpropertyMaxDist,_T("phsManuSPRING"),_T("Spring_propertyMaxDist"),modPHScal::gsPhsSPRINGSel)) { if(inttbExist==0) //第一次移到第一条记录上 { rsX->MoveFirst(); inttbExist=2; } else //不是第一次,向后移一条记录 rsX->MoveNext(); continue; } inttbExist=1; } if(inttbExist!=1) { if(rsX->State == adStateOpen) rsX->Close(); if(db->State == adStateOpen) db->Close(); if(db1->State == adStateOpen) db1->Close(); CPropertySheet::EndDialog(IDOK); } inttbExist=0; rsX->get_Collect((_variant_t)_T("SerialNumPerSPR"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::giAllowedMaxSerialNumPerSPR=0; else{ modPHScal::giAllowedMaxSerialNumPerSPR=vtoi(tmpvar); // giAllowedMaxSerialNumPerSPR.TrimLeft();giAllowedMaxSerialNumPerSPR.TrimRight(); } rsX->get_Collect((_variant_t)_T("SerialNumSPRs"),&tmpvar); if(tmpvar.vt==VT_NULL) modPHScal::giAllowedMaxSerialNumSPRs=0; else{ modPHScal::giAllowedMaxSerialNumSPRs=vtoi(tmpvar); //giAllowedMaxSerialNumSPRs.TrimLeft();giAllowedMaxSerialNumSPRs.TrimRight(); } //当导入了规范或者启动过之后 bool bSPECchanged = true; if((bSPECchanged || modPHScal::gbStartedOnceAPHS) && !(modPHScal::gsPhsSPRINGSel == modPHScal::gsOldPhsSPRINGSel)) modPHScal::CreateTmpSPRPropertyTable(modPHScal::giAllowedMaxSerialNumSPRs); //获得弹簧或恒力弹簧编号规格的单位制 //以下判断恒力弹簧/碟簧规格编号力单位制描述字段值是否存在 rsX->get_Collect((_variant_t)_T("Unit_Force"),&tmpvar); if(tmpvar.vt==VT_NULL) { lngErrNum = IDS_NullXfieldInphsManuXOfsortMdb; sTmp.Format(GetResStr(lngErrNum),EDIBgbl::GetDBName(db1),_T("phsManuSPRING"),modPHScal::gsPhsSPRINGSel ,_T("Unit_Force")); ShowMessage(sTmp); if(rsX->State == adStateOpen) rsX->Close(); if(db->State == adStateOpen) db->Close(); if(db1->State == adStateOpen) db1->Close(); CPropertySheet::EndDialog(IDOK); } else{ sTmp=vtos(tmpvar); sTmp.TrimLeft();sTmp.TrimRight(); if(sTmp.Left(1)==_T("N")) { if(!modPHScal::gbSPRBHLOADUNITBYNEWTON) { modPHScal::gsSPRUnitOfLoad = _T("kgf"); rsX->put_Collect((_variant_t)_T("Unit_Force"),STR_VAR("kgf")); rsX->Update(); //如果没有导入,只修改模板库下的原始数据库; //修改方法: rsX->get_Collect((_variant_t)_T("Folder"), &tmpvar); if(tmpvar.vt==VT_NULL||vtos(tmpvar)=="") ; else { //如果有导入,还要修改导入路径下的原始数据库; } } else { modPHScal::gsSPRUnitOfLoad = _T("N"); } // gsSPRUnitOfLoad = _T("N"); } else if(sTmp.Left(3)==_T("daN")) modPHScal::gsSPRUnitOfLoad = _T("daN"); else if(sTmp.Left(3)==_T("kgf")) { if(modPHScal::gbSPRBHLOADUNITBYNEWTON) { modPHScal::gsSPRUnitOfLoad = _T("N"); rsX->put_Collect((_variant_t)_T("Unit_Force"),STR_VAR("N")); rsX->Update(); //如果没有导入,只修改模板库下的原始数据库; //修改方法: rsX->get_Collect((_variant_t)_T("Folder"),&tmpvar); if(tmpvar.vt==VT_NULL||vtos(tmpvar)=="") ; else { //如果有导入,还要修改导入路径下的原始数据库; } } else { modPHScal::gsSPRUnitOfLoad = _T("kgf"); } } else //没找任何荷载单位制识别字符 { sTmp.Format(GetResStr(IDS_NotFoundUnitStringInBHFormat),EDIBgbl::GetDBName(db1),_T("phsManuSPRING"),GetResStr(IDS_SPR),vtos(tmpvar)); ShowMessage(sTmp); modPHScal::gsSPRUnitOfLoad = _T("daN"); } } } CPropertySheet::EndDialog(IDOK); }
int main(int argc, char **argv) { float **data; char **hdrdata; float ***workm; int ival2; /* int value of key2 */ int ival3; /* int value of key3 */ Value val2; /* ... its value */ Value val3; /* ... its value */ int index2; int index3; int n1,n2,n3; int i1,i2,i3; char *key2=NULL; /* header key word from segy.h */ char *type2=NULL; /* ... its type */ char *key3=NULL; /* header key word from segy.h */ char *type3=NULL; /* ... its type */ int lins; int line; int nl; int dir=2; int il; int su; float cdp; float t; float dt; /* Initialize */ initargs(argc, argv); requestdoc(1); MUSTGETPARINT("n2", &n2); MUSTGETPARINT("n3", &n3); /* get key2*/ if (!getparstring("key2", &key2)) key2 = "fldr"; type2 = hdtype(key2); index2 = getindex(key2); /* get key3*/ if (!getparstring("key3", &key3)) key3 = "tracf"; type3 = hdtype(key3); index3 = getindex(key3); if (!getparint("lins", &lins)) lins = 1; if(lins<1) err(" lins must be larger than 0"); if (!getparint("line", &line)) line = n2; if (!getparint("su", &su)) su = 1; /* Get info from first trace */ if (!gettr(&tr)) err ("can't get first trace"); n1 = tr.ns; if (!getparfloat("dt", &dt)) dt = ((float) tr.dt)/1000000.0; if (!dt) { dt = .01; warn("dt not set, assumed to be .01"); } data = bmalloc(n1*sizeof(float),n2,n3); hdrdata = bmalloc(HDRBYTES,n2,n3); do { gethval(&tr, index2, &val2); ival2 = vtoi(type2,val2); gethval(&tr, index3, &val3); ival3 = vtoi(type3,val3); if(ival2>n2 || ival2<0 ) err(" Array in dimension 2 out of bound\n"); if(ival3>n3 || ival3<0 ) err(" Array in dimension 3 out of bound\n"); bmwrite(data,1,ival2-1,ival3-1,1,tr.data); bmwrite(hdrdata,1,ival2-1,ival3-1,1,&tr); } while (gettr(&tr)); nl=line-lins+1; if(dir==2) { /* n2 direction */ workm = alloc3float(n1,n3,nl); for(il=lins-1;il<nl;il++) { for(i3=0;i3<n3;i3++) bmread(data,1,lins+il-1,i3,1,workm[il][i3]); } if(su==1) { fprintf(stdout,"cdp="); for(il=lins-1;il<nl;il++) { for(i3=0;i3<n3;i3++) fprintf(stdout,"%d,",(lins+il)*1000+i3+1); } for(il=lins-1;il<nl;il++) { for(i3=0;i3<n3;i3++){ fprintf(stdout,"\ntnmo="); for(i1=0;i1<n1;i1++) fprintf(stdout,"%.3f,",dt*i1); fprintf(stdout,"\nvnmo="); for(i1=0;i1<n1;i1++) fprintf(stdout,"%.3f,",workm[il][i3][i1]); } } } else { for(il=lins-1;il<nl;il++) { for(i3=0;i3<n3;i3++) { cdp=(lins+il)*1000+i3+1; fwrite(&cdp,sizeof(float),1,stdout); } } for(il=lins-1;il<nl;il++) { for(i3=0;i3<n3;i3++){ for(i1=0;i1<n1;i1++) { t=tr.d1*i1; fwrite(&t,sizeof(float),1,stdout); } for(i1=0;i1<n1;i1++) fwrite(&workm[il][i3][i1],sizeof(float),1,stdout); } } } free3float(workm); } bmfree(data); bmfree(hdrdata); return EXIT_SUCCESS; }
//绘制表格 void CDrawZDJTableID::DrawzdjTable(int index,bool bIsCom) { try { bool Found=false; CCadPoint p0, p1; _RecordsetPtr rs; rs.CreateInstance(__uuidof(Recordset)); _RecordsetPtr rs1; rs1.CreateInstance(__uuidof(Recordset)); int i=0; int k=0; static int n=0; if(index!=iZDJDRAWEXECL && index!=iZDJDRAWCatalogueExcel) { EDIBAcad::StartAcad(); EDIBAcad::DisplayAcadTop(); EDIBAcad::SetAcadTop(); EDIBAcad::GetActiveAcadDoc(); } //如果当前打开的图形不是(PhsBlkDir & _T("phs.dwg")),需要重新打开 //因为后面的操作需要大量的图形块准备好 CString sTmp,sTmp1; _variant_t vTmp; CMObject objTmp; CCadPoint pTmp; CString SQLx; _variant_t varTmp; _variant_t varNull; varNull.ChangeType(VT_NULL); if(index!=iZDJDRAWTag && index!=iZDJDRAWbom) { //判断是否所有支吊架计算完成。 try { if(!FrmTxsr.m_pViewTxsr->m_ActiveRs->adoEOF && !FrmTxsr.m_pViewTxsr->m_ActiveRs->BOF) FrmTxsr.m_pViewTxsr->m_ActiveRs->Update(); } catch (_com_error &e) { CString strMsg; strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description()); AfxMessageBox(strMsg); } CString SQLx = _T("SELECT count(*) FROM [") + EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE ( bCalSuccess=0 OR bCalSuccess IS NULL )"); if(modPHScal::gbSumAllVolume ) { SQLx +=_T(" AND VolumeID IN ( SELECT VolumeID FROM Volume WHERE EnginID=\'") + EDIBgbl::SelPrjID + _T("\' AND ZYID = ") + ltos(EDIBgbl::SelSpecID) + _T(" AND SJJDID = ") + ltos(EDIBgbl::SelDsgnID) + _T(" AND SJHYID = ") + ltos(EDIBgbl::SelHyID) +_T(") "); } else { SQLx +=_T(" AND VolumeID =") + ltos(EDIBgbl::SelVlmID); } long i1,i2; rs1->Open(_variant_t(SQLx),(IDispatch*)::conPRJDB,adOpenForwardOnly,adLockReadOnly,adCmdText); i1=vtoi(rs1->GetCollect(_variant_t((long)0))); rs1->Close(); SQLx = _T("SELECT count(*) FROM [") + EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE "); if(modPHScal::gbSumAllVolume ) { SQLx +=_T(" VolumeID IN ( SELECT VolumeID FROM Volume WHERE EnginID=\'") + EDIBgbl::SelPrjID + _T("\' AND ZYID = ") + ltos(EDIBgbl::SelSpecID) + _T(" AND SJJDID = ") + ltos(EDIBgbl::SelDsgnID) + _T(" AND SJHYID = ") + ltos(EDIBgbl::SelHyID) +_T(") "); } else { SQLx +=_T(" VolumeID =") + ltos(EDIBgbl::SelVlmID); } rs1->Open(_variant_t(SQLx),(IDispatch*)::conPRJDB,adOpenForwardOnly,adLockReadOnly,adCmdText); i2=vtoi(rs1->GetCollect(_variant_t((long)0))); rs1->Close(); rs1=NULL; CString strTmp; strTmp.Format(GetResStr(IDS_SomePhsNotCalSuccess),ltos(i2),ltos(i2-i1),ltos(i1)); if( IDNO == ShowMessage(strTmp,MB_DEFBUTTON1|MB_ICONQUESTION|MB_YESNO) ) return; } switch(index) { case iZDJDRAWTag: break; case iZDJDRAWbom: modPHScal::SetBasePoint(); Cavphs->GetphsSEQ(FrmTxsr.m_pViewTxsr->m_ActiveRs); EDIBDB::MakeTmp2ToBom(); p0.SetPoint(modPHScal::pt2x,modPHScal::pt2y); EDIBAcad::DeleteAllEntitiesInLayers(1,_T("bom")); rs->Open((_bstr_t)_T("SELECT * FROM TMP2"), _variant_t((IDispatch*)EDIBgbl::dbPRJ,true), adOpenStatic, adLockOptimistic, adCmdText); EDIBAcad::DrawTableACAD(p0, EDIBgbl::TLJ, atan(1.0) * 0.0, rs,0,1.0f,_T("Bom"),_T("Bom"),_T("%g"),modPHScal::iAlignLjmx); sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TCL].MnuCaption); ShowMessage(sTmp); break; case iZDJDRAWbomBJBW: modPHScal::SetBasePoint(); Cavphs->GetphsSEQ(FrmTxsr.m_pViewTxsr->m_ActiveRs); EDIBDB::MakeTmp2ToBom(); p0.SetPoint(modPHScal::pt2x,modPHScal::pt2y); EDIBAcad::DeleteAllEntitiesInLayers(1,_T("bom")); rs->Open((_bstr_t)_T("SELECT * FROM TMP2"), _variant_t((IDispatch*)EDIBgbl::dbPRJ,true), adOpenStatic, adLockOptimistic, adCmdText); EDIBAcad::DrawTableACAD(p0, EDIBgbl::TLJ_BJBW, atan(1.0) * 0.0, rs,0,1.0f,_T("Bom"),_T("Bom"),_T("%g"),modPHScal::iAlignLjmx); sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TCL].MnuCaption); ShowMessage(sTmp); break; case iZDJDRAWload: modPHScal::SetBasePoint(); modPHScal::PhsDisplacementLoadINFOMake(); break; case iZDJDRAW270mm: //每次计算一个支吊架时生成当前当前支吊架一览表,计算完成后总的一览表就生成了。 //每次计算一个支吊架时生成当前当前支吊架明细一览表,计算完成后总的明细一览表就生成了。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t var; var=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = var; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD, atan(1.0) * 0.0, rs, 0,1.0f, _T("YLB")); } break; case iZDJDRAW180mm: //每次计算一个支吊架时生成当前支吊架一览表,计算完成后总的一览表就生成了。 //每次计算一个支吊架时生成当前支吊架明细一览表,计算完成后总的明细一览表就生成了。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD180, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAW270L: SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE ZDJH IN ( SELECT ZDJH FROM [") + EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" AND TYPE LIKE \'????\' ) AND VolumeID =")+ ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD270L, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAWEXECL: SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE ZDJH IN ( SELECT ZDJH FROM [") + EDIBgbl::Btype[EDIBgbl::TZA] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" AND TYPE LIKE \'????\' ) AND VolumeID =")+ ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) { EDIBAcad::DrawTableExcel( EDIBgbl::TZDExcel, rs); } sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TZDExcel].MnuCaption); ShowMessage(sTmp); break; case iZDJDRAW705mm: //判断是否所有支吊架计算完成。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp =v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAW705mmHSY: ////核四院支吊架明细一览表 //判断是否所有支吊架计算完成。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp =v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800HSY, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAW705mmQGY: ////支吊架明细一览表 //判断是否所有支吊架计算完成。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp =v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800QGY, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAW270pc: //巴陵石化设计院支吊架表 //每次计算一个支吊架时生成当前当前支吊架一览表,计算完成后总的一览表就生成了。 //每次计算一个支吊架时生成当前当前支吊架明细一览表,计算完成后总的明细一览表就生成了。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZP, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAWCatalogue: EDIBDB::DrawID = EDIBAcad::GetDrawIDAndName(1, EDIBDB::DrawName); //绘制目录 //每次计算一个支吊架时生成当前当前支吊架图纸目录信息,计算完成后总的目录就生成了。 SQLx=_T("DELETE FROM [ML] WHERE VolumeID IS NULL AND ZDJH IS NULL"); EDIBgbl::dbPRJDB->Execute((_bstr_t)SQLx, NULL, adCmdText); SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY SEQ"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) { //如果第一个图纸的序号>=1,在前面添加空的图纸目录,以便用户手工修改 VARIANT vTmp; HRESULT hr = S_OK; CString strFind; strFind = _T("ZDJH <> NULL"); hr = rs->Find((_bstr_t)strFind, 0, adSearchForward); if( rs->adoEOF) return; rs->get_Collect((_variant_t)_T("SEQ"), &varTmp); k = vtoi(varTmp); for( i = 1 ;i< k ;i++) { strFind = _T("SEQ=") + ltos(i); hr = rs->Find((_bstr_t)strFind, 0, adSearchForward); if( rs->adoEOF) { rs->AddNew(); rs->put_Collect((_variant_t)_T("SEQ"),_variant_t((long)i)); rs->put_Collect((_variant_t)_T("Pages"),_variant_t((long)1)); rs->put_Collect((_variant_t)_T("DrawNo"),STR_VAR(_T("1"))); rs->put_Collect((_variant_t)_T("DrawNa"),STR_VAR(_T("1"))); rs->put_Collect((_variant_t)_T("Zdjh"),varNull); rs->put_Collect((_variant_t)_T("VolumeID"),varNull); rs->Update(); } } rs->Close(); //zsy 12/17 改为用ARX画图 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID IS NULL OR VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY SEQ"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenDynamic, adLockOptimistic, adCmdText); ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TML, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("ML")); } break; case iZDJDRAWCatalogueExcel: EDIBDB::DrawID = EDIBAcad::GetDrawIDAndName(1, EDIBDB::DrawName); //绘制目录 //每次计算一个支吊架时生成当前当前支吊架图纸目录信息,计算完成后总的目录就生成了。 SQLx=_T("DELETE FROM [ML] WHERE VolumeID IS NULL AND ZDJH IS NULL"); EDIBgbl::dbPRJDB->Execute((_bstr_t)SQLx, NULL, adCmdText); SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY SEQ"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenDynamic, adLockOptimistic, adCmdText); VARIANT vTmp; if(!rs->BOF && !rs->adoEOF) { //如果第一个图纸的序号>=1,在前面添加空的图纸目录,以便用户手工修改 HRESULT hr = S_OK; CString strFind; strFind = _T("ZDJH <> NULL"); hr = rs->Find((_bstr_t)strFind, 0, adSearchForward); if( !rs->adoEOF) return; rs->get_Collect((_variant_t)_T("SEQ"), &varTmp); k = vtoi(varTmp); _variant_t vTmp; for( i = 1 ;i< k ;i++) { strFind = _T("SEQ=") + ltos(i); hr = rs->Find((_bstr_t)strFind, 0, adSearchForward); if( rs->adoEOF) { rs->AddNew(); rs->put_Collect((_variant_t)_T("SEQ"),_variant_t((long)i)); rs->put_Collect((_variant_t)_T("Pages"),_variant_t((long)1)); rs->put_Collect((_variant_t)_T("DrawNo"),STR_VAR(_T("1"))); rs->put_Collect((_variant_t)_T("DrawNa"),STR_VAR(_T("1"))); rs->put_Collect((_variant_t)_T("Zdjh"),varNull); rs->put_Collect((_variant_t)_T("VolumeID"),varNull); rs->Update(); } } rs->Close(); SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TML] + _T("] WHERE VolumeID IS NULL OR VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY SEQ"); rs->Open((_bstr_t)SQLx,_variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenKeyset, adLockOptimistic, adCmdText); EDIBAcad::DrawTableExcel(EDIBgbl::TMLE, rs); } sTmp.Format(GetResStr(IDS_xDrawingFinished),EDIBgbl::Cbtype[EDIBgbl::TML].MnuCaption); ShowMessage(sTmp); break; case iZDJDRAWm_phs : //开始手工修改 EDIBAcad::MakeNewLayer(_T("M_phs0"), acRed); break; case iZDJDRAWXN180mm://绘制西南电力院的支吊架一览表 //Z8表 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZDSWED180, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAW705mmHBYZ: //华北冶建 //z9 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = v; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, EDIBgbl::TZD800HBYJ, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAWloadBJBW://北京巴威支吊荷载位移表 modPHScal::SetBasePoint(); modPHScal::PhsDisplacementLoadINFOMake("hz",0,EDIBgbl::TzDLOADNEW); break; //pfg20050601//北京华宇 case iZDJDRAWBJHY01: //判断是否所有支吊架计算完成。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp =v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, 36, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; case iZDJDRAWBJHY02: //判断是否所有支吊架计算完成。 SQLx = _T("SELECT * FROM [") + EDIBgbl::Btype[EDIBgbl::TZD] + _T("] WHERE VolumeID=") + ltos(EDIBgbl::SelVlmID) + _T(" ORDER BY zdjh"); rs->Open((_bstr_t)SQLx, _variant_t((IDispatch*)EDIBgbl::dbPRJDB,true), adOpenStatic, adLockOptimistic, adCmdText); if(!rs->BOF && !rs->adoEOF) {//zsy 12/17 改为用ARX画图 ShowMessage(GetResStr(IDS_PleasePickApointAsZDJYLBInsertPointINAutoCAD)); if( EDIBAcad::gbACADR14 || !bIsCom ) //使用动态库画图 { rs->Close(); }else { _variant_t v=EDIBAcad::objAcadDoc.GetPropertyByName(_T("Utility")); objTmp = v.pdispVal; p1=objTmp.Invoke(_T("GetPoint"),2,(LPVARIANT)p0,&_variant_t(GetResStr(IDS_PleasePickApointAsBOMInsertPointINAutoCAD))); p0 = p1; } EDIBAcad::DrawTableACAD(p0, 37, atan(1.0) * 0.0, rs, 0 , 1.0f, _T("YLB")); } break; //pfg20050601 } } catch(_com_error e) { ShowMessage(e.Description()); } }
//------------------------------------------------------------------ // DATE :[2005/09/30] // Parameter(s) : // Return : // Remark :将EXCEL文件导出到ACCESS数据库表中 //------------------------------------------------------------------ BOOL CImportAutoPD::ImportExcelToAccess(CString strExcelFileName, CString strWorksheetName, _ConnectionPtr pConDes, CString strTblName,CString strCurProID,CString KeyFieldName,CString ProFieldName) { CString strSQL; //SQL语句 _ConnectionPtr pConExcel; //连接EXCEL文件 _RecordsetPtr pRsExcel; _RecordsetPtr pRsAccess; _RecordsetPtr pRsTmp; pConExcel.CreateInstance(__uuidof(Connection)); pRsExcel.CreateInstance(__uuidof(Recordset)); pRsAccess.CreateInstance(__uuidof(Recordset)); pRsTmp.CreateInstance(__uuidof(Recordset)); STRUCT_ENG_ID listID[10]; //不同工程的最大序号和工程名称 int nProCount=0; //不同工程的个数 CString strTemp; int Rj=0; //工程号在Excel中的列 int ProjNum=1; int ProjIndex=0; int ID; if (NULL == pConDes) { return FALSE; } try { EDIBgbl::CAPTION2FIELD* pFieldStruct=NULL; _variant_t varTmp; //获得EXCEL中的字段名和ACCESS中的字段的对应值,返回字段个数 int nFieldCount = GetField2Caption(pFieldStruct); if (nFieldCount <= 0) { return FALSE; } strSQL = CONNECTSTRING_EXCEL + strExcelFileName;//连接EXCEL文件 pConExcel->Open(_bstr_t(strSQL), "", "", -1); //打开Excel工作表,加一个符号$如果出错再重试不加$再打开一次. strSQL = "SELECT * FROM ["+strWorksheetName+"$]"; try { pRsExcel->Open(_variant_t(strSQL), pConExcel.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); } catch (_com_error) { strSQL = "SELECT * FROM ["+strWorksheetName+"]"; pRsExcel->Open(_variant_t(strSQL), pConExcel.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); } if (pRsExcel->adoEOF && pRsExcel->BOF) { AfxMessageBox("文件中没有记录!"); return FALSE; } //打开Access表 strSQL = "SELECT * FROM ["+strTblName+"] WHERE "+ProFieldName+"='"+strCurProID+"' ORDER BY "+KeyFieldName+" "; pRsAccess->Open(_variant_t(strSQL), pConDes.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); if (pRsAccess->adoEOF && pRsAccess->BOF) { ID=0; } else { pRsAccess->MoveLast(); ID = vtoi(pRsAccess->GetCollect(_variant_t(KeyFieldName))); } ID++; listID[0].ID = ID; //当前工程最大的序号 listID[0].EnginID = strCurProID; for(;Rj < nFieldCount;Rj++) { if( !ProFieldName.CompareNoCase(pFieldStruct[Rj].strField) ) { break; } } _RecordsetPtr pRsTmp; pRsTmp.CreateInstance(__uuidof(Recordset)); CString strGroup; //作为关键字的所有字段组合 //strGroup = "[管道外径/规格], [管道壁厚], [管内压力], [介质温度], [管道材质]"; /* strGroup = "[卷册号],[色环],[管道/设备名称],[管道外径/规格],[管道壁厚],[介质温度],[安装地点],[管道材质],[备注],\ [内保温层材料名称],[外保温层材料名称],[保护层材料名称],[风速],[热价比主汽价],[年运行小时数],\ [油管道保温厚],[管内压力],[管内介质],[工程代号]"; strSQL = "SELECT "+strGroup+" FROM ["+strTblName+"] WHERE "+ProFieldName+"="+strCurProID+" "; pRsTmp->Open(_variant_t(strSQL), pConDes.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); if (pRsTmp->adoEOF && pRsTmp->BOF) { variant_t var = pRsTmp->GetCollect(_variant_t("enginid")); } */ //复制数据到ACCESS数据库中。 while (!pRsExcel->adoEOF) { pRsAccess->AddNew(); for (int i=0; i < nFieldCount; i++) { try { if (pFieldStruct[i].strCaption.IsEmpty()) { continue; } varTmp = pRsExcel->GetCollect(_variant_t(pFieldStruct[i].strCaption)); }catch (_com_error& e) { if (e.Error() == -2146825023) { strTemp = "原始数据表中没有字段 '"+pFieldStruct[i].strCaption+"' 。"; AfxMessageBox(strTemp); pFieldStruct[i].strCaption.Empty(); continue; } AfxMessageBox(e.Description()); return FALSE; } if (Rj < nFieldCount && i == Rj) //工程名称的字段 { strTemp = vtos(varTmp); for(int c=0; c<ProjNum; c++) { if( !strTemp.CompareNoCase(listID[c].EnginID) || (c==0 && strTemp.IsEmpty())) { ProjIndex = c; break; } } if( c == ProjNum ) //不同的工程找出最大的序号. { listID[c].EnginID = strTemp; strSQL = "SELECT * FROM ["+strTblName+"] \ WHERE "+ProFieldName+"='"+listID[c].EnginID+"' ORDER BY "+KeyFieldName+" "; if(pRsTmp->State == adStateOpen) pRsTmp->Close(); pRsTmp->Open(_variant_t(strSQL), pConDes.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); if( pRsTmp->adoEOF && pRsTmp->BOF ) { ID = 0; } else { pRsTmp->MoveLast(); varTmp = pRsTmp->GetCollect(_variant_t(KeyFieldName)); ID = vtoi(varTmp); } //最大的序号,将记录加到末尾. listID[c].ID = ++ID; ProjIndex = c; ProjNum++; } } pRsAccess->PutCollect(_variant_t(pFieldStruct[i].strField),varTmp); } //设置关键值和工程ID pRsAccess->PutCollect(_variant_t(KeyFieldName), _variant_t((long)listID[ProjIndex].ID++)); pRsAccess->PutCollect(_variant_t(ProFieldName),_variant_t(listID[ProjIndex].EnginID)); pRsAccess->PutCollect(_variant_t("c_bImport"),_variant_t((short)1)); //导入标志 pRsAccess->PutCollect(_variant_t("c_CalInThi"),_variant_t((short)1)); //是否自动计算内保温的厚度 1:不计算 pRsAccess->PutCollect(_variant_t("c_CalPreThi"),_variant_t((short)1)); //是否自动计算外保温的厚度 pRsAccess->Update(); pRsExcel->MoveNext(); }
int HDCrude::GetDH() { return vtoi(m_pRs.GetFieldValue(m_strDHField)); }