8 messaggi dal 09 ottobre 2003
Ciao a tutti. Sto realizzando un log di sessione, ma ho un problema. Io utilizzo un DataSet tipizzato (SESSIONI) all'interno del quale ci sono 3 tabelle: UTENTI, SESSIONI e VISITE. UTENTI e VISITE sono in relazione 1 a 1, mentre utenti e sessioni 1 a molti. Quando un utente sicollega ha di default lo UserId "ANONIMO". Vado a creare una nuova sessione nell'apposita tabella del DataSet, insieme a una nuova visita. E fin qui tutto a posto. Il problema ce l'ho quando devo fare l'update delle sessioni, cioè, aggiungere il tempo di connessione e altre cose nel momento in cui l'utente si muove all'interno del sito da una pag all'altra. Una volta fatto il caricamento del file XML, non so perché, quando effettuo l'update di un record nella tabella delle sessioni (cioè, ricerco il record in base all'userID e al sessionID e faccio l'update) al momento di scrivere mi scribve il file con il record duplicato e, ovviamente mi da un errore di Costraint sul dataset. ecco le linee di codice interessate:

Private Sub AggiornaVisite(ByVal Session As HttpSessionState, ByVal Request As HttpRequest, ByVal Sito As SiteStruc)
Dim dr As SESSIONI.VISITERow = DSSessioni.VISITE.NewRow
Dim RowNum As Integer
DSSessioni.VISITE.DefaultView.Sort = "USERID"


If Not DSSessioni.VISITE.DefaultView.Find(UserId) = -1 Then
RowNum = DSSessioni.VISITE.DefaultView.Find(UserId)
dr = DSSessioni.VISITE.Rows(RowNum)
dr.BeginEdit()
dr.TOTVISITE += 1
dr.ULTIMAVISITA = dr.QUESTAVISITA
dr.QUESTAVISITA = Now
dr.EndEdit()
Else
dr.USERID = UserId
dr.TOTVISITE = 1
dr.PRIMAVISITA = Now
dr.QUESTAVISITA = Now
DSSessioni.VISITE.Rows.Add(dr)
End If

VisitNo = dr.TOTVISITE
dr = Nothing
End Sub

Grazie delle eventuali risposte

Marcos
Ma, dupplicato con i valori vecchi e nuovi?
Come lo salvi l'xml? Usi il formato DiffGram?

Ciao

Il mio blog
Homepage
8 messaggi dal 09 ottobre 2003
Chiedo venia, ma a furia di fare straordinari mi sono rinc...nito :-( :-) . Guarda qui:

Private Sub AggiornaVisite(ByVal Session As HttpSessionState, ByVal Request As HttpRequest, ByVal Sito As SiteStruc)
********Dim dr As SESSIONI.VISITERow = DSSessioni.VISITE.NewRow*********
Dim RowNum As Integer
DSSessioni.VISITE.DefaultView.Sort = "USERID"

La riga in evidenza crea SEMPRE un record nuovo nel dataset. Ecco perché li duplicava. Ho sostituito il codice con:

Private Sub AggiornaVisite(ByVal Session As HttpSessionState, ByVal Request As HttpRequest, ByVal Sito As SiteStruc)
********Dim dr As SESSIONI.VISITERow*******
Dim RowNum As Integer
DSSessioni.VISITE.DefaultView.Sort = "USERID"


If Not DSSessioni.VISITE.DefaultView.Find(UserId) = -1 Then
****** RowNum = DSSessioni.VISITE.DefaultView.Find(UserId) *****
dr = DSSessioni.VISITE.Rows(RowNum)
dr.BeginEdit()
dr.TOTVISITE += 1
dr.ULTIMAVISITA = dr.QUESTAVISITA
dr.QUESTAVISITA = Now
dr.EndEdit()
Else
******* dr = DSSessioni.VISITE.NewRow*********
dr.USERID = UserId
dr.TOTVISITE = 1
dr.PRIMAVISITA = Now
dr.QUESTAVISITA = Now
DSSessioni.VISITE.Rows.Add(dr)
End If

VisitNo = dr.TOTVISITE
dr = Nothing
End Sub

Ora funzica. Grazie lo stesso. Comunque ora ho un altro problema. Vedi post ;-)
Marcos

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.