我正在寻找使用表格对象通过Matlab 2014b更新MS Access DB记录的正确语法。
T = table(var1,...,varN,Name,Value)。
当我连接到访问...
%% update les tickets existants
[~,~,idx_upd] = intersect(x_trade_id,trade_id);
for i = 1:length(idx_upd);
iloop = idx_upd(i);
connSQL = database('','','','sun.jdbc.odbc.JdbcOdbcDriver',url);
setdbprefs('DataReturnFormat', 'cellarray');
curs = exec(connSQL, 'SELECT * from prod_execs');
if sum(idx_upd)>0;
% liste de champs de la base à impacter
xcDatabaseField = {'trade_id', 'trade_dt', 'isin', 'sec_name', 'rfq_id', 'taker_side', 'qty', 'underlying_ticker','exec_price','instr_ccy','maker_firm_name','taker_trader','account','client', 'amount'};
T = table(trade_id(idx_upd), ...
trade_dt(idx_upd), ...
BBGisin(idx_upd), ...
BBGsec_name(idx_upd), ...
rfq_id(idx_upd), ...
taker_side(idx_upd), ...
qty(idx_upd),...
underlying_ticker(idx_upd),...
exec_price(idx_upd),...
instr_ccy(idx_upd),...
maker_firm_name(idx_upd),...
taker_trader(idx_upd), ...
account(idx_upd),...
client(idx_upd), ...
amount(idx_upd),...
'VariableNames',xcDatabaseField);
strWhereclause = strcat('WHERE prod_execs.trade_id = ''', T.trade_id,'''');
update(connSQL,strTableName,xcDatabaseField,T,strWhereclause);
close (connSQL);
close(cursSQL);
end
end
我有一条很好的红色信息:
使用数据库/更新时出错(第102行)
输入数据必须是单元格数组,矩阵,结构,数据集或表。数据库/更新出错(第72行)
更新(连接,表名,字段名,子数据,whereClause {I})测试错误(第137行)
更新(connSQL,strTableName,xcDatabaseField,T,strWhereclause);
请帮忙。
或者我可以用另一种方式问:有没有办法通过选择'ADO'来更新一组记录?