How do I use datainsert/fastinsert functions for an Access database?

2 vues (au cours des 30 derniers jours)
L
L le 10 Jan 2017
Commenté : L le 27 Jan 2017
Hello,
So I've been working on a project for awhile now and through the hiccups, I've finally gotten close to creating the script/function to do what I need. My problem now is that I can't seem to get those functions to work. Below is the command and the error I keep getting.
curs2 = fastinsert(conn,tablename,columns,tabledata);
Error using database.odbc.connection/fastinsert
Too many output arguments.
I've also tried datainsert, but I get the same thing. Anyways, conn is my connection, tablename is the name of the table in the Access database, columns is a cell of the column names in the database (that were extracted from an excel file (excelfile(1,1:end)), and tabledata is the data I wish to store in the Access database (also extracted from an excel file (excelfile(2:end,1:end)).
I've built this script to be used for similar data sets but with varying rows and/or columns. I would greatly appreciate any help as I can't seem to get this data to be easily inserted into the database I've made.
Thank you in advanced!
-L

Réponse acceptée

Ankitha Kollegal Arjun
Ankitha Kollegal Arjun le 13 Jan 2017
The error is likely due to the assignment of fastinsert to curs2. That is not a supported syntax. Instead, try the following to view the database:
fastinsert(conn,tablename,columns,tabledata);
curs = exec(conn,'select * from tablename');
curs = fetch(curs);
curs.Data
  2 commentaires
L
L le 17 Jan 2017
Hello Ankitha,
Although it seems your recommendation took me a step in the right direction, I ran into another error. See below.
Error using database.odbc.connection/insert (line 247)
ODBC Driver Error: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'Range' in expression.
Error in database.odbc.connection/fastinsert (line 40)
insert( connect,tableName,fieldNames,data );
One of the column names in my table is supposed to be "Range (m)" and I think that it is thinking Range is a function, when it is just one of the columns from the table. My definition of columns and tabledata:
columns = exceldata(1,1:end);
tabledata = exceldata(2:end,1:end);
I think I've read about this somewhere, but I'm not sure how to fix the syntax so it accepts range as just the name of the column. I would be very grateful for any assistance.
Thank you,
L
L
L le 27 Jan 2017
I figured out the problem. I just had to wrap each column name in [] and I did so using a regexprep. Then datainsert worked just fine.
Thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by