Riporto come ho risolto così, per chi come me cercava una soluzione teorica, potrà avere un indicazione sul da farsi.
1) Senza scendere nella caratteristiche tecniche del DB che contiene il forum supponiamo che, suddetto DB, contenga almeno le Tabelle 'Utenti' e 'Messaggi', la prima contiene i dati degli utenti e la seconda i messaggi del forum.
2) Diamo anche per scontato che la tabella 'Messaggi' contenga i Campi 'ID', un campo univoco che identifica il messaggio, e 'Data', contenente la data del messaggio in formato data/ora; e che la Tabella 'Utenti' contenga almeno i campi 'UltimaVisita', in formato data/ora, 'UltimaAzione', sempre data/ora, e 'EccezioniNews' in formato 'memo'
3) Prima cosa da fare è aggiungere in ogni pagina una query UPDATE per aggiornare il campo 'UltimaAzione' alla data/ora attuale.
4) Aggiungere, al momento del primo login dell'utente, due Update:
4.1) La prima per passare il valore del campo 'UltimaAzione' al campo 'UltimaVisita'.
4.2) La seconda per impostare il campo 'EccezioniNews' a '_'
5) Al momento della lettura di una discussione o di un messaggio con il campo 'Data' > del campo 'UltimaVisita' dell'utente si controlla se una stringa del formato _IDDiscussione:IDMessaggio_ è presente nel campo 'EccezioniNews' dell'utente. Se non lo è si aggiunge suddetta stringa a 'EccezioniNews'. Se invece la stringa è presente si sostituisce con la stringa _IDDiscussione:IDUltimoMessaggio_
6) A questo punto potremmo determinare se in una discussione è presente un nuovo messaggio seguendo questa prassi:
6.1) Controllando se l'ultimo post ha il camo 'Data' superiore al campo 'UltimaVisita' dell' utente.
Se 'no' la discussione non ha nuovi messaggi
6.2) Se 'si' cercando l'ID della discussione nel campo 'EccezioniNews' dell'Utente con formato _IDDiscussione:
Se 'no' la discussione non ha nuovi messaggi
6.3) Se 'si' recuperiamo la stringa in formato _IDDiscussione:IDPost_ nel campo 'EccezioniNews' e ricaviamo il valore dell'ID del post tramite un istr/mid o un'espressione regolare.
6.4) Confrontiamo sell'ID dell'ultimo messaggio della discussione è superiore all'ID ricavato dalla stringa.
Se 'no' la discussione non ha nuovi messaggi.
6.5) La discussione ha nuovi messaggi.
Ammetto che è un metodo molto 'artificioso' ma è il metodo migliore che sono riuscito a creare. Inoltre è lungo da elencare ma in sostanza si traduce in poche righe di codice.
Allego, a titolo di esempio, la funzione che ho creato che restituisce l'icona che identifica la discussione in base alla presenza di nuovi messaggi e numero di post.
utLV contiene il valore 'UltimaVisita' dell'utente
utID contiene il valore 'ID' dell'utente
utNews contiene il valore 'EccezioniNews' dell'utente
alla funzione gli vengono passati:
ID del post da controllare (in questo caso l'ultimo della discussione)
PostData la data del Post da controllare (in questo caso l'ultimo della discussione)
IDAutore l'Id dell'utente che ha creato il post
NPost il numero dei post che la discussione contiene
IDTreadh l'ID della discussione
codice:
function get_icon(IDPost, PostData, IDAutore, NPost, IDTreadh)
dim iconstring, initEN, initEP, fineEP, IDEP
iconstring="folder"
if session("username")<>"" then
initEN = instr(utNews,"_" & IDTreadh & ":")
if initEN<1 then
if cdate(utLV)<cdate(postdata) and int(IDAutore)<>int(utID) then
iconstring=iconstring & "_new"
end if
else
initEP=instr(initEN,utNews,":")+1
fineEp=instr(initEP,utNews,"_")
IDEP=mid(utnews,initep,fineep-initep)
if int(IDEP)<int(IDPost) and int(IDAutore)<>int(utID) then
iconstring=iconstring & "_new"
end if
end if
end if
if int(NPost)>20 then
iconstring=iconstring & "_hot"
end if
iconstring=iconstring & ".gif"
get_icon=iconstring
end function
Spero di essermi riuscito a spiegare almeno la metà di quanto volevo
Ciauz