通过matlab函数更新更新访问表

时间:2015-04-23 19:41:06

标签: sql matlab

我正在寻找使用表格对象通过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'来更新一组记录?

0 个答案:

没有答案