提供轉檔元件,可用程式串接該元件,打入自定義的查詢語法,來取用CMoney財經資料庫的資源。
元件名稱 | 產品名稱 | 功能 | 安裝檔下載 |
cmadox.dll | CMADODB |
|
Windows 32位元:[點我下載] Windows 64位元:[點我下載] |
cmadox5.dll | CMADODB5 |
|
Windows 32位元:[點我下載] Windows 64位元:[點我下載] |
有時候可能因為權限或環境問題,安裝檔無法註冊元件成功時,請參照以下流程處理。
電腦OS位元 | 系統資料夾路徑 | cmd指令 |
32位元 | C:\Windows\System32 |
regsvr32 cmadox.dll |
64位元 | C:\Windows\SysWOW64 |
regsvr32 C:\Windows\SysWOW64\cmadox.dll |
如果您的OS環境為Windows Server,請對COM+進行註冊。
請參照COM+操作文件[點我連結]
COM+元件註冊後,請將專案透過進階設定將[啟用32位元應用程式]選擇為TRUE(Adox元件不支援建置目標64位元的專案)
產品名稱 | 方法名稱 | 輸入參數 | SQL查詢語法 示例 | ||||||||||||||||||||
CMADODB | Execute |
|
SELECT * FROM 日收盤表排行 WHERE (日期 = '20041110') ORDER BY 股票代號 | ||||||||||||||||||||
CMADODB | Execute |
|
SELECT * FROM 技術與籌碼面速覽 | ||||||||||||||||||||
CMADODB | Execute |
|
基本面篩選/月營收動能向上/20060207
|
||||||||||||||||||||
CMADODB5 | CMExecuteOLEDB |
|
SELECT * FROM 日收盤表排行 WHERE (日期 = '20041110') ORDER BY 股票代號" | ||||||||||||||||||||
CMADODB5 | CMExecuteSQLNCLI11
可用TLS1.2協定來查詢資料。 |
同上 | 同上 |
項目 | 語法 | SQL查詢語法 示例 |
台股–交易所代號 | <CM代號,1> | SELECT * FROM [季財報(現金流量單季)] WHERE 年季='201003' AND 股票代號 IN <CM代號,1> |
台股–細產業分類 | <CM產業,303> | SELECT * FROM [季財報(現金流量單季)] WHERE 年季='201003' AND 股票代號 IN <CM產業,303> |
台股–個股特殊分類(不含指數彙編) | <CM特殊,1> | SELECT * FROM [季財報(現金流量單季)] WHERE 年季='201003' AND 股票代號 IN <CM特殊,1> |
非台股 | <CM一般,日本,重要國際指數,國家> | SELECT * FROM [重要國際指數] WHERE 日期='20110120' AND 代號 IN <CM一般,日本,重要國際指數,國家> |
同上 | 同上 | SELECT * FROM [重要國際指數] WHERE 日期='20110120' AND 代號 IN <CM一般,日本,重要國際指數,國家> SELECT * FROM [權證基本資料表] WHERE 年度='2011' AND 代號 IN <CM一般,一般型認售權證,權證基本資料表,類型> |
資料表前後請留空白,若表格名稱內含有中括號,則表格名稱請不要再用中括號包住
返回ADODB.RecordSet型態的資料集合
其他屬性
.ErrorMessage:取得錯誤訊息
當元件未預期執行時,可以到↓查看是否有Log紀錄,再提交給CMoney人員。
C:\Program Files (x86)\CMoney\CMAdox_LOG\
C:\Program Files\CMoney\CMAdox_LOG\
C:\Users\user1\AppData\Roaming\
*user1是當前登入帳戶名稱
[Adox]
/// <summary>
/// 查詢指定SQL命令並返回資料表
/// </summary>
/// <param name="sqlCommandText">SQL命令</param>
/// <returns>查詢結果</returns>
public DataTable Execute(string sqlCommandText)
{
ADODB.Recordset recordset = new ADODB.Recordset();
CMADODB.CMConnection conn = new CMADODB.CMConnection();
try
{
using (System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter())
{
DataTable dt = new DataTable();
recordset = conn.CMExecute("5", sqlCommandText);
if (!string.IsNullOrEmpty(conn.ErrorMessage))
{
throw new Exception(conn.ErrorMessage);
}
if (recordset != null && recordset.RecordCount > 0)
{
adapter.Fill(dt, recordset);
return dt;
}
else
{
throw new Exception("查無資料");
}
}
}
catch (Exception ex)
{
throw new Exception($"查詢例外:{ex}");
}
finally
{
if (recordset != null)
{
if (recordset.State != 0)
{
recordset.Close();
}
recordset = null;
}
conn = null;
}
}
[Adox5]
/// <summary>
/// 查詢指定SQL命令並返回資料表
/// </summary>
/// <param name="sqlCommandText">SQL命令</param>
/// <returns>查詢結果</returns>
public DataTable Execute(string sqlCommandText)
{
ADODB.Recordset recordset = new ADODB.Recordset();
CMADODB5.CMConnection conn = new CMADODB5.CMConnection();
try
{
using (System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter())
{
DataTable dt = new DataTable();
recordset = conn.CMExecuteOLEDB("5", "伺服器IP", "伺服器Port", sqlCommandText);
if (!string.IsNullOrEmpty(conn.ErrorMessage))
{
throw new Exception(conn.ErrorMessage);
}
if (recordset != null && recordset.RecordCount > 0)
{
adapter.Fill(dt, recordset);
return dt;
}
else
{
throw new Exception("查無資料");
}
}
}
catch (Exception ex)
{
throw new Exception($"查詢例外:{ex}");
}
finally
{
if (recordset!=null)
{
if (recordset.State != 0)
{
recordset.Close();
}
recordset = null;
}
conn = null;
}
}
產品名稱 | 測試程式(請解壓縮後執行內部的DemoForm.exe) | 程式碼 (請解壓縮後可見原始碼) |
CMADODB | 點我下載 | 點我下載 |
CMADODB5 | 點我下載 | 點我下載 |
DemoAdox(5).slu
└-- DemoForm.csproj:作為客戶端應用程式,示範外部程式如何去呼叫DemoLib內的類別。
└-- DemoLib.csproj:作為底層,內部主要是包裝adox(5)的查詢以及ADODB.Recordset轉換為DataTable。
Q: 擷取元件 (CLSID 為 {FA04616C-9B80-4D61-8228-5BC1963E07CB}) 的 COM Class Factory 失敗,因為發生下列錯誤: 80040154 類別未登錄 (發生例外狀況於 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
A: 請先嘗試手動註冊流程
Q: 我寫的程式在開發端測試運行沒有問題,但是佈署到IIS或其他主機時,就會出錯。
A: 請先確認遠端目的主機,也有進行元件註冊流程。
Q: 我還是有問題
A: 請聯絡CMoney,並提供Log檔。如果方便,亦請提供串接程式碼(可先自行移除商業邏輯),並告知使用的語言和運行環境。