Ciao a tutti,
sono difronte a un problema per me gravoso, perchè mi sta bloccando totalmente su un lavoro, spero possiate darmi una mano voi perchè non so più che pesci pigliare...

Ho applicato, modificandolo per mie esigenze specifiche, uno script ASP di ordinamento random di un recordset che ho trovato in rete al seguente indirizzo:
http://www.aspcode.it/articoli/84_Re...omicamente.htm
(mi scuso se la pubblicazione di un link a un sito esterno va contro le regole del forum, ma in questo caso credo sia utile per farvi capire meglio dove ho messo mano io rispetto allo script originale...)

Questo il codice (modificato, ma funzionante) che sto utilizzando:

codice:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
Set rs = Server.CreateObject("adodb.recordset")
ConnStr = "Provider=Microsoft.Jet.Oledb.4.0;data source=" &_
  Server.MapPath("database/miodb.mdb") & ";"
rs.activeconnection = ConnStr
rs.Source = "SELECT IDcat FROM categorie" 'Seleziona gli ID delle categorie
rs.Open
arrID = rs.GetRows() ' Salva nell'array gli ID delle categorie
intRows = UBound(arrID,2) 'numero delle categorie, meno uno (0..N-1)
rs.Close
rs.Source = "SELECT IDcat, titolo, foto FROM categorie"
rs.CursorType = 0 ' adForwardOnly
rs.CursorLocation = 3 ' cursore lato client
rs.Open
Set rs.ActiveConnection = Nothing ' ci "stacchiamo" dalla sorgente dati%>

<% Set objDic = CreateObject("Scripting.Dictionary")

' Riempiamo il Dictionary con gli ID delle categorie
For i = 0 To intRows
  objDic.Add arrID(0,i), arrID(0,i)
Next
Randomize Timer

For intCurrentRow = 0 To intRows
  intRnd = Int((intRows + 1) * RND) + 1 'ID random
  boolExists = objDic.Exists(intRnd)
  If boolExists Then ' se L'ID esiste nel Dictionary...
    rs.Move intRnd - 1, 1 ' ...muoviamo il puntatore sulla riga bersaglio...
    objDic.Remove(intRnd) ' ...e cancelliamo l'ID dal Dictionary
    ' Mostriamo il record selezionato casualmente%>
    
	  <%
		xml = xml & "<track>"
		xml = xml & "<title><![CDATA[" & rs("titolo") & "]]></title>"
		xml = xml & "<image><![CDATA[" & rs("foto") & "]]></image>"
		xml = xml & "</track>"
	  %>	  
	  
    <%
  Else
    intCurrentRow = intCurrentRow - 1 ' se l'ID non esiste, ripetiamo lo stesso ciclo FOR
  End If
Next

xml = xml & "</trackList></playlist>"

xml = "<playlist version=""1"" xmlns=""http://xspf.org/ns/0/""><title>Il mio elenco</title><info>http:/xspf.org/xspf-v1.html</info><trackList>" & xml

response.ContentType = "text/xml"
response.write xml

rs.Close : Set RS = Nothing
Set objDic = Nothing
%>
Come vedete, tale script, oltre ad estrarre dal DB un recordset da randomizzare, ha il compito di prendere i dati estratti e formattarli in modo da generare un output di tipo XML (come da altro esempio trovato in rete).

Queste 2 funzionalità funzionano correttamente, fino a quando non aggiungo un nuovo record al mio DB e la pagina ASP/XML non mi visualizza più niente, anzi, si pianta. Ho notato che quando aggiungo (manualmente o tramite apposito manager) un nuovo record, questo assume un ID che non è consecutivo a quelli dei records di esempio già presenti (6 records, con ID dall'1 al 6), questo per effetto di precedenti test di inserimento/cancellazione.
Quindi, nel caso specifico, l'ID del nuovo record non sarà 7 ma, ad esempio, 25.

Il risultato, come detto, è che la pagina ASP atta a restituirmi i dati che mi servono non si carica, pagina bianca e tutto piantato...

Se invece cancello il record appena creato, tutto rifunziona magicamente, questo mi fa pensare che il nuovo ID (non consecutivo agli altri 6) non piaccia allo script.

Cosa devo fare? C'è qualcuno tra voi che può aiutarmi, magari mettendo mano al codice o al DB, per risolvere questo problema?

Vi ringrazio molto per l'aiuto e la disponibilità, spero di ricevere presto delle risposte!



t.