Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

DataTable.Merge per unire tabelle

$
0
0

Ciao a tutti,

vorrei leggere una tabella DBF e mergiare il suo contenuto intero in una tabella Access (chiaramente con la stessa struttura) usando DataTable.Merge, che pensavo facesse al caso mio.

Per semplificare, ho fatto un primo esempio con 2 tabelle dello stesso database access (Table1 con 2 records e Table2 con 1 record) con la stessa struttura.

Io utilizzo C# invece di visual basic, ma è il concetto che non capisco, quindi il linguaggio credo sia indifferente (scusate per il codice ma anche usando il tool di Diego, con VS2013 sembra non si ottenga il risultato voluto):

Qui creo il DataTable della prima tabella:

            // Creates SQL String

            string mySQL1= string.Format(CultureInfo.InvariantCulture, "SELECT id, description FROM Table1");

 

            // Creates and fill DBF data table

            OleDbCommand MyQuery = new OleDbCommand(mySQL1, this._accessConnection);

            OleDbDataAdapter dbfDA = new OleDbDataAdapter(MyQuery);

            DataTable dbfDT = new DataTable();

            dbfDA.Fill(dbfDT);

 

Qui creo il DataTable della seconda tabella:

            // Creates SQL String

            string mySQL2 = string.Format(CultureInfo.InvariantCulture, "SELECT id, description FROM Table2");

            // Creates Access data table

            OleDbDataAdapter accessDA = new OleDbDataAdapter();

            accessDA.SelectCommand = new OleDbCommand(mySQL2, this._accessConnection);

 

            OleDbCommandBuilder cb = new OleDbCommandBuilder(accessDA);

            DataTable accessDT = new DataTable();

            accessDA.Fill(accessDT);

Qui mergio le 2 tabelle ed in effetti, guardando con il debugger  in accessDT ho 3 records:

            // Merge DBF table into Access one

            accessDT.Merge(dbfDT);

            accessDT.AcceptChanges();

 

Qui dovrei salvare i dati della DataTable che ora contiene 3 records e mi aspetto che in Table2 ci siano 3 records

            // Update Access data adapter

            int update = accessDA.Update(accessDT);

...invece non succede nulla e la tabella rimane con 1 solo record iniziale...

Ho guardato un bel po' di esempi cercando su google e sembra che faccia in modo corretto...ma secondo voi cosa sbaglio?

Grazie

Cristian


Viewing all articles
Browse latest Browse all 2212

Trending Articles


HOY PANGIT, MAGBAYAD KA!


Henry el monstruo feliz para colorear e imprimir


Dama y vagabundo para pintar


Girasoles para colorear


Good Morning Quotes


RE: Mutton Pies (jameskoiman)


Hagibis (1946) by Francisco V. Coching


Ka riam ka beit bad ka por riam


Vimeo Create - Video Maker & Editor 1.6.0 by Vimeo Inc


Vimeo 3.42.1 by Vimeo Inc