ADO:知道字段的名字,怎样取得此字段的值类型。 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 _variant_t vtFld;try{ vtFld = _Recordset->Fields->GetItem(lpFieldName)->Value; switch(vtFld.vt) { case VT_R4: val = vtFld.fltVal; break; case VT_R8: val = vtFld.dblVal; break; case VT_DECIMAL:......这样做. 也可以这样:_variant_t varValue;varValue = _Recroset->GetCollect("字段名");varValue中就是你要取得字段中的值。 参考一下:最关键就是第一句 _RecordsetPtr ptrRS = m_pConnection->OpenSchema(adSchemaTables); if(!ptrRS->BOF) { CString sName, sNameShort, sSchema; int nPos = -1; HRESULT hr = S_OK; int nIndex = 0; hTreeRoot = m_Tree.InsertItem("Tables", 0, 0); while(!ptrRS->adoEOF) { sName = CrackStrVariant(ptrRS->GetCollect(L"TABLE_NAME")); if("MSys" == sName.Left(4) || "sys" == sName.Left(3) || "编码" == sName.Right(4) || "dt" == sName.Left(2) || "V" == sName.Left(1)) { ptrRS->MoveNext(); continue; } sNameShort = sName; nPos = sName.Find(';'); if(nPos != -1) sName = sName.Left(nPos); if(sName.Find(' ') != -1) // MS SQL Server scenario sName = "[" + sName + "]"; // Alternatively... sSchema = CrackStrVariant(ptrRS->Fields->GetItem(_variant_t((long)1))->Value); //sName += " (" + sSchema + ")"; HTREEITEM hTreeSPRoot = m_Tree.InsertItem(sName, 1, 1, hTreeRoot); hr = ptrRS->MoveNext(); if(FAILED(hr)) _com_issue_error(hr); } } ptrRS = NULL; } 简化一下_RecordsetPtr ptrRS = m_pConnection->OpenSchema(adSchemaTables);while(!ptrRS->adoEOF){ CString sName, sSchema; sName = CrackStrVariant(ptrRS->GetCollect(L"TABLE_NAME")); sSchema = CrackStrVariant(ptrRS->Fields->GetItem(_variant_t((long)1))->Value); hr = ptrRS->MoveNext();} 哪我想判断数据库中有没有我要的表,表名知道?怎么用ADO实现? j_s_p(大少) :在SQL在有系统表中有可以用try{Open()}cathc() CrackStrVariant()这个函数怎么找不到呢。 与Hash有关的函数 TrackMouseEvent判断鼠标进入出来的问题 ShellExecute调用的exe里获取当前路径,是使用ShellExecute的exe所在路径 请教一个问题 对话框问题 求IQualityControl具体用法实例 数据量比较大的情况下,ListView显示速度问题 求助:请问大家一个比较有难度的问题? 各位大侠有没有遇到过这样的情况? .net是什么? 结束线程后还要做些什么 --关于ATL的问题--在线给分!!快!
{
vtFld = _Recordset->Fields->GetItem(lpFieldName)->Value;
switch(vtFld.vt)
{
case VT_R4:
val = vtFld.fltVal;
break;
case VT_R8:
val = vtFld.dblVal;
break;
case VT_DECIMAL:......这样做.
_variant_t varValue;
varValue = _Recroset->GetCollect("字段名");
varValue中就是你要取得字段中的值。
最关键就是第一句
_RecordsetPtr ptrRS = m_pConnection->OpenSchema(adSchemaTables);
if(!ptrRS->BOF)
{
CString sName, sNameShort, sSchema;
int nPos = -1;
HRESULT hr = S_OK;
int nIndex = 0;
hTreeRoot = m_Tree.InsertItem("Tables", 0, 0); while(!ptrRS->adoEOF)
{
sName = CrackStrVariant(ptrRS->GetCollect(L"TABLE_NAME"));
if("MSys" == sName.Left(4) || "sys" == sName.Left(3) || "编码" == sName.Right(4) || "dt" == sName.Left(2) || "V" == sName.Left(1))
{
ptrRS->MoveNext();
continue;
} sNameShort = sName;
nPos = sName.Find(';');
if(nPos != -1)
sName = sName.Left(nPos);
if(sName.Find(' ') != -1) // MS SQL Server scenario
sName = "[" + sName + "]";
// Alternatively... sSchema = CrackStrVariant(ptrRS->Fields->GetItem(_variant_t((long)1))->Value); //sName += " (" + sSchema + ")"; HTREEITEM hTreeSPRoot = m_Tree.InsertItem(sName, 1, 1, hTreeRoot);
hr = ptrRS->MoveNext();
if(FAILED(hr))
_com_issue_error(hr);
}
}
ptrRS = NULL;
}
_RecordsetPtr ptrRS = m_pConnection->OpenSchema(adSchemaTables);
while(!ptrRS->adoEOF)
{
CString sName, sSchema;
sName = CrackStrVariant(ptrRS->GetCollect(L"TABLE_NAME"));
sSchema = CrackStrVariant(ptrRS->Fields->GetItem(_variant_t((long)1))->Value);
hr = ptrRS->MoveNext();
}
可以用try{
Open()
}cathc()