[ADO] MDB テーブル一覧

  呼び出し



  
<HTML>
<BODY BGCOLOR=silver>
<SCRIPT language=VbScript>

	Call top.moveTo( 0, 0 )
	Call top.resizeTo( screen.width, screen.height - 32 )
	Call window.focus()

	Dim Obj

	Set Obj = CreateObject( "Lbox.Ado" )

' ****************************************************
' 
' ****************************************************
ret = Obj.GetMdbTables( "C:\temp\sample.mdb" )
if IsArray( ret ) then
	For I = 0 to Ubound( ret )
		document.write ret( I ) & "<br>"
	Next
else
	document.write ret & "<br>"
end if

' ****************************************************
' 
' ****************************************************
Set Obj = Nothing

</SCRIPT>
</BODY>
</HTML>
  



  ソース



  
' ****************************************************
// MDB テーブル一覧
' ****************************************************
STDMETHODIMP CAdo::GetMdbTables(BSTR Target, VARIANT *pvaVariant)
{
	VariantClear( pvaVariant );
	V_VT(pvaVariant) = VT_BSTR;

	if(FAILED(::CoInitialize(NULL))) {
		V_BSTR(pvaVariant) = A2BSTR( "COM ライブラリの初期化に失敗しました" );
		return S_OK;
	}

	_ConnectionPtr	pConnection	= NULL;
	_RecordsetPtr	pRstSchema	= NULL;

	LONG nCnt;

	_bstr_t strCnn("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
	_bstr_t strTarget(Target, false);
	_bstr_t strEnd(";");
	_bstr_t strSep(",");

	strCnn += strTarget;
	strCnn += strEnd;

	try {

		TESTHR(pConnection.CreateInstance(__uuidof(Connection)));

		pConnection->Open( strCnn, "", "", adConnectUnspecified );
		pRstSchema = pConnection->OpenSchema( adSchemaTables );

		nCnt = 0;
		while( !(pRstSchema->EndOfFile) ) {
			nCnt++;
			pRstSchema->MoveNext();
		}

		pRstSchema->MoveFirst();

		BOOL ret;
		SAFEARRAY *psa;
		LPVARIANT rgElems;

		ret = CreateSafearray( &pvaVariant, &psa, &rgElems, nCnt );

		nCnt = 0;
		while( !(pRstSchema->EndOfFile) ) {

			_bstr_t table_name = pRstSchema->Fields->GetItem("TABLE_NAME")->Value;
			_bstr_t table_type = pRstSchema->Fields->GetItem("TABLE_TYPE")->Value;
			table_name += strSep;
			table_name += table_type;

			SetSafeArrayData( &rgElems, (LPTSTR)table_name, nCnt );
			nCnt++;

			pRstSchema->MoveNext();
		}

		pRstSchema->Close();
		pConnection->Close();

		// Safe Array を解放
		SafeArrayUnaccessData(psa);

		// 戻り値へセット
		V_ARRAY(pvaVariant) = psa;

	}
	catch (_com_error &e)
	{
		V_BSTR(pvaVariant) = A2BSTR( e.ErrorMessage() );
	}
    
	::CoUninitialize();

	return S_OK;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ