Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Agiornare una tabella di access
giovedì 23 ottobre 2008 - 15.39
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
From15
Profilo
| Newbie
11
messaggi | Data Invio:
gio 23 ott 2008 - 15:39
Salve a tutti, vi espongo il mio problema: Leggo i dati da un file CSV, e li salvo in una DataTable, dopodichè apro un file di Access (mdb) al quale cancello tutti i dati di una tabella specifica (DELETE * FROM nometabella). Ora vorrei mettere in quella tabella che ho appena pulito i dati presenti nella DataTable contenente i dati del file CSV.
String Query;
OleDbCommandBuilder ComandoQuery;
DataSet DatiTemporanei;
OleDbDataAdapter AdattatoreDataBase;
DataTable TabellaDaAggiornare;
DataTAble TabellaCSV
Int32 i;
i = 0;
TabellaDaAggiornare = new DataTable ();
DatiTemporanei = new DataSet();
// per prima cosa cancello i recod presenti nella tabella da aggiornare
// creo la query
Query = "DELETE * FROM " + NomeTabella;
// istanzio l'adattatore passandogli la query e la connessione attiva sul DataBase
AdattatoreDataBase = new OleDbDataAdapter(Query,ConnessioneDB);
// istanzio l'oggetto comando associandolo all'adattatore
ComandoQuery = new OleDbCommandBuilder(AdattatoreDataBase);
// faccio eseguire la query
AdattatoreDataBase.Fill(TabellaDaAggiornare);
Una volta effettuato il fill come faccio ad aggironare la tabella qualcuno ha un'idea da suggerirmi??
Grazie in anticipo!
Andrea
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
gio 23 ott 2008 - 16:34
Ciao
Premesso che dò per scontato che i campi del CSV siano gli stessi della tua tabella
Una soluzione potrebbe essere usare questa query:
LOAD DATA INFILE "C:\myFile.CSV"
INTO TABLE myTable
FIELDS
TERMINATED BY ","
ENCLOSED BY "'"
LINES
TERMINATED BY '\r\n'
(myColumn1, myCol2, myCol3, myCol4, myCol5, ecc...)
Potresti, credo, addirittura accodarla alla tua DELETE ovvero:
query = DELETE * FROM nome_tabella; LOAD DATA INFILE eccc. ecc..
quindi senza passare dal DataTable
Ciao
From15
Profilo
| Newbie
11
messaggi | Data Invio:
gio 23 ott 2008 - 16:43
Allora, i campi sono lo stesso numero quindi le row della tabella creata dal file CSV hanno lo stesso numero e formato dei campi della tabella access.
Preferivo cmq rimanere con l'utilizzo di DataTable anche perchè, tramite DataGridview, le faccio vedere all'utente.
Non hai mai provato a farlo con le DataTable?
Intanto grazie lo stesso ora ci porvo con il metodo che mi hai detto...
Andrea
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
gio 23 ott 2008 - 17:19
Ciao
con il DataTable non ho mai provato ma credo sia possibile.
Per ovviare al discorso della visualizzazione su DataGridView puoi seguire due strade:
La prima prevede di caricare il file direttamente sulla DataGridView e poi salvare sul DB
Oppure prima salvi sul DB come detto prima e poi carichi i dati sulla DGV.
Per caricare i dati sulla DGV dal file CSV puoi usare questa funzione (prima devi aggiungergli le colonne):
Dim fName As String = ""
OpenFileDialog1.InitialDirectory = "C:\"
OpenFileDialog1.Filter = "CSV files (*.csv)|*.CSV"
OpenFileDialog1.FilterIndex = 2
OpenFileDialog1.FileName = ""
OpenFileDialog1.RestoreDirectory = True
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
fName = OpenFileDialog1.FileName
End If
Me.TextBox1.Text = fName
Dim TextLine As String = ""
Dim SplitLine() As String
If System.IO.File.Exists(fName) = True Then
Dim objReader As New System.IO.StreamReader(fName)
Do While objReader.Peek() <> -1
TextLine = objReader.ReadLine()
SplitLine = Split(TextLine, Me.txtSEPARATOR.Text)
Me.DataGridView1.Rows.Add(SplitLine)
Loop
Else
MsgBox("File Does Not Exist")
End If
è scrita in VB ma trasformarla in C non dovrebbe essere complicato
Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !