📄 tgdata_backup.cpp
字号:
/* Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("套管强度", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!外径 = dtw And mytable1!壁厚 = d(n) Then
qdanzhong = mytable1!公称重量
End If
mytable1.MoveNext
Loop
mytable1.Close
mydb1.Close
*/
strQuery.Format("select [公称重量] from [套管强度] where [外径] = %10.2f and [壁厚] = %10.2f",
dtw, d[n]);
TRACE(strQuery);
try
{
pRecordset->Open(dbOpenDynaset, strQuery, dbReadOnly);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
if(pRecordset->GetRecordCount() == 0)
{
strError.Format(_T(" 输入参数错误:数据库中没有该种外径或者\n套管强度(第%d项)!"),n+1);
AfxMessageBox(strError, MB_ICONERROR);
return;
}
pRecordset->MoveLast();
var = pRecordset->GetFieldValue(0);
TRACE("\n%ld\n",pRecordset->GetRecordCount());
switch (var.vt) {
case VT_R4:
qdanzhong = var.fltVal;
break;
case VT_R8:
qdanzhong = var.dblVal;
break;
}
pRecordset->Close();
/*
Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("截面积", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!套管尺寸 = dtw And mytable1!套管壁厚 = d(n) Then
b = mytable1!套管截面积
End If
mytable1.MoveNext
Loop
mytable1.Close
mydb1.Close
*/
strQuery.Format("select [套管截面积] from [截面积] where [套管尺寸] = %10.2f and [套管壁厚] = %10.2f",
dtw, d[n]);
TRACE(strQuery);
try
{
pRecordset->Open(dbOpenDynaset, strQuery, dbReadOnly);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
if(pRecordset->GetRecordCount() == 0)
{
strError.Format(_T(" 输入参数错误:数据库中没有该种套管尺寸或者\n套管壁厚(第%d项)!"),n+1);
AfxMessageBox(strError, MB_ICONERROR);
return;
}
pRecordset->MoveLast();
var = pRecordset->GetFieldValue(0);
TRACE("\n%ld\n",pRecordset->GetRecordCount());
switch (var.vt) {
case VT_R4:
b = var.fltVal;
break;
case VT_R8:
b = var.dblVal;
break;
}
pRecordset->Close();
/*
Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("套管强度", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!公称重量 = qdanzhong And mytable1!钢级 = x(n) Then
k = mytable1!抗挤强度
End If
mytable1.MoveNext
Loop
mytable1.Close
mydb1.Close
*/
strQuery.Format("select [抗挤强度] from [套管强度] where [公称重量] = %10.2f and [钢级] = \"%s\"",
qdanzhong, x[n]);
TRACE(strQuery);
try
{
pRecordset->Open(dbOpenDynaset, strQuery, dbReadOnly);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
if(pRecordset->GetRecordCount() == 0)
{
strError.Format(_T(" 输入参数错误:数据库中没有该种外径或者\n钢级(第%d项)!"),n+1);
AfxMessageBox(strError, MB_ICONERROR);
return;
}
pRecordset->MoveLast();
var = pRecordset->GetFieldValue(0);
TRACE("\n%ld\n",pRecordset->GetRecordCount());
switch (var.vt) {
case VT_R4:
k = var.fltVal;
break;
case VT_R8:
k = var.dblVal;
break;
}
pRecordset->Close();
/*
Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("最小屈服强度", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!钢级 = x(n) Then
c = mytable1!屈服强度
End If
mytable1.MoveNext
Loop
mytable1.Close
mydb1.Close
*/
strQuery.Format("select [屈服强度] from [最小屈服强度] where [钢级] = \"%s\"",
x[n]);
TRACE(strQuery);
try
{
pRecordset->Open(dbOpenDynaset, strQuery, dbReadOnly);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
if(pRecordset->GetRecordCount() == 0)
{
strError.Format(_T(" 输入参数错误:数据库中没有该种钢级\n(第%d项)!"),n+1);
AfxMessageBox(strError, MB_ICONERROR);
return;
}
pRecordset->MoveLast();
var = pRecordset->GetFieldValue(0);
TRACE("\n%ld\n",pRecordset->GetRecordCount());
switch (var.vt) {
case VT_I2:
c = var.iVal;
break;
case VT_I4:
c = var.lVal;
break;
}
pRecordset->Close();
Tb = 10 * QQ[n] / b;
dd = Tb / c;
int ddi;
ddi = int(dd * 1000 + 0.5);
if((ddi % 2) != 0)
ddi--;
dd = double(ddi) / 1000;
/*
Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("外挤压力系数K'", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!商 = dd Then
e = mytable1!系数
End If
mytable1.MoveNext
Loop
mytable1.Close
mydb1.Close
*/
if(dd == 0)
e = 0;
else
{
strQuery.Format("select [系数] from [外挤压力系数K\'] where [商] = %10.3f",
dd);
TRACE(strQuery);
try
{
pRecordset->Open(dbOpenDynaset, strQuery, dbReadOnly);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
if(pRecordset->GetRecordCount() == 0)
{
strError.Format(_T(" 输入参数错误:数据库中没有该种商\n(第%d项)!"),n+1);
AfxMessageBox(strError, MB_ICONERROR);
return;
}
pRecordset->MoveLast();
var = pRecordset->GetFieldValue(0);
TRACE("\n%ld\n",pRecordset->GetRecordCount());
switch (var.vt) {
case VT_R4:
e = var.fltVal;
break;
case VT_R8:
e = var.dblVal;
break;
}
pRecordset->Close();
}
Pcc = e * k;
if(l[n][0] <= f)
{
Scc = (Pcc / 1000) / ((Pcmax / H) * l[n][0]);
}
else if(l[n][1] <= f && f <= l[n][0])
{
Scc = (k / 1000) / ((Pcmax / H) * l[n][0]);
}
else
{
Scc = (k / 1000) / ((Pcmax / H) * l[n][0]);
}
Scc = int(Scc * 1000) / 1000.0;
m_grid1[n][4].Format("%10.3f",Scc);
// end 抗挤安全系数计算
pi = pph - (rs - rhk) * l[n][0];
// Call 抗内压安全系数计算
/* Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("套管强度", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!钢级 = x(n) And mytable1!壁厚 = d(n) Then
g = mytable1!抗内压力
End If
mytable1.MoveNext
Loop
mytable1.Close
mydb1.Close
*/
strQuery.Format("select [抗内压力] from [套管强度] where [壁厚] = %10.2f and [钢级] = \"%s\"",
d[n], x[n]);
TRACE(strQuery);
try
{
pRecordset->Open(dbOpenDynaset, strQuery, dbReadOnly);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
if(pRecordset->GetRecordCount() == 0)
{
strError.Format(_T(" 输入参数错误:数据库中没有该种壁厚或者\n钢级(第%d项)!"),n+1);
AfxMessageBox(strError, MB_ICONERROR);
return;
}
pRecordset->MoveLast();
var = pRecordset->GetFieldValue(0);
TRACE("\n%ld\n",pRecordset->GetRecordCount());
switch (var.vt) {
case VT_R4:
g = var.fltVal;
break;
case VT_R8:
g = var.dblVal;
break;
}
pRecordset->Close();
if(!fgq)
{
Sii = (g / 1000) / pi;
}
else
Sii = (g / 1000) / pi;
Sii = int(Sii * 1000) / 1000.0;
m_grid1[n][5].Format("%10.3f",Sii);
//end 抗内压安全系数计算
Qe[n+1] = Qe[n] + 0.00981 * q[n] * (l[n][00] - l[n][1]);
// Call 增产抗拉安全系数计算
Ai = 0.25 * 3.14 * dyn * dyn; //油管内截面积
Ao = 0.25 * 3.14 * dyw * dyw; //油管外截面积
Ap = 0.25 * 3.14 * (dtw - d[n]) * (dtw - d[n]); //套管内截面积
pii = psg + (rs - rhk) * l[n][0];
double po;
po = pph;
F1 = ((Ap - Ai) * pii - (Ap - Ao) * po) * 0.001;
pia = (pii + psg) / 2;
poa = (psg + po) / 2;
F2 = (0.64 * Ai * pia - 0.6 * Ao * poa) * 0.001;
T = F1 + F2 - Qe[n+1];
double Pj;
/*
Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("套管强度", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!钢级 = x(n) And mytable1!壁厚 = d(n) Then
Pj = mytable1!抗拉强度
End If
mytable1.MoveNext
Loop
mytable1.Close
mydb1.Close
*/
strQuery.Format("select [抗拉强度] from [套管强度] where [壁厚] = %10.2f and [钢级] = \"%s\"",
d[n], x[n]);
TRACE(strQuery);
try
{
pRecordset->Open(dbOpenDynaset, strQuery, dbReadOnly);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
if(pRecordset->GetRecordCount() == 0)
{
strError.Format(_T(" 输入参数错误:数据库中没有该种壁厚或者\n钢级(第%d项)!"),n+1);
AfxMessageBox(strError, MB_ICONERROR);
return;
}
pRecordset->MoveLast();
var = pRecordset->GetFieldValue(0);
TRACE("\n%ld\n",pRecordset->GetRecordCount());
switch (var.vt) {
case VT_R4:
Pj = var.fltVal;
break;
case VT_R8:
Pj = var.dblVal;
break;
}
pRecordset->Close();
Stt = Pj / T;
Stt = int(Stt * 1000) / 1000.0;
m_grid1[n][6].Format("%10.3f",Stt);
// end 增产抗拉安全系数计算
}
delete pRecordset;
Database.Close();
m_bModify = true;
}
void CTGData::NoAddCal()
{
CDaoDatabase Database;
CDaoRecordset* pRecordset;
CString strQuery;
CString strError;
COleVariant var;
try {
// nonexclusive, read-only
Database.Open(m_strDatabase, FALSE, TRUE);
}
catch (CDaoException* e) {
::DaoErrorMsg(e);
e->Delete();
return;
}
pRecordset = new CDaoRecordset(&Database);
double H, rc, rz, rt, dtw; \
bool fgq, zc; \
H = atof(m_strEdit[0]); /*套管下深*/ \
rc = atof(m_strEdit[1]); /*产层压力梯度*/ \
rz = atof(m_strEdit[2]); /*钻井液压力梯度*/ \
rt = atof(m_strEdit[3]); /*天然气相对密度*/ \
dtw = atof(m_strCombo1); /*套管外径*/ \
if(m_strCombo2.Compare(_T("0")) == 0) \
fgq = true; \
if(m_strCombo2.Compare(_T("1")) == 0) \
fgq = false; /*封隔器有无*/ \
if(m_strCombo3.Compare(_T("0")) == 0) \
zc = true; \
if(m_strCombo3.Compare(_T("1")) == 0) \
zc = false; /*有无增产措施*/ \
double d[8], l[8][2]; \
CString x[8]; \
for(int i = 0; i<8; i++) \
{ \
l[i][0] = atof(m_grid1[i][0]); \
l[i][1] = atof(m_grid1[i][1]); \
d[i] = atof(m_grid1[i][2]); \
x[i] = m_grid1[i][3]; \
} \
double q[100], QQ[100], qdanzhong, b, c, dd, e, f, g, k, Pcmax, Pcc, pi, Qe[100], Sii, Stt, Scc, Tb;
CString sj[100], sk[100], nn[100], ll[100][100], mm[100][100];
int z, n;
z = 8;
Pcmax = H * rz;
f = H * (1 - rz / 0.0785);
QQ[0] = 0;
Qe[0] = 0;
double Pb, Ps;
Pb = H * rc;
Ps = Pb / exp(rt * H * 11.15486 * 0.00001);
for(n=0; n<z; n++)
{
if(l[n][0] == 0)
break;
q[n] = 0;
/* Set mydb1 = OpenDatabase("D:\套管程序设计\数据.mdb")
Set mytable1 = mydb1.OpenRecordset("套管强度", dbOpenTable)
Do While Not mytable1.EOF
If mytable1!外径 = dtw And mytable1!壁厚 = d(n) Then
qdanzhong = mytable1!公称重量
End If
mytable1.MoveNext
Loop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -