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
Off Topic (OT)
Data e Ora (formato esteso) In Database (access)
lunedì 11 luglio 2005 - 10.02
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Ikin
Profilo
| Newbie
19
messaggi | Data Invio:
lun 11 lug 2005 - 10:02
Ciao a tuuti,
sono nuovo di qui e quindi se x qualcuno quello che potrei scrivere può sembrare banale, x me non lo è.
Da poco ho cominciato a scrivere codice in VB.Net e non ho una buona conoscenza di programmazione.
Passiamo alla richiesta.
Vorrei salvare in un database, X es. Access2003 dei valori letti da uno strumento ed anche la data e l'ora in cui questi sono stati letti ricanata con la funzione Now.
Il problema che trovo è che non riesco a realizzare l'UPDATE mediante il dataadapter una volta che i valori sono presenti nel data adapter.
Il codice è il seguente:
Dim StrConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dbVIP.mdb;User Id=;Password=;"
Dim conn As New OleDbConnection(StrConn)
conn.Open()
Dim sql_Str As String = "SELECT * FROM Tabella"
Dim ds As New DataSet
Dim da As New OleDbDataAdapter(sql_Str, conn)
'verifica che la chiave primaria venga impostata correttamente
da.FillSchema(ds, SchemaType.Source, "LettureVIP")
'Popola il DataTable
da.Fill(ds)
'crea un oggetto CommandBuilder ausiliario x qsto DataAdapter
Dim cb As New OleDbCommandBuilder(da)
'lo usa x creare i tre oggetti XXXCommand
da.InsertCommand = cb.GetInsertCommand
da.DeleteCommand = cb.GetDeleteCommand
da.UpdateCommand = cb.GetUpdateCommand
'a qsto pto è possibile modificare il DataSet locale e inviare
'i record modificati al DataBase
'Aggiunge un nuovo record
Dim dr As DataRow = ds.Tables("NomeTabella").NewRow
dr("DataOra") = Now
dr("Valori")=val 'In qsto pto inserisco tutti i valori...
ds.Tables("NomeTabella").Rows.Add(dr)
Console.WriteLine(ds.Tables("NomeTabella").Rows.Count.ToString
'Try
da.Update(ds) '* ?!? *' qui NON realizza l'update al Database
'Catch ex As Exception
'MessageBox.Show(ex.Message)
'End Try
conn.Close()
Chiederei cortesemente che qualcuno mi possa dare qualche soluzione a proposito.
Grazie.
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
lun 11 lug 2005 - 11:16
Ciao
prova così:
dr("DataOra") = System.DateTime.Now.ToString()
Vincenzo
Programmatore sbilenco :-D
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
lun 11 lug 2005 - 11:44
azz... come al solito le cose le capisco tardi...
ho estrapolato questo codice in c# (portarlo a vb.net non è difficile)
di una classettina che fa tutti sti lavoretti.
si presuppone che cn sia un oggetto IdbConnection valido e sql la stringa sql di select.
IDbCommand cm = new OleDbCommand(sql,(OleDbConnection)cn);
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = (OleDbCommand)cm;
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
cb.RefreshSchema();
da.DeleteCommand = cb.GetDeleteCommand();
da.InsertCommand = cb.GetInsertCommand();
da.UpdateCommand = cb.GetUpdateCommand();
DataSet ds = new DataSet()
da.FillSchema(ds,SchemaType.Source);
da.Fill (ds);
DataTable dt = ds.Tables["tua tabella"];
DataRow dr;
// per inserire una riga
dr = dt.NewRow();
// -- valorizzazioni
....
// aggiunta
dt.Rows.Add(dr);
// per modificare una letta
dr = dt.Rows[indexRow];
//-- modifiche
....
// cancellazione
dr.Delete();
// --inserimenti
da.Update(dt.Select(null,null,DataViewRowState.Added));
// -- aggiornamenti
da.Update(dt.Select(null,null,DataViewRowState.ModifiedCurrent));
// -- cancellazioni
da.Update(dt.Select(null,null,DataViewRowState.Deleted));
ds.AcceptChanges();
spero di non aver dimenticato nulla.
Ciao
Vincenzo
Programmatore sbilenco :-D
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 21 lug 2005 - 08:47
> OleDbDataAdapter da = new OleDbDataAdapter();
>
> da.SelectCommand = (OleDbCommand)cm;
> OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
ok
> cb.RefreshSchema();
Questo serve solo se hai cambiato la "select"
> da.DeleteCommand = cb.GetDeleteCommand();
> da.InsertCommand = cb.GetInsertCommand();
> da.UpdateCommand = cb.GetUpdateCommand();
Queste istruzioni invece non servono a niente.
Se si genera il dataadapoter con :
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
Il dataadapter contiene già tutti i riferimenti ed i command popolati.
> ds.AcceptChanges();
A meno che tu non abbia impostato il parametro di "non fare acceptchanges" questa cosa non serve a niente data dopo un
ds.Update(xxx)
perchè l'acceptchanges viene fatto automaticamente se l'update arriva a buon fine.
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 !