如何通过MS Access前端在MATLAB中从SQL Server打开记录集

时间:2016-11-09 14:20:08

标签: sql-server matlab ms-access

我有代码(下面)通过ActiveX服务器将数据从MS Access表读入MATLAB,非常好用。我现在尝试使用相同的代码从连接到SQL Server的Access链接表中读取数据,但是收到错误:

  

调用错误,调度异常:   来源:DAO.Database   描述:访问具有IDENTITY列的SQL Server表时,必须对OpenRecordset使用dbSeeChanges选项。   帮助文件:jeterr40.chm   帮助上下文ID:4c5966

因此,有问题的表有一个IDENTITY列,我需要指定' dbSeeChanges' OpenRecordset选项。我的问题是,如何指定此选项?我可以在网上看到很多关于如何在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_querry = 'SELECT * FROM dbo_PatientMeasurementResults;';
rs = accessDB.OpenRecordset(sql_querry);

我已尝试过显而易见的事,但这不起作用:

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

1 个答案:

答案 0 :(得分:1)

愚蠢的我,dbSeeChangesOptions参数的值,它是第三个,而不是OpenRecordset的第二个参数:

Database.OpenRecordset Method (DAO)

现在发生的事情是:Const dbOpenSnapshot = 4 - 你开了一个"快照"记录集,它是只读的。因此不需要dbSeeChanges

如果你只想从记录集中读取,那么这确实是最好的选择(但是你应该在你的代码中改变你的常量以避免将来混淆)。

要打开可编辑记录集,请使用

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