簡體   English   中英

如何通過 MS Access 前端在 MATLAB 中從 SQL Server 打開記錄集

[英]How to open recordset from SQL Server in MATLAB via MS Access front-end

我有代碼(如下)通過 ActiveX 服務器將 MS Access 表中的數據讀取到 MATLAB 中,效果非常好。 我現在嘗試使用相同的代碼從連接到 SQL Server 的 Access 鏈接表中讀取數據,但出現錯誤:

調用錯誤,調度異常:來源:DAO.Database 描述:訪問具有 IDENTITY 列的 SQL Server 表時,必須將 dbSeeChanges 選項與 OpenRecordset 一起使用。 幫助文件:jeterr40.chm 幫助上下文 ID:4c5966

因此,有問題的表有一個 IDENTITY 列,我需要使用 OpenRecordset 指定“dbSeeChanges”選項。 我的問題是,如何指定此選項? 我可以在網上看到很多關於如何在 VBA 中執行此操作的示例,但沒有一個與 MATLAB 兼容。 這是我的代碼:

% Setup environment
app = 'Access.Application';
DBAddress = 'O:\testData.accdb';

% Load an Activex server for Access
try
    svr = actxGetRunningServer(app);
catch err
    svr = actxserver(app);
end

% Load the required database file
accessDB = svr.DBEngine.OpenDatabase(DBAddress);

% Query the database for the required records
sql_query = 'SELECT * FROM dbo_PatientMeasurementResults;';
rs = accessDB.OpenRecordset(sql_query);

我已經嘗試了顯而易見的方法,但這不起作用:

rs = accessDB.OpenRecordset(sql_query,'dbSeeChanges');

愚蠢的我, dbSeeChanges<\/code>是Options<\/code>參數的值,它是OpenRecordset<\/code>的第三個<\/strong>,而不是第二個參數:

Database.OpenRecordset 方法 (DAO)<\/a>

現在發生的事情是: Const dbOpenSnapshot = 4<\/code> - 您打開了一個“快照”記錄集,它是只讀的。 所以dbSeeChanges<\/code> 。

如果您只想從記錄集中讀取,那么這確實是最好的選擇(但您應該更改代碼中的常量以避免將來混淆)。

要打開可編輯的記錄集,請使用

Const dbOpenDynaset = 2
Const dbSeeChanges = 512
rs = accessDB.OpenRecordset(sql_query, dbOpenDynaset, dbSeeChanges);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM