Differenza tra due date

mercoledì 14 novembre 2012 - 23.32
Tag Elenco Tags  VB.NET

Zagor60 Profilo | Junior Member

Salve, volevo un suggerimento su come calcolare la differenza in giorni tra due date inserite in una dbgridview es.

riga data diff in giorni

1 01/08/2012
2 04/08/2012 5
3 05/08/2012 1
4 07/08/2012 2

come faccio a fare questo?


algraps Profilo | Junior Member

Ciao,
per fare questo puoi usare il seguente codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ti crei una colonna nella datagrid senza bindarla e nell'evento RowDataBound richiami il metodo :

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{

if(e.Row.RowType == DataControlRowType.DataRow)
{
// Display the company name in italics.
e.Row.Cells[1].Text = DetermineNumberofDays() ;

}

}
Al metodo naturalmente passerai le due date.

Fammi sapere
Ciao
A.G.

ridaria Profilo | Expert

per calcolare la differenza tra due date vb.net mette a disposizione la funzione:
dateDiff

ad essa basta passare:
1)l'unità in cui calcolare la differenza, e può essere il giorno, la settmana il mese etc...
cioè dirgli di calcolare la differenza in giorni settimane mesi ecc...
2) le due date tra cui calcolare la differenza.

DateDiff(DateInterval.Day, Now, secondDate)
Questa appena esposta restituisce la differenza in giorni (DateInterval.Day) tra la data corrente (Now) e un'altra data (secondDate).

Qui ulteriori nozioni:

http://msdn.microsoft.com/it-it/library/b5xbyt6f%28v=vs.80%29.aspx

CIAO




Riccardo D'Aria

Zagor60 Profilo | Junior Member

Salve,

forse ho posto male la domanda, il mio problema è come fare leggere la data sulla riga precedentee quella sulla currenterow nel database in vb.net

slt

Zagor60 Profilo | Junior Member

Salve,

forse ho posto male la domanda, il mio problema è come fare leggere la data sulla riga precedentee quella sulla currenterow nel database in vb.net

slt

ridaria Profilo | Expert


>forse ho posto male la domanda, il mio problema è come fare leggere
>la data sulla riga precedentee quella sulla currenterow nel database
>in vb.net

in lettura dal db lascia perdere il datareader non permette come il vecchio oggetto adodb di tornare indietre sul recordset a meno di archibugi che ignoro.

Popola la gridview

riesegui un loop sulla griglia appena popolata

su ogni riga corrente prelevi l'index di riga (rowIndex) e lo metti in una variabile di tipo Index;

leggi la data inserita in questa riga e la metti in una variabile di tipo date;

leggi la data della riga precedente utilizzando il rowIndex Corrente meno 1 e la metti in una variabile di tipo date;

esegui il dateDiff come visto nel post precedente;

scrivi la differenza ottenuta nella cella della riga corrente in cui vuoi inserire il dato.

Attento che sulla prima riga del loop la riga precedente non esiste :-)

CIAO

fammi sapere









Riccardo D'Aria

Zagor60 Profilo | Junior Member

Salve,

grazie per la risposta, hai un esempio simile in codice?
premetto che uso vb.net
Grazie anticipatamente

ridaria Profilo | Expert


>grazie per la risposta, hai un esempio simile in codice?
>premetto che uso vb.net
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>Grazie anticipatamente
Prego figurati

FAmmi sapere, se tutto ok chiudi il post cliccando su accetta :-)

CIAO




Riccardo D'Aria

Zagor60 Profilo | Junior Member

Salve,

il codice che mi hai posto è tutto ok, soltanto che all'ultima riga il programma legge la riga successiva che è vuota e mi dà errore.

c'è un modo pr risolvere questo problema?

ridaria Profilo | Expert

.........

OK allora modifica così il codice mettendo un controllo sul loop che impedisce di andare all'ultima riga:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


OK se va bene chiudi il post cliccando su Accetta


CIAO
Riccardo D'Aria

Zagor60 Profilo | Junior Member

buongiorno,

tutto funziona , però non capisco perchè per ogni id mi inserisce tutte le righe invece di ogni singola riga es.

id 1 12.20 12.30
id 1 12.30 12.40

id 2 12.20 12.30
id 2 12.30 12.40

io vorrei questo

id 1 12.20 12.30
id 2 12.30 12.40

saluti

ridaria Profilo | Expert

>buongiorno,
>
>tutto funziona , però non capisco perchè per ogni id mi inserisce
>tutte le righe invece di ogni singola riga es.
>
>id 1 12.20 12.30
>id 1 12.30 12.40

lo inserisce DUE volte vorrai dire

>
>id 2 12.20 12.30
>id 2 12.30 12.40
>
>io vorrei questo
>
>id 1 12.20 12.30
>id 2 12.30 12.40





Riccardo D'Aria

Zagor60 Profilo | Junior Member

SALVE

si esatto lo inserisce due volte per ogni id

slt

ridaria Profilo | Expert

>SALVE
>
>si esatto lo inserisce due volte per ogni id
>

posta il codice che usi per popolare la griglia.

CIAO

Riccardo D'Aria

Zagor60 Profilo | Junior Member

sl

conn.Open()
Dim commandString As String = "SELECT * FROM porto_dett_attività"

Dim myDataAdapter As New SqlDataAdapter(commandString, ConnessioneDatabase)
Dim myDataSet As New DataSet()

myDataAdapter.Fill(myDataSet, "porto_dett_attività")

'txtidnave.Text = TabClientiDataGridView.Rows(0).Cells("idnave").Value
Me.dgv.DataSource = myDataSet.Tables("porto_dett_attività").DefaultView

'Me.TabClientiDataGridView.Columns(0).Visible = True


conn.Close()


Ciao

ridaria Profilo | Expert

...... è una questione di scrittura dei dati nella griglia.



Verifica il codice il problema è di sicuro lì.


Ciao
Riccardo D'Aria

Zagor60 Profilo | Junior Member

ciao.

hai ragione il problema era nel codie.

Non riesco ad uscirne fuori, nel senso che faccio leggere la prima riga del dbgrid e tutto ok nella seconda dovrei leggere un record della prima riga e uno sulla seconda e nn ci riesco.
es.
for n=0 to...
if.... =0 then
data1= A
data2=A
else
if n>1 then
data1=A
data2=B
end if
end if
next

come dicevo la prima riga ok mentre negativo per la seconda

Mi puoi aiutare?

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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5