Data e Ora (formato esteso) In Database (access)

lunedì 11 luglio 2005 - 10.02

Ikin Profilo | Newbie

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

Ciao

prova così:

dr("DataOra") = System.DateTime.Now.ToString()

Vincenzo
Programmatore sbilenco :-D

ysdemarc Profilo | Expert

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

> 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.


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