Getdate() con dataset

mercoledì 06 settembre 2006 - 10.17

gab82 Profilo | Junior Member

ho questo problema:
strumenti:
db: sql server
prog: visual basic.net

in un programma faccio una query di inserimento e in un campo datetime voglio utilizzare la funzione di sql server getdate()

se io invece, per l'inserimento utilizzo il dataset, come faccio ad utilizzare tale funzione?

ciao

gab82 Profilo | Junior Member

cosi mi prende l'ora del pc in cui è in esecuzione il programma, mentre con getdate() l'ora del server.
altri metodi?

blood Profilo | Senior Member

scusa ma...i dati dove risiedono fisicamente??

anche se usi un dataset...e un data adapter...non puoi fare lo stesso una query sql personale con la funzione getdate() ??? ..non capisco..
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

Andy Profilo | Senior Member

>scusa ma...i dati dove risiedono fisicamente??
>
>anche se usi un dataset...e un data adapter...non puoi fare lo
>stesso una query sql personale con la funzione getdate() ???
>..non capisco..
>---------------
>Piscopo Paolo
>
>:: wD @ IRCnet :: .NET wannabe 8-)

Esatto..anche se uni dataset non cambia nulla perchè è una struttura locale..devi usare il command con una query o una store procedure su server..
Andy

bluland Profilo | Guru

si infatti dataset o altro e' uguale.

cmq potresti fare nel seguente modo:
aprire la tabella in design mode selezionare il campo data che ti interessa e mettere la proprieta 'default value' = getdate()

cosicche verra' inserita la data del server al momento dell'INSERT e non ci sara' neanche bisogno di richiamare tale campo nella query:

quindi per esempio se hai una tabella con i seguenti campi: campo1,campo2, campodata

la query sara' cosi:

INSERT INTO tabella(campo1,campo2) VALUES ('Valore1','Valore2')

saluti

ENzo

gab82 Profilo | Junior Member

già fatto ma non funziona perchè il dataset con il metodo addrow se un campo non lo inserisci lui mette null ma se mette null non prende il valore di default getdate()

bluland Profilo | Guru


Scusa e se fai cosi:
INSERT INTO tabella(campo1,campo2,campodata) VALUES ('Valore1','Valore2',getdate())

gab82 Profilo | Junior Member

allora non uso il dataset! e il dataadapter e SqlCommandBuilder ... o sbaglio? (Il plus del .net...)

bluland Profilo | Guru

non ho capito!!
puoi spiegarti meglio!

gab82 Profilo | Junior Member

Se io faccio:

m_DataRow = m_DataTable.NewRow

m_DataRow("campo1") = valore1
m_DataRow("campodataorainserimento") = dataattuale

m_DataTable.Rows.Add(m_DataRow)

in questo modo ho aggiunto una riga nel dataset in quella tabella

Con il Command Builder creo le istruzioni di aggiornamento

cmdBuilder = New SqlClient.SqlCommandBuilder(m_SqlDataAdapter)
m_SqlDataAdapter.InsertCommand = cmdBuilder.GetInsertCommand

apro una transazione
m_Transaction = cndb.BeginTransaction

Associo la transazione al SqlAdapter
m_SqlDataAdapter.InsertCommand.Transaction = m_Transaction

aggiorno il db con tutte le modifiche di insert update o delete
m_SqlDataAdapter.Update(m_DataSet, "TABELLA1")

salvo la transazione
m_Transaction.Commit()

facendo in questo modo il db lo modifico una sola volta in un colpo solo e non tengo transazioni aperte durante eventuali calcoli del mio programma (il plus dei nuovi dataset di .net)

il problema è che non riesci a fare:

m_DataRow("campodataorainserimento") = getdate()

blood Profilo | Senior Member

la devi associare ad un command ed eseguire un command.ExecuteNonQuery() nella quale gli fai fare la getdate() sul server SQL !!
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

bluland Profilo | Guru

si dovresti fare una cosa del genere:

dim query as string ="INSERT INTO tabella(campo1,campo2,campodata) VALUES ('Valore1','Valore2',getdate())"

dim cmd as new sqlcommand(query, connessione)

cmd.executenonquery()

saluti

ENzo

bluland Profilo | Guru

si dovresti fare una cosa del genere:

dim query as string ="INSERT INTO tabella(campo1,campo2,campodata) VALUES ('Valore1','Valore2',getdate())"

dim cmd as new sqlcommand(query, connessione)

cmd.executenonquery()

saluti

ENzo

gab82 Profilo | Junior Member

quello che dice Piscopo Paolo se non sbaglio è una select getdate() perchè se faccio l'insert non uso il dataset... e torniamo al discorso di prima.
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