Browse Source

使用ado实现数据查询功能。

JeffWang 3 years ago
parent
commit
1ee71c356b

+ 430 - 0
Source/OGCAssistTool/OGCAssistTool/MESdb.cpp

@@ -0,0 +1,430 @@
+#include "StdAfx.h"
+#include "MESdb.h"
+
+CMESdb::CMESdb(void)
+{
+}
+
+CMESdb::~CMESdb()
+{
+	if (m_pConnection != NULL) m_pConnection->Close(), m_pConnection.Release(), m_pConnection = NULL;
+
+	::CoUninitialize();
+}
+
+TString CMESdb::ToString(_variant_t var)
+{
+	CString strValue;
+	switch (var.vt)
+	{
+	case VT_BSTR: //字符串
+	case VT_LPSTR:
+	case VT_LPWSTR:
+		strValue = (LPCTSTR)(_bstr_t)var;
+		break;
+	case VT_I1:   //无符号字符
+	case VT_UI1:
+		strValue.Format(_T("%d"), var.bVal);
+		break;
+	case VT_I2:   //短整型
+		strValue.Format(_T("%d"), var.iVal);
+		break;
+	case VT_UI2:   //无符号短整型
+		strValue.Format(_T("%u"), var.uiVal);
+		break;
+	case VT_INT: //整型
+		strValue.Format(_T("%d"), var.intVal);
+		break;
+	case VT_I4:   //整型
+	case VT_I8:   //长整型
+		strValue.Format(_T("%d"), var.lVal);
+		break;
+	case VT_UINT:   //无符号整型
+		strValue.Format(_T("%d"), var.uintVal);
+		break;
+	case VT_UI4:    //无符号整型
+	case VT_UI8:    //无符号长整型
+		strValue.Format(_T("%d"), var.ulVal);
+		break;
+	case VT_VOID:
+		strValue.Format(_T("%08x"), var.byref);
+		break;
+	case VT_R4:   //浮点型
+		strValue.Format(_T("%f"), var.fltVal);
+		break;
+	case VT_R8:   //双精度型
+		strValue.Format(_T("%f"), var.dblVal);
+		break;
+	case VT_DECIMAL: //小数
+		strValue.Format(_T("%f"), (double)var);
+		break;
+	case VT_CY:
+		{
+			COleCurrency cy = var.cyVal;
+			strValue = cy.Format();
+		}
+		break;
+	case VT_BLOB:
+	case VT_BLOB_OBJECT:
+	case 0x2011:
+		strValue = _T("[BLOB]");
+		break;
+	case VT_BOOL:   //布尔型  
+		strValue = var.boolVal ? _T("TRUE") : _T("FALSE");
+		break;
+	case VT_DATE: //日期型
+		{
+			DATE dt = var.date;
+			COleDateTime da = COleDateTime(dt);
+			strValue = da.Format(_T("%Y-%m-%d %H:%M:%S"));
+		}
+		break;
+	case VT_NULL://NULL值
+	case VT_EMPTY:   //空
+		strValue = _T("");
+		break;
+	case VT_UNKNOWN:   //未知类型
+	default:
+		strValue = _T("VT_UNKNOW");
+		break;
+	}
+
+	return TString(strValue);
+}
+
+bool CMESdb::InitAdo()
+{
+	if (m_pConnection == NULL)
+	{
+		try
+		{
+			TCHAR szConnectString[MAX_PATH] = {0};
+			_stprintf_s(szConnectString,
+					_T("Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; "),
+					_T("10.126.64.131"),			// IP地址或服务名称;
+					_T("MESOtherData"),
+					_T("XMUpdate"),
+					_T("695Xm@123#"));
+
+			m_pConnection.CreateInstance(__uuidof(Connection));
+			m_pConnection->PutConnectionTimeout(60);
+			HRESULT hr = m_pConnection->Open(_bstr_t(szConnectString), "", "", adModeUnknown);
+
+			return SUCCEEDED(hr);
+		}
+		catch (_com_error &e)
+		{
+			_bstr_t bstrSource(e.Source());
+			_bstr_t bstrDescription(e.Description());
+		}
+	}
+
+	return false;
+}
+
+bool CMESdb::InitAdo2()
+{
+	if (m_pConnection2 == NULL)
+	{
+		try
+		{
+			TCHAR szConnectString[MAX_PATH] = {0};
+			_stprintf_s(szConnectString,
+				_T("Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; "),
+				_T("10.126.64.131"),
+				_T("MESBaseDB"),
+				_T("XMUpdate"),
+				_T("695Xm@123#"));
+
+			m_pConnection2.CreateInstance(__uuidof(Connection));
+			m_pConnection2->PutConnectionTimeout(60);
+			HRESULT hr = m_pConnection2->Open(_bstr_t(szConnectString), "", "", adModeUnknown);
+
+			return SUCCEEDED(hr);
+		}
+		catch (_com_error &e)
+		{
+			_bstr_t bstrSource(e.Source());
+			_bstr_t bstrDescription(e.Description());
+		}
+	}
+
+	return false;
+}
+
+bool CMESdb::InitAdo3()
+{
+	if (m_pConnection3 == NULL)
+	{
+		try
+		{
+			TCHAR szConnectString[MAX_PATH] = {0};
+			_stprintf_s(szConnectString,
+				_T("Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; "),
+				_T("10.126.64.131"),
+				_T("MESOtherData"),
+				_T("it_oper"),
+				_T("IT@SMES2018"));
+
+			m_pConnection3.CreateInstance(__uuidof(Connection));
+			m_pConnection3->PutConnectionTimeout(60);
+			HRESULT hr = m_pConnection3->Open(_bstr_t(szConnectString), "", "", adModeUnknown);
+
+			return SUCCEEDED(hr);
+		}
+		catch (_com_error &e)
+		{
+			_bstr_t bstrSource(e.Source());
+			_bstr_t bstrDescription(e.Description());
+		}
+	}
+
+	return false;
+}
+
+bool CMESdb::Query(TString strSQL, std::map<TString, TString> &data)
+{
+	try
+	{
+		CString strSql;
+		_RecordsetPtr rsData;
+		// 创建实例;
+		rsData.CreateInstance(__uuidof(Recordset));
+		// 打开实例;
+		HRESULT hr = rsData->Open(_variant_t(strSQL.c_str()), _variant_t((IDispatch*)m_pCurrConnection, true), adOpenDynamic, adLockReadOnly, adCmdText);
+
+		if (SUCCEEDED(hr))
+		{
+			Field *   field = NULL;	
+			Fields *  fields = NULL;
+			long      ColCount = 0;
+			BSTR      bstrColName;
+
+			hr = rsData->get_Fields(&fields);	//得到记录集的字段集和
+			if(SUCCEEDED(hr))
+				fields->get_Count(&ColCount);
+
+			while (rsData->EndOfFile == VARIANT_FALSE)
+			{
+#if 0
+				DWORD dwCount = rsData->GetFields()->Count;
+				for ( DWORD i = 0; i < dwCount; i++ )
+				{
+					FieldPtr fp = rsData->GetFields();
+					fields = rsData->Fields;
+					TString strName = (LPCTSTR)rsData->Fields->Item[i]->GetName();
+
+					TString strName1 = (LPCTSTR)rsData->GetFields()->GetItem(i)->GetName();
+
+					_variant_t var = rsData->GetCollect(strName.c_str());
+
+					data.insert(std::make_pair<TString,TString>(strName, ToString(var)));
+				}
+#else
+				for(long i=0; i<ColCount; i++)			
+				{			
+					fields->Item[i]->get_Name(&bstrColName);	//得到记录集//中的字段名
+					_variant_t var = rsData->GetCollect(bstrColName);
+					data.insert(std::make_pair<TString,TString>(bstrColName, ToString(var)));
+				}
+#endif
+				rsData->MoveNext();
+			}
+
+			if(SUCCEEDED(hr))
+				fields->Release();//释放指针
+
+			rsData->Close();
+			return true;
+		}
+	}
+	catch (_com_error &e)
+	{
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		//WriteTextLog(_T("%s,%d =>%08lx,%s,%s,%s"), __FUNCTIONW__, __LINE__, e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
+	}
+
+	return false;
+}
+
+bool CMESdb::GetProcessCode(TString &data, TString strProcessName/* =_T */)
+{
+	try
+	{
+		CString strSql;
+		_RecordsetPtr rsData;
+		rsData.CreateInstance(__uuidof(Recordset));
+		strSql.Format(_T("select Process_Code from Process_List where Process_Name='%s'"), strProcessName.c_str());
+		HRESULT hr = rsData->Open(_variant_t(strSql), _variant_t((IDispatch*)m_pConnection, true), adOpenDynamic, adLockPessimistic, adCmdText);
+
+		if (SUCCEEDED(hr))
+		{
+			if (rsData->EndOfFile == VARIANT_FALSE)
+			{
+				data = rsData->GetCollect(_T("Process_Code")).bstrVal;
+			}
+
+			rsData->Close();
+		}
+
+		return true;
+	}
+	catch (_com_error &e)
+	{
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		//WriteTextLog(_T("%s,%d =>%08lx,%s,%s,%s"), __FUNCTIONW__, __LINE__, e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
+	}
+
+	return false;
+}
+
+bool CMESdb::GetCompanyCode(TString &data, TString strCompanyName)
+{
+	try
+	{
+		CString strSql;
+		_RecordsetPtr rsData;
+		rsData.CreateInstance(__uuidof(Recordset));
+		strSql.Format(_T("select CompanyCode from T_Company where CompanyName='%s'"), strCompanyName.c_str());
+		HRESULT hr = rsData->Open(_variant_t(strSql), _variant_t((IDispatch*)m_pConnection2, true), adOpenDynamic, adLockPessimistic, adCmdText);
+
+		if (SUCCEEDED(hr))
+		{
+			if (rsData->EndOfFile == VARIANT_FALSE)
+			{
+				data = rsData->GetCollect(_T("CompanyCode")).bstrVal;
+			}
+
+			rsData->Close();
+		}
+
+		return true;
+	}
+	catch (_com_error &e)
+	{
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		//WriteTextLog(_T("%s,%d =>%08lx,%s,%s,%s"), __FUNCTIONW__, __LINE__, e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
+	}
+
+	return false;
+}
+
+
+bool CMESdb::IsExitTVSN(TString TVSN)
+{
+	try
+	{
+		CString strSql;
+		_RecordsetPtr rsData;
+		rsData.CreateInstance(__uuidof(Recordset));
+		strSql.Format(_T("select count(1) as val from tvinfo where tvsn='%s'"), TVSN.c_str());
+		HRESULT hr = rsData->Open(_variant_t(strSql), _variant_t((IDispatch*)m_pConnection3, true), adOpenDynamic, adLockPessimistic, adCmdText);
+
+		_variant_t data;
+		if (SUCCEEDED(hr))
+		{			
+			if (rsData->EndOfFile == VARIANT_FALSE)
+			{
+				data = rsData->GetCollect(_T("val"));
+			}
+
+			rsData->Close();
+		}
+
+		return data.lVal > 0 ? true : false;
+	}
+	catch (_com_error &e)
+	{
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		//WriteTextLog(_T("%s,%d =>%08lx,%s,%s,%s"), __FUNCTIONW__, __LINE__, e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
+	}
+
+	return false;
+}
+
+bool CMESdb::GetNextProcessCode(TString TVSN, TString &data)
+{
+	try
+	{
+		CString strSql;
+		_RecordsetPtr rsData;
+		rsData.CreateInstance(__uuidof(Recordset));
+		strSql.Format(_T("select dbo.GetNextProcessCode('%s')"), TVSN.c_str());
+		HRESULT hr = rsData->Open(_variant_t(strSql), _variant_t((IDispatch*)m_pConnection3, true), adOpenDynamic, adLockPessimistic, adCmdText);
+
+		if (SUCCEEDED(hr))
+		{			
+			if (rsData->EndOfFile == VARIANT_FALSE)
+			{
+				data = rsData->GetCollect(_T("")).bstrVal;
+			}
+
+			rsData->Close();
+		}
+
+		return data.size() > 0 ? true : false;
+	}
+	catch (_com_error &e)
+	{
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		//WriteTextLog(_T("%s,%d =>%08lx,%s,%s,%s"), __FUNCTIONW__, __LINE__, e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
+	}
+
+	return false;
+}
+
+bool CMESdb::Scan(TString TVSN, TString LineCode, TString PcProcessCode, TString Host, TString IP, TString User, TString UserName, TString PartStrs, TString &ErroMsg)
+{
+	try
+	{
+		_CommandPtr cmd;
+		cmd.CreateInstance(__uuidof(Command));
+		cmd->CommandType = adCmdStoredProc;			// 类型为存储过程; 
+		cmd->ActiveConnection = m_pConnection3;		// 设置连接;
+		cmd->CommandText = _T("ProcessScan2");		// 存储过程名称;
+		// 创建并添加参数;
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_tvsn"), adVarChar, adParamInput, 50, _variant_t(TVSN.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_line"), adVarChar, adParamInput, 10, _variant_t(LineCode.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_pcprocesscode"), adVarChar, adParamInput, 10, _variant_t(PcProcessCode.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_host"), adVarChar, adParamInput, 20, _variant_t(Host.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_ip"), adVarChar, adParamInput, 20, _variant_t(IP.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_user"), adVarChar, adParamInput, 20, _variant_t(User.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_username"), adVarChar, adParamInput, 20, _variant_t(UserName.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_partstrs"), adVarChar, adParamInput, 500, _variant_t(PartStrs.c_str())));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_result"), adVarChar, adParamOutput, 10));
+		cmd->Parameters->Append(cmd->CreateParameter(_T("p_erro"), adVarChar, adParamOutput, 500));
+
+		cmd->Execute(NULL, NULL, NULL);
+		TString strResult = cmd->Parameters->GetItem(_T("p_result"))->GetValue().bstrVal;
+		ErroMsg = cmd->Parameters->GetItem(_T("p_erro"))->GetValue().bstrVal;
+		cmd.Detach();
+		//cmd->Release();
+
+		if ( _tcsicmp(strResult.c_str(), _T("false")) != 0 )
+			return true;
+	}
+	catch (_com_error &e)
+	{
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		//WriteTextLog(_T("%s,%d =>%08lx,%s,%s,%s"), __FUNCTIONW__, __LINE__, e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
+	}
+
+	return false;
+}
+
+bool CMESdb::UploadTestData(TString strSN, TString strResult, TString strDateTime)
+{
+	return false;
+}
+
+bool CMESdb::GetDeltaEInfo(TString strBatch, TString &strDeltaEType, TString &strDeltaValue)
+{
+
+	return false;
+}

+ 90 - 0
Source/OGCAssistTool/OGCAssistTool/MESdb.h

@@ -0,0 +1,90 @@
+#pragma once
+
+#include "CritSection.h"
+// 使用本地的ado;
+#import "..\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile") 
+
+class CMESdb
+{
+	CMESdb(void);
+public:
+	static CMESdb* GetInstance()
+	{
+		static ThreadSection _mutex;
+		static CMESdb *pInstatnce = NULL;		
+		_mutex.Lock();
+		if (!pInstatnce)
+		{
+			if (NULL == pInstatnce)
+			{
+				static CMESdb obj;
+				pInstatnce = &obj;
+				::CoInitialize(NULL);
+				pInstatnce->InitAdo();
+				pInstatnce->InitAdo2();
+				pInstatnce->InitAdo3();
+			}
+		}
+		_mutex.Unlock();
+
+		return pInstatnce;
+	}
+
+	~CMESdb();
+
+	static TString ToString(_variant_t var);
+
+private:
+	ThreadSection m_ts;
+	_ConnectionPtr m_pConnection;
+	_ConnectionPtr m_pConnection2;
+	_ConnectionPtr m_pConnection3;
+	_ConnectionPtr m_pCurrConnection;
+	_RecordsetPtr m_pRecordset;
+
+public:
+	bool InitAdo();
+	bool InitAdo2();
+	bool InitAdo3();
+	void SetConnection(int nIndex=0){
+		switch (nIndex)
+		{
+		case 0:
+			m_pCurrConnection = m_pConnection;
+			break;
+		case 1:
+			m_pCurrConnection = m_pConnection2;
+			break;
+		case 2:
+			m_pCurrConnection = m_pConnection3;
+			break;
+		default:
+			break;
+		}
+	}
+	bool Query(TString strSQL, std::map<TString, TString> &data);
+
+	// 获取产线代码;
+	bool GetProcessCode(TString &data, TString strProcessName=_T("白平衡调试"));
+	// 获取工站代码;
+	bool GetCompanyCode(TString &data, TString strCompanyName);
+	//检查TVSN是否上线
+	bool IsExitTVSN(TString TVSN);
+	//检查TVSN当时的工产节点
+	bool GetNextProcessCode(TString TVSN, TString &data);
+	//扫描当前的工站(过站扫描)
+	bool Scan(
+		TString TVSN,
+		TString LineCode,             //产线代码
+		TString PcProcessCode,		//工站代码,36为白平衡工站节点
+		TString Host,                    //测试电脑主机名称
+		TString IP,                        //测试电脑IP地址
+		TString User,                    //输入PE
+		TString UserName,           //输入PE
+		TString PartStrs,               //输入为空
+		TString &ErroMsg);       //返回错误描述
+	// 上传测试数据;
+	bool UploadTestData(TString strSN, TString strResult, TString strDateTime);
+	// 获取DeltaE数据;
+	bool GetDeltaEInfo(TString strBatch, TString &strDeltaEType, TString &strDeltaValue);
+};

+ 21 - 1
Source/OGCAssistTool/OGCAssistTool/OGCAssistTool.cpp

@@ -6,6 +6,9 @@
 #include "OGCAssistTool.h"
 #include "OGCAssistToolDlg.h"
 #include "DlgLogin.h"
+#ifdef _DEBUG
+#include "MESdb.h"
+#endif
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -86,11 +89,28 @@ END_MESSAGE_MAP()
 
 
 // COGCAssistToolApp 构造
-
 COGCAssistToolApp::COGCAssistToolApp()
 {
 	// TODO: 在此处添加构造代码,
 	// 将所有重要的初始化放置在 InitInstance 中
+#ifdef _DEBUG
+	if ( CMESdb::GetInstance() )
+	{
+		std::map<TString, TString> data1;
+		CMESdb::GetInstance()->SetConnection(2);
+		CMESdb::GetInstance()->Query(_T("select count(1) from tvinfo where tvsn='(01)01003004300020(17)190730(21)S00001'"), data1);
+
+		TString data;
+		CMESdb::GetInstance()->GetProcessCode(data);
+		CMESdb::GetInstance()->GetCompanyCode(data, _T("T304"));
+		if ( CMESdb::GetInstance()->IsExitTVSN(_T("(01)01003004300020(17)190730(21)S00001")) )
+		{
+			int a = 0;
+			CMESdb::GetInstance()->GetNextProcessCode(_T("(01)01003004300020(17)190730(21)S00001"), data);
+			CMESdb::GetInstance()->Scan(_T("TEST-S00001"), _T("T306"), _T("36"), _T("Moka"), _T("192.168.1.1"), _T("PE"), _T("PE"), _T(""), data);
+		}
+	}
+#endif
 }
 
 

+ 18 - 3
Source/OGCAssistTool/OGCAssistTool/OGCAssistTool.vcproj

@@ -23,6 +23,7 @@
 			ConfigurationType="1"
 			UseOfMFC="2"
 			CharacterSet="1"
+			ManagedExtensions="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -47,12 +48,12 @@
 				Optimization="0"
 				AdditionalIncludeDirectories="..\include"
 				PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;CURL_STATICLIB;__LIST_DRAW__"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
+				MinimalRebuild="false"
+				BasicRuntimeChecks="0"
 				RuntimeLibrary="3"
 				UsePrecompiledHeader="2"
 				WarningLevel="3"
-				DebugInformationFormat="4"
+				DebugInformationFormat="3"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -72,6 +73,7 @@
 				LinkIncremental="2"
 				AdditionalLibraryDirectories="..\lib"
 				GenerateDebugInformation="true"
+				AssemblyDebug="1"
 				SubSystem="2"
 				TargetMachine="1"
 			/>
@@ -104,6 +106,7 @@
 			ConfigurationType="1"
 			UseOfMFC="2"
 			CharacterSet="1"
+			ManagedExtensions="0"
 			WholeProgramOptimization="1"
 			>
 			<Tool
@@ -514,6 +517,18 @@
 				>
 			</File>
 		</Filter>
+		<Filter
+			Name="db"
+			>
+			<File
+				RelativePath=".\MESdb.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\MESdb.h"
+				>
+			</File>
+		</Filter>
 		<File
 			RelativePath=".\ReadMe.txt"
 			>

+ 11 - 0
Source/OGCAssistTool/OGCAssistTool/stdafx.h

@@ -44,6 +44,17 @@
 #include "des.h"
 extern void dprintf(TCHAR* pszStr, ...);
 
+#if _MSC_VER > 1500
+//#pragma comment(lib, "legacy_stdio_definitions.lib")
+#endif
+#include <string>
+#include <map>
+
+#ifdef UNICODE
+typedef std::wstring TString;
+#else
+typedef std::string TString;
+#endif
 
 #ifdef _UNICODE
 #if defined _M_IX86

+ 523 - 0
Source/OGCAssistTool/ado/adojavas.inc

@@ -0,0 +1,523 @@
+<%
+///********************************************************
+//*                                                       *
+//*   Copyright (C) Microsoft. All rights reserved.       *
+//*                                                       *
+//********************************************************/
+//
+//--------------------------------------------------------------------
+// Microsoft ADO
+//
+// ADO constants include file for JavaScript
+//
+//--------------------------------------------------------------------
+
+//---- CursorTypeEnum Values ----
+var adOpenForwardOnly = 0;
+var adOpenKeyset = 1;
+var adOpenDynamic = 2;
+var adOpenStatic = 3;
+
+//---- CursorOptionEnum Values ----
+var adHoldRecords = 0x00000100;
+var adMovePrevious = 0x00000200;
+var adAddNew = 0x01000400;
+var adDelete = 0x01000800;
+var adUpdate = 0x01008000;
+var adBookmark = 0x00002000;
+var adApproxPosition = 0x00004000;
+var adUpdateBatch = 0x00010000;
+var adResync = 0x00020000;
+var adNotify = 0x00040000;
+var adFind = 0x00080000;
+var adSeek = 0x00400000;
+var adIndex = 0x00800000;
+
+//---- LockTypeEnum Values ----
+var adLockReadOnly = 1;
+var adLockPessimistic = 2;
+var adLockOptimistic = 3;
+var adLockBatchOptimistic = 4;
+
+//---- ExecuteOptionEnum Values ----
+var adAsyncExecute = 0x00000010;
+var adAsyncFetch = 0x00000020;
+var adAsyncFetchNonBlocking = 0x00000040;
+var adExecuteNoRecords = 0x00000080;
+var adExecuteStream = 0x00000400;
+
+//---- ConnectOptionEnum Values ----
+var adAsyncConnect = 0x00000010;
+
+//---- ObjectStateEnum Values ----
+var adStateClosed = 0x00000000;
+var adStateOpen = 0x00000001;
+var adStateConnecting = 0x00000002;
+var adStateExecuting = 0x00000004;
+var adStateFetching = 0x00000008;
+
+//---- CursorLocationEnum Values ----
+var adUseServer = 2;
+var adUseClient = 3;
+
+//---- DataTypeEnum Values ----
+var adEmpty = 0;
+var adTinyInt = 16;
+var adSmallInt = 2;
+var adInteger = 3;
+var adBigInt = 20;
+var adUnsignedTinyInt = 17;
+var adUnsignedSmallInt = 18;
+var adUnsignedInt = 19;
+var adUnsignedBigInt = 21;
+var adSingle = 4;
+var adDouble = 5;
+var adCurrency = 6;
+var adDecimal = 14;
+var adNumeric = 131;
+var adBoolean = 11;
+var adError = 10;
+var adUserDefined = 132;
+var adVariant = 12;
+var adIDispatch = 9;
+var adIUnknown = 13;
+var adGUID = 72;
+var adDate = 7;
+var adDBDate = 133;
+var adDBTime = 134;
+var adDBTimeStamp = 135;
+var adBSTR = 8;
+var adChar = 129;
+var adVarChar = 200;
+var adLongVarChar = 201;
+var adWChar = 130;
+var adVarWChar = 202;
+var adLongVarWChar = 203;
+var adBinary = 128;
+var adVarBinary = 204;
+var adLongVarBinary = 205;
+var adChapter = 136;
+var adFileTime = 64;
+var adPropVariant = 138;
+var adVarNumeric = 139;
+var adArray = 0x2000;
+
+//---- FieldAttributeEnum Values ----
+var adFldMayDefer = 0x00000002;
+var adFldUpdatable = 0x00000004;
+var adFldUnknownUpdatable = 0x00000008;
+var adFldFixed = 0x00000010;
+var adFldIsNullable = 0x00000020;
+var adFldMayBeNull = 0x00000040;
+var adFldLong = 0x00000080;
+var adFldRowID = 0x00000100;
+var adFldRowVersion = 0x00000200;
+var adFldCacheDeferred = 0x00001000;
+var adFldIsChapter = 0x00002000;
+var adFldNegativeScale = 0x00004000;
+var adFldKeyColumn = 0x00008000;
+var adFldIsRowURL = 0x00010000;
+var adFldIsDefaultStream = 0x00020000;
+var adFldIsCollection = 0x00040000;
+
+//---- EditModeEnum Values ----
+var adEditNone = 0x0000;
+var adEditInProgress = 0x0001;
+var adEditAdd = 0x0002;
+var adEditDelete = 0x0004;
+
+//---- RecordStatusEnum Values ----
+var adRecOK = 0x0000000;
+var adRecNew = 0x0000001;
+var adRecModified = 0x0000002;
+var adRecDeleted = 0x0000004;
+var adRecUnmodified = 0x0000008;
+var adRecInvalid = 0x0000010;
+var adRecMultipleChanges = 0x0000040;
+var adRecPendingChanges = 0x0000080;
+var adRecCanceled = 0x0000100;
+var adRecCantRelease = 0x0000400;
+var adRecConcurrencyViolation = 0x0000800;
+var adRecIntegrityViolation = 0x0001000;
+var adRecMaxChangesExceeded = 0x0002000;
+var adRecObjectOpen = 0x0004000;
+var adRecOutOfMemory = 0x0008000;
+var adRecPermissionDenied = 0x0010000;
+var adRecSchemaViolation = 0x0020000;
+var adRecDBDeleted = 0x0040000;
+
+//---- GetRowsOptionEnum Values ----
+var adGetRowsRest = -1;
+
+//---- PositionEnum Values ----
+var adPosUnknown = -1;
+var adPosBOF = -2;
+var adPosEOF = -3;
+
+//---- BookmarkEnum Values ----
+var adBookmarkCurrent = 0;
+var adBookmarkFirst = 1;
+var adBookmarkLast = 2;
+
+//---- MarshalOptionsEnum Values ----
+var adMarshalAll = 0;
+var adMarshalModifiedOnly = 1;
+
+//---- AffectEnum Values ----
+var adAffectCurrent = 1;
+var adAffectGroup = 2;
+var adAffectAllChapters = 4;
+
+//---- ResyncEnum Values ----
+var adResyncUnderlyingValues = 1;
+var adResyncAllValues = 2;
+
+//---- CompareEnum Values ----
+var adCompareLessThan = 0;
+var adCompareEqual = 1;
+var adCompareGreaterThan = 2;
+var adCompareNotEqual = 3;
+var adCompareNotComparable = 4;
+
+//---- FilterGroupEnum Values ----
+var adFilterNone = 0;
+var adFilterPendingRecords = 1;
+var adFilterAffectedRecords = 2;
+var adFilterFetchedRecords = 3;
+var adFilterConflictingRecords = 5;
+
+//---- SearchDirectionEnum Values ----
+var adSearchForward = 1;
+var adSearchBackward = -1;
+
+//---- PersistFormatEnum Values ----
+var adPersistADTG = 0;
+var adPersistXML = 1;
+
+//---- StringFormatEnum Values ----
+var adClipString = 2;
+
+//---- ConnectPromptEnum Values ----
+var adPromptAlways = 1;
+var adPromptComplete = 2;
+var adPromptCompleteRequired = 3;
+var adPromptNever = 4;
+
+//---- ConnectModeEnum Values ----
+var adModeUnknown = 0;
+var adModeRead = 1;
+var adModeWrite = 2;
+var adModeReadWrite = 3;
+var adModeShareDenyRead = 4;
+var adModeShareDenyWrite = 8;
+var adModeShareExclusive = 0xc;
+var adModeShareDenyNone = 0x10;
+var adModeRecursive = 0x400000;
+
+//---- RecordCreateOptionsEnum Values ----
+var adCreateCollection = 0x00002000;
+var adCreateStructDoc = 0x80000000;
+var adCreateNonCollection = 0x00000000;
+var adOpenIfExists = 0x02000000;
+var adCreateOverwrite = 0x04000000;
+var adFailIfNotExists = -1;
+
+//---- RecordOpenOptionsEnum Values ----
+var adOpenRecordUnspecified = -1;
+var adOpenOutput = 0x00800000;
+var adOpenAsync = 0x00001000;
+var adDelayFetchStream = 0x00004000;
+var adDelayFetchFields = 0x00008000;
+var adOpenExecuteCommand = 0x00010000;
+
+//---- IsolationLevelEnum Values ----
+var adXactUnspecified = 0xffffffff;
+var adXactChaos = 0x00000010;
+var adXactReadUncommitted = 0x00000100;
+var adXactBrowse = 0x00000100;
+var adXactCursorStability = 0x00001000;
+var adXactReadCommitted = 0x00001000;
+var adXactRepeatableRead = 0x00010000;
+var adXactSerializable = 0x00100000;
+var adXactIsolated = 0x00100000;
+
+//---- XactAttributeEnum Values ----
+var adXactCommitRetaining = 0x00020000;
+var adXactAbortRetaining = 0x00040000;
+
+//---- PropertyAttributesEnum Values ----
+var adPropNotSupported = 0x0000;
+var adPropRequired = 0x0001;
+var adPropOptional = 0x0002;
+var adPropRead = 0x0200;
+var adPropWrite = 0x0400;
+
+//---- ErrorValueEnum Values ----
+var adErrProviderFailed = 0xbb8;
+var adErrInvalidArgument = 0xbb9;
+var adErrOpeningFile = 0xbba;
+var adErrReadFile = 0xbbb;
+var adErrWriteFile = 0xbbc;
+var adErrNoCurrentRecord = 0xbcd;
+var adErrIllegalOperation = 0xc93;
+var adErrCantChangeProvider = 0xc94;
+var adErrInTransaction = 0xcae;
+var adErrFeatureNotAvailable = 0xcb3;
+var adErrItemNotFound = 0xcc1;
+var adErrObjectInCollection = 0xd27;
+var adErrObjectNotSet = 0xd5c;
+var adErrDataConversion = 0xd5d;
+var adErrObjectClosed = 0xe78;
+var adErrObjectOpen = 0xe79;
+var adErrProviderNotFound = 0xe7a;
+var adErrBoundToCommand = 0xe7b;
+var adErrInvalidParamInfo = 0xe7c;
+var adErrInvalidConnection = 0xe7d;
+var adErrNotReentrant = 0xe7e;
+var adErrStillExecuting = 0xe7f;
+var adErrOperationCancelled = 0xe80;
+var adErrStillConnecting = 0xe81;
+var adErrInvalidTransaction = 0xe82;
+var adErrUnsafeOperation = 0xe84;
+var adwrnSecurityDialog = 0xe85;
+var adwrnSecurityDialogHeader = 0xe86;
+var adErrIntegrityViolation = 0xe87;
+var adErrPermissionDenied = 0xe88;
+var adErrDataOverflow = 0xe89;
+var adErrSchemaViolation = 0xe8a;
+var adErrSignMismatch = 0xe8b;
+var adErrCantConvertvalue = 0xe8c;
+var adErrCantCreate = 0xe8d;
+var adErrColumnNotOnThisRow = 0xe8e;
+var adErrURLIntegrViolSetColumns = 0xe8f;
+var adErrURLDoesNotExist = 0xe8f;
+var adErrTreePermissionDenied = 0xe90;
+var adErrInvalidURL = 0xe91;
+var adErrResourceLocked = 0xe92;
+var adErrResourceExists = 0xe93;
+var adErrCannotComplete = 0xe94;
+var adErrVolumeNotFound = 0xe95;
+var adErrOutOfSpace = 0xe96;
+var adErrResourceOutOfScope = 0xe97;
+var adErrUnavailable = 0xe98;
+var adErrURLNamedRowDoesNotExist = 0xe99;
+var adErrDelResOutOfScope = 0xe9a;
+var adErrPropInvalidColumn = 0xe9b;
+var adErrPropInvalidOption = 0xe9c;
+var adErrPropInvalidValue = 0xe9d;
+var adErrPropConflicting = 0xe9e;
+var adErrPropNotAllSettable = 0xe9f;
+var adErrPropNotSet = 0xea0;
+var adErrPropNotSettable = 0xea1;
+var adErrPropNotSupported = 0xea2;
+var adErrCatalogNotSet = 0xea3;
+var adErrCantChangeConnection = 0xea4;
+var adErrFieldsUpdateFailed = 0xea5;
+var adErrDenyNotSupported = 0xea6;
+var adErrDenyTypeNotSupported = 0xea7;
+var adErrProviderNotSpecified = 0xea9;
+var adErrConnectionStringTooLong = 0xeaa;
+
+//---- ParameterAttributesEnum Values ----
+var adParamSigned = 0x0010;
+var adParamNullable = 0x0040;
+var adParamLong = 0x0080;
+
+//---- ParameterDirectionEnum Values ----
+var adParamUnknown = 0x0000;
+var adParamInput = 0x0001;
+var adParamOutput = 0x0002;
+var adParamInputOutput = 0x0003;
+var adParamReturnValue = 0x0004;
+
+//---- CommandTypeEnum Values ----
+var adCmdUnknown = 0x0008;
+var adCmdText = 0x0001;
+var adCmdTable = 0x0002;
+var adCmdStoredProc = 0x0004;
+var adCmdFile = 0x0100;
+var adCmdTableDirect = 0x0200;
+
+//---- EventStatusEnum Values ----
+var adStatusOK = 0x0000001;
+var adStatusErrorsOccurred = 0x0000002;
+var adStatusCantDeny = 0x0000003;
+var adStatusCancel = 0x0000004;
+var adStatusUnwantedEvent = 0x0000005;
+
+//---- EventReasonEnum Values ----
+var adRsnAddNew = 1;
+var adRsnDelete = 2;
+var adRsnUpdate = 3;
+var adRsnUndoUpdate = 4;
+var adRsnUndoAddNew = 5;
+var adRsnUndoDelete = 6;
+var adRsnRequery = 7;
+var adRsnResynch = 8;
+var adRsnClose = 9;
+var adRsnMove = 10;
+var adRsnFirstChange = 11;
+var adRsnMoveFirst = 12;
+var adRsnMoveNext = 13;
+var adRsnMovePrevious = 14;
+var adRsnMoveLast = 15;
+
+//---- SchemaEnum Values ----
+var adSchemaProviderSpecific = -1;
+var adSchemaAsserts = 0;
+var adSchemaCatalogs = 1;
+var adSchemaCharacterSets = 2;
+var adSchemaCollations = 3;
+var adSchemaColumns = 4;
+var adSchemaCheckConstraints = 5;
+var adSchemaConstraintColumnUsage = 6;
+var adSchemaConstraintTableUsage = 7;
+var adSchemaKeyColumnUsage = 8;
+var adSchemaReferentialConstraints = 9;
+var adSchemaTableConstraints = 10;
+var adSchemaColumnsDomainUsage = 11;
+var adSchemaIndexes = 12;
+var adSchemaColumnPrivileges = 13;
+var adSchemaTablePrivileges = 14;
+var adSchemaUsagePrivileges = 15;
+var adSchemaProcedures = 16;
+var adSchemaSchemata = 17;
+var adSchemaSQLLanguages = 18;
+var adSchemaStatistics = 19;
+var adSchemaTables = 20;
+var adSchemaTranslations = 21;
+var adSchemaProviderTypes = 22;
+var adSchemaViews = 23;
+var adSchemaViewColumnUsage = 24;
+var adSchemaViewTableUsage = 25;
+var adSchemaProcedureParameters = 26;
+var adSchemaForeignKeys = 27;
+var adSchemaPrimaryKeys = 28;
+var adSchemaProcedureColumns = 29;
+var adSchemaDBInfoKeywords = 30;
+var adSchemaDBInfoLiterals = 31;
+var adSchemaCubes = 32;
+var adSchemaDimensions = 33;
+var adSchemaHierarchies = 34;
+var adSchemaLevels = 35;
+var adSchemaMeasures = 36;
+var adSchemaProperties = 37;
+var adSchemaMembers = 38;
+var adSchemaTrustees = 39;
+var adSchemaFunctions = 40;
+var adSchemaActions = 41;
+var adSchemaCommands = 42;
+var adSchemaSets = 43;
+
+//---- FieldStatusEnum Values ----
+var adFieldOK = 0;
+var adFieldCantConvertValue = 2;
+var adFieldIsNull = 3;
+var adFieldTruncated = 4;
+var adFieldSignMismatch = 5;
+var adFieldDataOverflow = 6;
+var adFieldCantCreate = 7;
+var adFieldUnavailable = 8;
+var adFieldPermissionDenied = 9;
+var adFieldIntegrityViolation = 10;
+var adFieldSchemaViolation = 11;
+var adFieldBadStatus = 12;
+var adFieldDefault = 13;
+var adFieldIgnore = 15;
+var adFieldDoesNotExist = 16;
+var adFieldInvalidURL = 17;
+var adFieldResourceLocked = 18;
+var adFieldResourceExists = 19;
+var adFieldCannotComplete = 20;
+var adFieldVolumeNotFound = 21;
+var adFieldOutOfSpace = 22;
+var adFieldCannotDeleteSource = 23;
+var adFieldReadOnly = 24;
+var adFieldResourceOutOfScope = 25;
+var adFieldAlreadyExists = 26;
+var adFieldPendingInsert = 0x10000;
+var adFieldPendingDelete = 0x20000;
+var adFieldPendingChange = 0x40000;
+var adFieldPendingUnknown = 0x80000;
+var adFieldPendingUnknownDelete = 0x100000;
+
+//---- SeekEnum Values ----
+var adSeekFirstEQ = 0x1;
+var adSeekLastEQ = 0x2;
+var adSeekAfterEQ = 0x4;
+var adSeekAfter = 0x8;
+var adSeekBeforeEQ = 0x10;
+var adSeekBefore = 0x20;
+
+//---- ADCPROP_UPDATECRITERIA_ENUM Values ----
+var adCriteriaKey = 0;
+var adCriteriaAllCols = 1;
+var adCriteriaUpdCols = 2;
+var adCriteriaTimeStamp = 3;
+
+//---- ADCPROP_ASYNCTHREADPRIORITY_ENUM Values ----
+var adPriorityLowest = 1;
+var adPriorityBelowNormal = 2;
+var adPriorityNormal = 3;
+var adPriorityAboveNormal = 4;
+var adPriorityHighest = 5;
+
+//---- ADCPROP_AUTORECALC_ENUM Values ----
+var adRecalcUpFront = 0;
+var adRecalcAlways = 1;
+
+//---- ADCPROP_UPDATERESYNC_ENUM Values ----
+var adResyncNone = 0;
+var adResyncAutoIncrement = 1;
+var adResyncConflicts = 2;
+var adResyncUpdates = 4;
+var adResyncInserts = 8;
+var adResyncAll = 15;
+
+//---- MoveRecordOptionsEnum Values ----
+var adMoveUnspecified = -1;
+var adMoveOverWrite = 1;
+var adMoveDontUpdateLinks = 2;
+var adMoveAllowEmulation = 4;
+
+//---- CopyRecordOptionsEnum Values ----
+var adCopyUnspecified = -1;
+var adCopyOverWrite = 1;
+var adCopyAllowEmulation = 4;
+var adCopyNonRecursive = 2;
+
+//---- StreamTypeEnum Values ----
+var adTypeBinary = 1;
+var adTypeText = 2;
+
+//---- LineSeparatorEnum Values ----
+var adLF = 10;
+var adCR = 13;
+var adCRLF = -1;
+
+//---- StreamOpenOptionsEnum Values ----
+var adOpenStreamUnspecified = -1;
+var adOpenStreamAsync = 1;
+var adOpenStreamFromRecord = 4;
+
+//---- StreamWriteEnum Values ----
+var adWriteChar = 0;
+var adWriteLine = 1;
+
+//---- SaveOptionsEnum Values ----
+var adSaveCreateNotExist = 1;
+var adSaveCreateOverWrite = 2;
+
+//---- FieldEnum Values ----
+var adDefaultStream = -1;
+var adRecordURL = -2;
+
+//---- StreamReadEnum Values ----
+var adReadAll = -1;
+var adReadLine = -2;
+
+//---- RecordTypeEnum Values ----
+var adSimpleRecord = 0;
+var adCollectionRecord = 1;
+var adStructDoc = 2;
+%>

+ 523 - 0
Source/OGCAssistTool/ado/adovbs.inc

@@ -0,0 +1,523 @@
+<%
+'/********************************************************
+'*                                                       *
+'*   Copyright (C) Microsoft. All rights reserved.       *
+'*                                                       *
+'********************************************************/
+'
+'--------------------------------------------------------------------
+' Microsoft ADO
+'
+' ADO constants include file for VBScript
+'
+'--------------------------------------------------------------------
+
+'---- CursorTypeEnum Values ----
+Const adOpenForwardOnly = 0
+Const adOpenKeyset = 1
+Const adOpenDynamic = 2
+Const adOpenStatic = 3
+
+'---- CursorOptionEnum Values ----
+Const adHoldRecords = &H00000100
+Const adMovePrevious = &H00000200
+Const adAddNew = &H01000400
+Const adDelete = &H01000800
+Const adUpdate = &H01008000
+Const adBookmark = &H00002000
+Const adApproxPosition = &H00004000
+Const adUpdateBatch = &H00010000
+Const adResync = &H00020000
+Const adNotify = &H00040000
+Const adFind = &H00080000
+Const adSeek = &H00400000
+Const adIndex = &H00800000
+
+'---- LockTypeEnum Values ----
+Const adLockReadOnly = 1
+Const adLockPessimistic = 2
+Const adLockOptimistic = 3
+Const adLockBatchOptimistic = 4
+
+'---- ExecuteOptionEnum Values ----
+Const adAsyncExecute = &H00000010
+Const adAsyncFetch = &H00000020
+Const adAsyncFetchNonBlocking = &H00000040
+Const adExecuteNoRecords = &H00000080
+Const adExecuteStream = &H00000400
+
+'---- ConnectOptionEnum Values ----
+Const adAsyncConnect = &H00000010
+
+'---- ObjectStateEnum Values ----
+Const adStateClosed = &H00000000
+Const adStateOpen = &H00000001
+Const adStateConnecting = &H00000002
+Const adStateExecuting = &H00000004
+Const adStateFetching = &H00000008
+
+'---- CursorLocationEnum Values ----
+Const adUseServer = 2
+Const adUseClient = 3
+
+'---- DataTypeEnum Values ----
+Const adEmpty = 0
+Const adTinyInt = 16
+Const adSmallInt = 2
+Const adInteger = 3
+Const adBigInt = 20
+Const adUnsignedTinyInt = 17
+Const adUnsignedSmallInt = 18
+Const adUnsignedInt = 19
+Const adUnsignedBigInt = 21
+Const adSingle = 4
+Const adDouble = 5
+Const adCurrency = 6
+Const adDecimal = 14
+Const adNumeric = 131
+Const adBoolean = 11
+Const adError = 10
+Const adUserDefined = 132
+Const adVariant = 12
+Const adIDispatch = 9
+Const adIUnknown = 13
+Const adGUID = 72
+Const adDate = 7
+Const adDBDate = 133
+Const adDBTime = 134
+Const adDBTimeStamp = 135
+Const adBSTR = 8
+Const adChar = 129
+Const adVarChar = 200
+Const adLongVarChar = 201
+Const adWChar = 130
+Const adVarWChar = 202
+Const adLongVarWChar = 203
+Const adBinary = 128
+Const adVarBinary = 204
+Const adLongVarBinary = 205
+Const adChapter = 136
+Const adFileTime = 64
+Const adPropVariant = 138
+Const adVarNumeric = 139
+Const adArray = &H2000
+
+'---- FieldAttributeEnum Values ----
+Const adFldMayDefer = &H00000002
+Const adFldUpdatable = &H00000004
+Const adFldUnknownUpdatable = &H00000008
+Const adFldFixed = &H00000010
+Const adFldIsNullable = &H00000020
+Const adFldMayBeNull = &H00000040
+Const adFldLong = &H00000080
+Const adFldRowID = &H00000100
+Const adFldRowVersion = &H00000200
+Const adFldCacheDeferred = &H00001000
+Const adFldIsChapter = &H00002000
+Const adFldNegativeScale = &H00004000
+Const adFldKeyColumn = &H00008000
+Const adFldIsRowURL = &H00010000
+Const adFldIsDefaultStream = &H00020000
+Const adFldIsCollection = &H00040000
+
+'---- EditModeEnum Values ----
+Const adEditNone = &H0000
+Const adEditInProgress = &H0001
+Const adEditAdd = &H0002
+Const adEditDelete = &H0004
+
+'---- RecordStatusEnum Values ----
+Const adRecOK = &H0000000
+Const adRecNew = &H0000001
+Const adRecModified = &H0000002
+Const adRecDeleted = &H0000004
+Const adRecUnmodified = &H0000008
+Const adRecInvalid = &H0000010
+Const adRecMultipleChanges = &H0000040
+Const adRecPendingChanges = &H0000080
+Const adRecCanceled = &H0000100
+Const adRecCantRelease = &H0000400
+Const adRecConcurrencyViolation = &H0000800
+Const adRecIntegrityViolation = &H0001000
+Const adRecMaxChangesExceeded = &H0002000
+Const adRecObjectOpen = &H0004000
+Const adRecOutOfMemory = &H0008000
+Const adRecPermissionDenied = &H0010000
+Const adRecSchemaViolation = &H0020000
+Const adRecDBDeleted = &H0040000
+
+'---- GetRowsOptionEnum Values ----
+Const adGetRowsRest = -1
+
+'---- PositionEnum Values ----
+Const adPosUnknown = -1
+Const adPosBOF = -2
+Const adPosEOF = -3
+
+'---- BookmarkEnum Values ----
+Const adBookmarkCurrent = 0
+Const adBookmarkFirst = 1
+Const adBookmarkLast = 2
+
+'---- MarshalOptionsEnum Values ----
+Const adMarshalAll = 0
+Const adMarshalModifiedOnly = 1
+
+'---- AffectEnum Values ----
+Const adAffectCurrent = 1
+Const adAffectGroup = 2
+Const adAffectAllChapters = 4
+
+'---- ResyncEnum Values ----
+Const adResyncUnderlyingValues = 1
+Const adResyncAllValues = 2
+
+'---- CompareEnum Values ----
+Const adCompareLessThan = 0
+Const adCompareEqual = 1
+Const adCompareGreaterThan = 2
+Const adCompareNotEqual = 3
+Const adCompareNotComparable = 4
+
+'---- FilterGroupEnum Values ----
+Const adFilterNone = 0
+Const adFilterPendingRecords = 1
+Const adFilterAffectedRecords = 2
+Const adFilterFetchedRecords = 3
+Const adFilterConflictingRecords = 5
+
+'---- SearchDirectionEnum Values ----
+Const adSearchForward = 1
+Const adSearchBackward = -1
+
+'---- PersistFormatEnum Values ----
+Const adPersistADTG = 0
+Const adPersistXML = 1
+
+'---- StringFormatEnum Values ----
+Const adClipString = 2
+
+'---- ConnectPromptEnum Values ----
+Const adPromptAlways = 1
+Const adPromptComplete = 2
+Const adPromptCompleteRequired = 3
+Const adPromptNever = 4
+
+'---- ConnectModeEnum Values ----
+Const adModeUnknown = 0
+Const adModeRead = 1
+Const adModeWrite = 2
+Const adModeReadWrite = 3
+Const adModeShareDenyRead = 4
+Const adModeShareDenyWrite = 8
+Const adModeShareExclusive = &Hc
+Const adModeShareDenyNone = &H10
+Const adModeRecursive = &H400000
+
+'---- RecordCreateOptionsEnum Values ----
+Const adCreateCollection = &H00002000
+Const adCreateStructDoc = &H80000000
+Const adCreateNonCollection = &H00000000
+Const adOpenIfExists = &H02000000
+Const adCreateOverwrite = &H04000000
+Const adFailIfNotExists = -1
+
+'---- RecordOpenOptionsEnum Values ----
+Const adOpenRecordUnspecified = -1
+Const adOpenOutput = &H00800000
+Const adOpenAsync = &H00001000
+Const adDelayFetchStream = &H00004000
+Const adDelayFetchFields = &H00008000
+Const adOpenExecuteCommand = &H00010000
+
+'---- IsolationLevelEnum Values ----
+Const adXactUnspecified = &Hffffffff
+Const adXactChaos = &H00000010
+Const adXactReadUncommitted = &H00000100
+Const adXactBrowse = &H00000100
+Const adXactCursorStability = &H00001000
+Const adXactReadCommitted = &H00001000
+Const adXactRepeatableRead = &H00010000
+Const adXactSerializable = &H00100000
+Const adXactIsolated = &H00100000
+
+'---- XactAttributeEnum Values ----
+Const adXactCommitRetaining = &H00020000
+Const adXactAbortRetaining = &H00040000
+
+'---- PropertyAttributesEnum Values ----
+Const adPropNotSupported = &H0000
+Const adPropRequired = &H0001
+Const adPropOptional = &H0002
+Const adPropRead = &H0200
+Const adPropWrite = &H0400
+
+'---- ErrorValueEnum Values ----
+Const adErrProviderFailed = &Hbb8
+Const adErrInvalidArgument = &Hbb9
+Const adErrOpeningFile = &Hbba
+Const adErrReadFile = &Hbbb
+Const adErrWriteFile = &Hbbc
+Const adErrNoCurrentRecord = &Hbcd
+Const adErrIllegalOperation = &Hc93
+Const adErrCantChangeProvider = &Hc94
+Const adErrInTransaction = &Hcae
+Const adErrFeatureNotAvailable = &Hcb3
+Const adErrItemNotFound = &Hcc1
+Const adErrObjectInCollection = &Hd27
+Const adErrObjectNotSet = &Hd5c
+Const adErrDataConversion = &Hd5d
+Const adErrObjectClosed = &He78
+Const adErrObjectOpen = &He79
+Const adErrProviderNotFound = &He7a
+Const adErrBoundToCommand = &He7b
+Const adErrInvalidParamInfo = &He7c
+Const adErrInvalidConnection = &He7d
+Const adErrNotReentrant = &He7e
+Const adErrStillExecuting = &He7f
+Const adErrOperationCancelled = &He80
+Const adErrStillConnecting = &He81
+Const adErrInvalidTransaction = &He82
+Const adErrUnsafeOperation = &He84
+Const adwrnSecurityDialog = &He85
+Const adwrnSecurityDialogHeader = &He86
+Const adErrIntegrityViolation = &He87
+Const adErrPermissionDenied = &He88
+Const adErrDataOverflow = &He89
+Const adErrSchemaViolation = &He8a
+Const adErrSignMismatch = &He8b
+Const adErrCantConvertvalue = &He8c
+Const adErrCantCreate = &He8d
+Const adErrColumnNotOnThisRow = &He8e
+Const adErrURLIntegrViolSetColumns = &He8f
+Const adErrURLDoesNotExist = &He8f
+Const adErrTreePermissionDenied = &He90
+Const adErrInvalidURL = &He91
+Const adErrResourceLocked = &He92
+Const adErrResourceExists = &He93
+Const adErrCannotComplete = &He94
+Const adErrVolumeNotFound = &He95
+Const adErrOutOfSpace = &He96
+Const adErrResourceOutOfScope = &He97
+Const adErrUnavailable = &He98
+Const adErrURLNamedRowDoesNotExist = &He99
+Const adErrDelResOutOfScope = &He9a
+Const adErrPropInvalidColumn = &He9b
+Const adErrPropInvalidOption = &He9c
+Const adErrPropInvalidValue = &He9d
+Const adErrPropConflicting = &He9e
+Const adErrPropNotAllSettable = &He9f
+Const adErrPropNotSet = &Hea0
+Const adErrPropNotSettable = &Hea1
+Const adErrPropNotSupported = &Hea2
+Const adErrCatalogNotSet = &Hea3
+Const adErrCantChangeConnection = &Hea4
+Const adErrFieldsUpdateFailed = &Hea5
+Const adErrDenyNotSupported = &Hea6
+Const adErrDenyTypeNotSupported = &Hea7
+Const adErrProviderNotSpecified = &Hea9
+Const adErrConnectionStringTooLong = &Heaa
+
+'---- ParameterAttributesEnum Values ----
+Const adParamSigned = &H0010
+Const adParamNullable = &H0040
+Const adParamLong = &H0080
+
+'---- ParameterDirectionEnum Values ----
+Const adParamUnknown = &H0000
+Const adParamInput = &H0001
+Const adParamOutput = &H0002
+Const adParamInputOutput = &H0003
+Const adParamReturnValue = &H0004
+
+'---- CommandTypeEnum Values ----
+Const adCmdUnknown = &H0008
+Const adCmdText = &H0001
+Const adCmdTable = &H0002
+Const adCmdStoredProc = &H0004
+Const adCmdFile = &H0100
+Const adCmdTableDirect = &H0200
+
+'---- EventStatusEnum Values ----
+Const adStatusOK = &H0000001
+Const adStatusErrorsOccurred = &H0000002
+Const adStatusCantDeny = &H0000003
+Const adStatusCancel = &H0000004
+Const adStatusUnwantedEvent = &H0000005
+
+'---- EventReasonEnum Values ----
+Const adRsnAddNew = 1
+Const adRsnDelete = 2
+Const adRsnUpdate = 3
+Const adRsnUndoUpdate = 4
+Const adRsnUndoAddNew = 5
+Const adRsnUndoDelete = 6
+Const adRsnRequery = 7
+Const adRsnResynch = 8
+Const adRsnClose = 9
+Const adRsnMove = 10
+Const adRsnFirstChange = 11
+Const adRsnMoveFirst = 12
+Const adRsnMoveNext = 13
+Const adRsnMovePrevious = 14
+Const adRsnMoveLast = 15
+
+'---- SchemaEnum Values ----
+Const adSchemaProviderSpecific = -1
+Const adSchemaAsserts = 0
+Const adSchemaCatalogs = 1
+Const adSchemaCharacterSets = 2
+Const adSchemaCollations = 3
+Const adSchemaColumns = 4
+Const adSchemaCheckConstraints = 5
+Const adSchemaConstraintColumnUsage = 6
+Const adSchemaConstraintTableUsage = 7
+Const adSchemaKeyColumnUsage = 8
+Const adSchemaReferentialConstraints = 9
+Const adSchemaTableConstraints = 10
+Const adSchemaColumnsDomainUsage = 11
+Const adSchemaIndexes = 12
+Const adSchemaColumnPrivileges = 13
+Const adSchemaTablePrivileges = 14
+Const adSchemaUsagePrivileges = 15
+Const adSchemaProcedures = 16
+Const adSchemaSchemata = 17
+Const adSchemaSQLLanguages = 18
+Const adSchemaStatistics = 19
+Const adSchemaTables = 20
+Const adSchemaTranslations = 21
+Const adSchemaProviderTypes = 22
+Const adSchemaViews = 23
+Const adSchemaViewColumnUsage = 24
+Const adSchemaViewTableUsage = 25
+Const adSchemaProcedureParameters = 26
+Const adSchemaForeignKeys = 27
+Const adSchemaPrimaryKeys = 28
+Const adSchemaProcedureColumns = 29
+Const adSchemaDBInfoKeywords = 30
+Const adSchemaDBInfoLiterals = 31
+Const adSchemaCubes = 32
+Const adSchemaDimensions = 33
+Const adSchemaHierarchies = 34
+Const adSchemaLevels = 35
+Const adSchemaMeasures = 36
+Const adSchemaProperties = 37
+Const adSchemaMembers = 38
+Const adSchemaTrustees = 39
+Const adSchemaFunctions = 40
+Const adSchemaActions = 41
+Const adSchemaCommands = 42
+Const adSchemaSets = 43
+
+'---- FieldStatusEnum Values ----
+Const adFieldOK = 0
+Const adFieldCantConvertValue = 2
+Const adFieldIsNull = 3
+Const adFieldTruncated = 4
+Const adFieldSignMismatch = 5
+Const adFieldDataOverflow = 6
+Const adFieldCantCreate = 7
+Const adFieldUnavailable = 8
+Const adFieldPermissionDenied = 9
+Const adFieldIntegrityViolation = 10
+Const adFieldSchemaViolation = 11
+Const adFieldBadStatus = 12
+Const adFieldDefault = 13
+Const adFieldIgnore = 15
+Const adFieldDoesNotExist = 16
+Const adFieldInvalidURL = 17
+Const adFieldResourceLocked = 18
+Const adFieldResourceExists = 19
+Const adFieldCannotComplete = 20
+Const adFieldVolumeNotFound = 21
+Const adFieldOutOfSpace = 22
+Const adFieldCannotDeleteSource = 23
+Const adFieldReadOnly = 24
+Const adFieldResourceOutOfScope = 25
+Const adFieldAlreadyExists = 26
+Const adFieldPendingInsert = &H10000
+Const adFieldPendingDelete = &H20000
+Const adFieldPendingChange = &H40000
+Const adFieldPendingUnknown = &H80000
+Const adFieldPendingUnknownDelete = &H100000
+
+'---- SeekEnum Values ----
+Const adSeekFirstEQ = &H1
+Const adSeekLastEQ = &H2
+Const adSeekAfterEQ = &H4
+Const adSeekAfter = &H8
+Const adSeekBeforeEQ = &H10
+Const adSeekBefore = &H20
+
+'---- ADCPROP_UPDATECRITERIA_ENUM Values ----
+Const adCriteriaKey = 0
+Const adCriteriaAllCols = 1
+Const adCriteriaUpdCols = 2
+Const adCriteriaTimeStamp = 3
+
+'---- ADCPROP_ASYNCTHREADPRIORITY_ENUM Values ----
+Const adPriorityLowest = 1
+Const adPriorityBelowNormal = 2
+Const adPriorityNormal = 3
+Const adPriorityAboveNormal = 4
+Const adPriorityHighest = 5
+
+'---- ADCPROP_AUTORECALC_ENUM Values ----
+Const adRecalcUpFront = 0
+Const adRecalcAlways = 1
+
+'---- ADCPROP_UPDATERESYNC_ENUM Values ----
+Const adResyncNone = 0
+Const adResyncAutoIncrement = 1
+Const adResyncConflicts = 2
+Const adResyncUpdates = 4
+Const adResyncInserts = 8
+Const adResyncAll = 15
+
+'---- MoveRecordOptionsEnum Values ----
+Const adMoveUnspecified = -1
+Const adMoveOverWrite = 1
+Const adMoveDontUpdateLinks = 2
+Const adMoveAllowEmulation = 4
+
+'---- CopyRecordOptionsEnum Values ----
+Const adCopyUnspecified = -1
+Const adCopyOverWrite = 1
+Const adCopyAllowEmulation = 4
+Const adCopyNonRecursive = 2
+
+'---- StreamTypeEnum Values ----
+Const adTypeBinary = 1
+Const adTypeText = 2
+
+'---- LineSeparatorEnum Values ----
+Const adLF = 10
+Const adCR = 13
+Const adCRLF = -1
+
+'---- StreamOpenOptionsEnum Values ----
+Const adOpenStreamUnspecified = -1
+Const adOpenStreamAsync = 1
+Const adOpenStreamFromRecord = 4
+
+'---- StreamWriteEnum Values ----
+Const adWriteChar = 0
+Const adWriteLine = 1
+
+'---- SaveOptionsEnum Values ----
+Const adSaveCreateNotExist = 1
+Const adSaveCreateOverWrite = 2
+
+'---- FieldEnum Values ----
+Const adDefaultStream = -1
+Const adRecordURL = -2
+
+'---- StreamReadEnum Values ----
+Const adReadAll = -1
+Const adReadLine = -2
+
+'---- RecordTypeEnum Values ----
+Const adSimpleRecord = 0
+Const adCollectionRecord = 1
+Const adStructDoc = 2
+%>

BIN
Source/OGCAssistTool/ado/en-US/msader15.dll.mui


BIN
Source/OGCAssistTool/ado/msader15.dll


BIN
Source/OGCAssistTool/ado/msado15.dll


BIN
Source/OGCAssistTool/ado/msado20.tlb


BIN
Source/OGCAssistTool/ado/msado21.tlb


BIN
Source/OGCAssistTool/ado/msado25.tlb


BIN
Source/OGCAssistTool/ado/msado26.tlb


BIN
Source/OGCAssistTool/ado/msado27.tlb


BIN
Source/OGCAssistTool/ado/msado28.tlb


BIN
Source/OGCAssistTool/ado/msado60.tlb


BIN
Source/OGCAssistTool/ado/msadomd.dll


BIN
Source/OGCAssistTool/ado/msadomd28.tlb


BIN
Source/OGCAssistTool/ado/msador15.dll


BIN
Source/OGCAssistTool/ado/msador28.tlb


BIN
Source/OGCAssistTool/ado/msadox.dll


BIN
Source/OGCAssistTool/ado/msadox28.tlb


BIN
Source/OGCAssistTool/ado/msadrh15.dll


BIN
Source/OGCAssistTool/ado/msjro.dll


BIN
Source/OGCAssistTool/ado/zh-CN/msader15.dll.mui