9 messaggi dal 04 marzo 2002
Ho un recordset destinato a contenere una serie di record numerati progressivamente da parte di chi effettua il data entry. Devo verificare quali sono i numeri che l'operatore ha omesso.

Con una dichiarazione SQL che utilizza la funzione MAX() recupero - inserendola nella variabile maximo - il numero più elevato registrato.

Quindi utilizzo la seguente routine:

<%
For num = 1 to maximo
    if not RsCounter.EOF then
        if RsCounter("numero") <> num then
            response.write num & " - "   
        end if
        RsCounter.MoveNext
    end if
next
set RsCounter = Nothing
%>


Accade che una volta soddisfatta la condizione per la prima volta, individuato cioè il primo record "mancante", il sistema stampa tutta la numerazione progressiva data da num da quel punto fino a maximo. Insomma senza più verificare la condizione. Non riesco a capire dove sta l'errore o cosa fare per rimediare.
2.584 messaggi dal 14 maggio 2001
<%
For num = 1 to maximo
if not RsCounter.EOF then
if RsCounter("numero") <> num then
response.write num & " - "
else
RsCounter.MoveNext
End If
end if
next
set RsCounter = Nothing
%>

Il MoveNext devi farlo solo quando trovi la corrispondenza...
9 messaggi dal 04 marzo 2002
Grazie. Ma si comporta nella stessa maniera: stampa la prima occorrenza e poi prosegue da quel numero fino al massimo. E' logico quello che dici, accipicchia. Ma non funziona... Perché? Aiuto.
2.584 messaggi dal 14 maggio 2001
Cosa ti risponde con un debug di questo genere?

<%
For num = 1 to maximo
if not RsCounter.EOF then
if RsCounter("numero") <> num then
response.write num & " - " & RsCounter("numero") % "<br>"
else
RsCounter.MoveNext
End If
end if
next
set RsCounter = Nothing
%>
9 messaggi dal 04 marzo 2002
L'esito è questo (il record mancante è quello col numero 23):
23 - 24
65 - 64
66 - 64
67 - 64
68 - 64
69 - 64
70 - 64
...

Ma l'arcano è forse risolto dal fatto che mentre i record sono identificati con id univoci, la numerazione è invece inserita da chi fa data entry attraverso una form che controlla le duplicazioni di numero del record immesso "a mano" cercando di impedirle. Tale funzione però è stata attivata successivamente all'inizio del popolamento del database sicché figurano numeri duplicati (ci sono due 64, tanto per dire). Se cancello uno dei duplicati il risultato è:

23 - 24
189 - 190
463 - 465
464 - 465

Il guaio è che non posso cassare i numeri duplicati. E devo implementare nella routine una funzione di verifica... L'affare si complica! ( )

Modificato da epoeta il 19 gennaio 2006 16.26 -
Modificato da epoeta il 19 gennaio 2006 16.52 -
9 messaggi dal 04 marzo 2002
Ho risolto. Funziona. Grazie comunque!!!

<%
For num = 1 to maximo
if not RsCounter.EOF then
if RsCounter("numero") <> num then
if RsCounter("numero") = (num - 1) then
num = num - 1
RsCounter.MoveNext
else
response.write num & " - "
end if
else
RsCounter.MoveNext
End If
end if
next
set RsCounter = Nothing
%>

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.