Caricare i dati di un datagrid in una tabella access

giovedì 22 maggio 2008 - 18.00

massimoflorian Profilo | Newbie

Salve,
ho importato un file testo in un datagrid con il seguente codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With OpenFileDialog1
.CheckFileExists = True
.CheckPathExists = True
.DefaultExt = "txt"
.DereferenceLinks = True
.ValidateNames = True
.Filter = "Text files (*.txt)|*.txt|All files|*.*"
.RestoreDirectory = True
If .ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim filename As String
filename = .FileName
Dim ts = New IO.StreamReader(.OpenFile)

Me.TextBox1.Text = OpenFileDialog1.FileName
End If
End With

Dim objStreamreader As IO.StreamReader = _
New IO.StreamReader(Me.TextBox1.Text)
Dim strline As String
Dim strcolomns() As String
Dim dtCustomers As New DataTable()
Dim drCustomer As DataRow
dtCustomers.Columns.Add("Cognome")
dtCustomers.Columns.Add("Nome")
dtCustomers.Columns.Add("CodiceCliente")
dtCustomers.Columns.Add("telefono")
dtCustomers.Columns.Add("cellulare")
strline = objStreamreader.ReadLine
Do While (Not strline Is Nothing)
drCustomer = dtCustomers.NewRow
strcolomns = Split(strline, ",")
drCustomer.ItemArray = strcolomns
dtCustomers.Rows.Add(drCustomer)
strline = objStreamreader.ReadLine
Loop

datiImportati.DataSource = dtCustomers

End Sub

Adesso dovrei salvare questi dati in una tabella access Clienti .Potete aiutarmi????
Da premettere che i campi si chiamano esattamente come da caricamento su datagrid.

sankyu Profilo | Senior Member

ciao!
creati un dataset ed inserisci la tua datatable nel dataset appena creato, poi utilizza un oledbdataadapter con il comando update ed il gioco è fatto
Ti mando il link in cui è spiegato come usare oledbdataadapter
http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbdataadapter(VS.80).aspx

fammi sapere se si può fare anche senza creare un dataset!

massimoflorian Profilo | Newbie

Ciao, grazie per il tuo suggerimento, credo di essere ad un passo dalla soluzione ma mi mancano degli indizi per chiudere il caso.
ho modificato il codice per il mio progetto.
ti devo chiedere :
1.nel datagrid non ho il codice id_cliente nella tabella invece esiste cambia qualcosa????
2.mi ritorna un valore adapter e che ne devo fare??
3.come associo il datagrid o data view che ho creato a questo codice????

Il codice che ho generato è il seguente:
id_cliente lo devo estromettere considerato che nel datagrid non è caricato????

Public Function CreateDataAdapter(ByVal selectCommand As String) As OleDb.OleDbDataAdapter

Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & "C:\pratiche\database.mdb"

Using connection As New System.Data.OleDb.OleDbConnection(strConn)

Dim adapter As OleDb.OleDbDataAdapter = _
New OleDb.OleDbDataAdapter(selectCommand, connection)

adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

' Create the commands.
adapter.InsertCommand = New OleDb.OleDbCommand( _
"INSERT INTO Clienti (Cognome, nome,codicecliente,cellulare,telefono) " & _
"VALUES (?, ?)")

adapter.UpdateCommand = New OleDb.OleDbCommand( _
"UPDATE Clienti SET Cognome = ?, nome = ?,cellulare = ?, telefono = ?" & _
"WHERE id_cliente = ?")

adapter.DeleteCommand = New OleDb.OleDbCommand( _
"DELETE FROM Clienti WHERE id_cliente = ?")

' Create the parameters.
adapter.InsertCommand.Parameters.Add( _
"@id_cliente", OleDb.OleDbType.Char, 5, "id_cliente")

adapter.InsertCommand.Parameters.Add( _
"@cognome", OleDb.OleDbType.VarChar, 50, "cognome")

adapter.InsertCommand.Parameters.Add( _
"@nome", OleDb.OleDbType.VarChar, 50, "nome")

adapter.InsertCommand.Parameters.Add( _
"@cellulare", OleDb.OleDbType.VarChar, 50, "cellulare")

adapter.InsertCommand.Parameters.Add( _
"@telefono", OleDb.OleDbType.VarChar, 50, "telefono")

adapter.UpdateCommand.Parameters.Add( _
"@id_cliente", OleDb.OleDbType.Char, 5, "id_cliente")
adapter.UpdateCommand.Parameters.Add( _
"@cognome", OleDb.OleDbType.VarChar, 50, "cognome")
adapter.UpdateCommand.Parameters.Add( _
"@nome", OleDb.OleDbType.VarChar, 50, "nome")
adapter.UpdateCommand.Parameters.Add( _
"@cellulare", OleDb.OleDbType.VarChar, 50, "cellulare")
adapter.UpdateCommand.Parameters.Add( _
"@telefono", OleDb.OleDbType.VarChar, 50, "telefono")
adapter.UpdateCommand.Parameters.Add( _
"@oldid_cliente", OleDb.OleDbType.Char, 5, "id_cliente").SourceVersion = _
DataRowVersion.Original



adapter.DeleteCommand.Parameters.Add( _
"@id_cliente", OleDb.OleDbType.Char, 5, "id_cliente").SourceVersion = _
DataRowVersion.Original

Return adapter
End Using
End Function

sankyu Profilo | Senior Member

io di solito uso sql server cmq il procedimento dovrebbe essere lo stesso
1- crei il datadapter come hai appena fatto
2- associ il dataset contenente la tua datatable al dataadapter
3- lanci adapter.update() che dovrebbe fare l'aggiornamento del database

ora ho poco tempo stasera da casa provo a mandarti del codice funzionante!

massimoflorian Profilo | Newbie

grazie.....
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5