📄
字号:
spRst2->raw_MoveNext();
}
spRst2->Close();
}
//////////////////////////////////////////////////////////////////////////
strTmp.Format("select COLUMN_NAME,F.ALIASNAME ,T.GEOMETRYTYPE,SDE_TYPE,COLUMN_SIZE from column_registry C ,gdb_fieldinfo F ,gdb_featureclasses T\
where C.owner = '%s'AND C.TABLE_NAME = '%s' AND F.CLASSID = %ld AND F.FIELDNAME <>'shape' and F.FIELDNAME <>'OBJECTID' AND F.FIELDNAME <>'SHAPE' \
AND F.FIELDNAME = C.COLUMN_NAME AND T.OBJECTCLASSID = %ld",m_strUserName2.MakeUpper(),sNAME,nID,nID);
ADOHelper::ShellExecuteSqlEx(m_spConn,(LPCTSTR)strTmp,spRst2);
if ( !ADOHelper::RstEmpty(spRst2) )
{
long geometrytype = ADOHelper::GetAdoLongValue(spRst2,_T("GEOMETRYTYPE"));
if ( geometrytype <=2 )
{
xml.AddAttrib("TYPE",_T("点"));
}
else if ( geometrytype==3 )
{
xml.AddAttrib("TYPE",_T("线"));
}
else if ( geometrytype == 4 )
{
xml.AddAttrib("TYPE",_T("面"));
}
else
{
xml.AddAttrib("TYPE",_T("multipatch"));
}
xml.AddAttrib("RANK",_T(""));
xml.IntoElem();
while (spRst2->adoEOF==VARIANT_FALSE)
{
xml.AddElem("FIELD");
strFieldName = (LPCTSTR)ADOHelper::GetAdoStrValue(spRst2,_T("COLUMN_NAME"));
xml.AddAttrib("NAME",(LPCTSTR)strFieldName );
xml.AddAttrib("ALIASNAME",(LPCTSTR)ADOHelper::GetAdoStrValue(spRst2,_T("ALIASNAME")) );
nID = ADOHelper::GetAdoLongValue(spRst2,_T("SDE_TYPE"));
switch(nID)
{
case 1:
case 2:
strDataType = _T("整型");
break;
case 3:
case 4:
strDataType = _T("双精度浮点型");
break;
case 5:
case 14:
strDataType = _T("字符型");
strDataLen.Format("%ld",ADOHelper::GetAdoLongValue(spRst2,_T("COLUMN_SIZE")));
break;
case 6:
strDataType = _T("二进制");
break;
case 7:
strDataType = _T("日期型");
break;
default:
assert(0);
strDataType.Format("%ld",nID);
break;
}
xml.AddAttrib("TYPE", (LPCTSTR)strDataType);
xml.AddAttrib("LENGTH",(LPCTSTR)strDataLen ); strDataLen.Empty();
xml.AddAttrib("ISERRFLAG", _T("0"));
Iter = m_PrimeKeyMap.find(strFieldName) ;
if ( Iter != m_PrimeKeyMap.end() && Iter->second.Compare(_T("N"))==0 )
{
xml.AddAttrib("ISNULL", _T("-1"));
}
else
{
xml.AddAttrib("ISNULL", _T("0"));
}
xml.AddAttrib("ISPKEY", _T("0"));
spRst2->raw_MoveNext();
}
xml.OutOfElem();
}
spRst->raw_MoveNext();
}
if ( xml.Save(szXML) )
{
MessageBox(_T("保存成功!"),_T("系统信息"),MB_ICONINFORMATION);
}
else
{
MessageBox(_T("保存失败!"),_T("系统信息"),MB_ICONINFORMATION);
}
return TRUE;
}
void C导出建库脚本Dlg::GetPrimeKey()
{
NULL_RETURN(m_spConn);
CString strTmp = _T(""),sTableName = _T(""),sKey = _T("");
strTmp.Format("SELECT TABLE_NAME , COLUMN_NAME FROM USER_CONS_COLUMNS WHERE constraint_name IN (SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE constraint_type = 'P' AND OWNER = '%s' )",
m_strUserName);
ADODB::_RecordsetPtr spRst = NULL;
ADOHelper::ShellExecuteSqlEx(m_spConn,(LPCTSTR)strTmp,spRst);
RETURN( ADOHelper::RstEmpty(spRst) );
while (spRst->adoEOF==VARIANT_FALSE)
{
sTableName = (LPCTSTR)ADOHelper::GetAdoStrValue(spRst,_T("TABLE_NAME"));
sKey = (LPCTSTR)ADOHelper::GetAdoStrValue(spRst,_T("COLUMN_NAME"));
m_PrimeKeyMap.insert(std::make_pair(sTableName,sKey));
spRst->raw_MoveNext();
}
}
BOOL C导出建库脚本Dlg::OutPutADODBXML(LPCTSTR szXML)
{
CString strTmp = _T("");
strTmp.Format("SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = '%s'",m_strUserName.MakeUpper());
ADODB::_RecordsetPtr spRst = NULL;
ADOHelper::ShellExecuteSqlEx(m_spConn,(LPCTSTR)strTmp,spRst);
if ( ADOHelper::RstEmpty(spRst) ) { return FALSE; }
GetPrimeKey();
CMarkup xml;
xml.SetDoc(_T("<?xml version=\"1.0\" encoding=\"gb2312\"?>\r\n"));
xml.AddElem("DBPZROOT");
xml.AddAttrib("NAME",_T("标准配置"));
xml.IntoElem();
xml.AddElem("DBPZITEM");
xml.AddAttrib("NAME",_T("弘图地籍数据库标准"));
xml.AddAttrib("USED",_T("1"));
xml.IntoElem();
long nDataLen = 0;
CString strTableName = _T(""),strFieldName = _T(""),strDataType = _T(""),strDataLen = _T(""), strEmpty = _T(""),strKey = _T("");
while ( spRst->adoEOF==VARIANT_FALSE )
{
//<TABLE NAME="统计报表_台帐表" TABLENAME="TJBB_TZ" ALIASNAME="统计报表_台帐表" TABLECODE="TJBB_TZ" TYPE="点" RANK="6">
xml.AddElem("TABLE");
strTableName = (LPCTSTR)ADOHelper::GetAdoStrValue(spRst,_T("TABLE_NAME"));
xml.AddAttrib("NAME",(LPCTSTR)strTableName);
xml.AddAttrib("TABLENAME",(LPCTSTR)strTableName);
xml.AddAttrib("ALIASNAME",(LPCTSTR)strTableName);
xml.AddAttrib("TABLECODE",(LPCTSTR)strTableName);
xml.AddAttrib("TYPE",_T("属性表"));
xml.AddAttrib("RANK",_T(""));
xml.IntoElem();
strTmp.Format("SELECT COLUMN_NAME ,DATA_TYPE,DATA_LENGTH,DATA_PRECISION,CHAR_LENGTH,NULLABLE FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '%s' ORDER BY COLUMN_ID",strTableName);
ADODB::_RecordsetPtr spRst2 = NULL;
ADOHelper::ShellExecuteSqlEx(m_spConn,(LPCTSTR)strTmp,spRst2);
Iter = m_PrimeKeyMap.find(strTableName) ;
if ( Iter != m_PrimeKeyMap.end() )
{
strKey = Iter->second;
}
else
{
strKey.Empty();
}
if ( ! ADOHelper::RstEmpty(spRst2) )
{
while (spRst2->adoEOF == VARIANT_FALSE)
{
//<FIELD NAME="QSDWDM2" ALIASNAME="权属单位代码2" TYPE="字符型" LENGTH="19" ISYSDM="-1" ISERRFLAG="0" ISNULL="-1" ISPKEY="0"/>
xml.AddElem("FIELD");
strFieldName = (LPCTSTR)ADOHelper::GetAdoStrValue(spRst2,_T("COLUMN_NAME")) ;
xml.AddAttrib("NAME",(LPCTSTR)strFieldName );
xml.AddAttrib("ALIASNAME",(LPCTSTR)strFieldName );
strDataType = (LPCTSTR)ADOHelper::GetAdoStrValue(spRst2,_T("DATA_TYPE")) ;
strDataType = strDataType.MakeUpper();
if ( strDataType.Find("CHAR") != -1)
{
strDataType = _T("字符型");
nDataLen = ADOHelper::GetAdoLongValue(spRst2,_T("CHAR_LENGTH"));
strDataLen.Format(_T("%ld"),nDataLen);
}
else if ( strDataType.Find("INTEGER") != -1 || strDataType.Find("LONG") != -1)
{
strDataType = _T("整型");
}
else if ( strDataType.Find("DATE") != -1)
{
strDataType = _T("日期型");
}
else if ( strDataType.Find("FLOAT") != -1 )
{
strDataType = _T("双精度浮点型");
}
else if ( strDataType.CompareNoCase("NUMBER") == 0 )
{
nDataLen = ADOHelper::GetAdoLongValue(spRst2,_T("DATA_PRECISION"));
if ( nDataLen >0 ) //38, 8
{
strDataType = _T("双精度浮点型");
}
else
{
strDataType = _T("整型");
}
}
else if ( strDataType.Find("BLOB") != -1)
{
strDataType = _T("二进制");
}
else
{
assert(0);
}
xml.AddAttrib("TYPE", (LPCTSTR)strDataType);
xml.AddAttrib("LENGTH",(LPCTSTR)strDataLen ); strDataLen.Empty();
strEmpty = (LPCTSTR)ADOHelper::GetAdoStrValue(spRst2,_T("NULLABLE"));
if ( strEmpty.CompareNoCase(_T("N"))==0)
{
xml.AddAttrib("NULLABLE",_T("-1"));
}
else
{
xml.AddAttrib("NULLABLE",_T("0"));
}
xml.AddAttrib("ISYSDM",_T("-1"));
xml.AddAttrib("ISERRFLAG",_T("-1"));
if ( 0 == strKey.Compare(strFieldName) )
{
xml.AddAttrib("ISPKEY",_T("-1"));
}
else
{
xml.AddAttrib("ISPKEY",_T("0"));
}
spRst2->raw_MoveNext();
}
}
xml.OutOfElem();
spRst->raw_MoveNext();
}
if ( xml.Save(szXML) )
{
MessageBox(_T("保存成功!"),_T("系统信息"),MB_ICONINFORMATION);
}
else
{
MessageBox(_T("保存失败!"),_T("系统信息"),MB_ICONINFORMATION);
}
return TRUE;
}
void C导出建库脚本Dlg::OnBnClickedCancel()
{
OnCancel();
}
void C导出建库脚本Dlg::OnBnClickedRadio3()
{
SetDlgItemText(IDC_STATIC1,_T("用户名:"));
SetDlgItemText(IDC_STATIC2,_T("密码:"));
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT7)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE);
}
void C导出建库脚本Dlg::OnBnClickedRadio4()
{
SetDlgItemText(IDC_STATIC1,_T("SDE用户:"));
SetDlgItemText(IDC_STATIC2,_T("SDE密码:"));
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT6)->ShowWindow(SW_NORMAL);
GetDlgItem(IDC_EDIT7)->ShowWindow(SW_NORMAL);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_NORMAL);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_NORMAL);
GetDlgItem(IDC_STATIC5)->ShowWindow(SW_NORMAL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -