20 messaggi dal 24 luglio 2001
Ciao a tutti

Ho questa tabella:

Provincia | Stradale | Cap |

Con ad esempio questi campi

AOSTA011100
AOSTAI11010
AOSTAI11010
AOSTAI11013
AOSTAI11019
AOSTAII11020
AOSTAII11020
AOSTAII11020
AOSTAII11020
AOSTAII11023
AOSTAII11023
AOSTAII11024
AOSTAII11024
AOSTAII11024
AOSTAII11024
AOSTAII11025
AOSTAII11026
AOSTAII11026
AREZZOII52020
AREZZOII52026
AREZZOII52027
AREZZOII52027
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52031
AREZZOIII52032
AREZZOIII52032
AREZZOIII52032
AREZZOIII52032

Il mio problema è che devo avere una tabella del genere

Provincia | Stradale | Da Cap | A cap |

In cui se nella stessa provincia e nello stesso stradale vi sono più di 20 o multipli di 20 record bisogna creare una nuova riga nella tabella contenente il 'da cap' e il 'a cap' riferiti al gruppo di 20.
Ad esempio, riferendosi all'esempio sopra dovrei avere:

Provincia | Stradale | Da Cap | A cap |
AOSTA 0 11100 11100
AOSTA I 11010 11019
AOSTA II 11020 11026 'ESSENDO MINORE DI 20
AREZZO II 52020 52027
AREZZO III 52031 52032
AREZZO III 52032 52032 'SECONDA RIGA ESSENDO > DI 20

Sono una settimana che impazzisco.
Vi prego di aiutarmi

Grazie
Enrico
20 messaggi dal 24 luglio 2001
Dai ragazzi datemi un piccolo aiutino.
20 messaggi dal 24 luglio 2001
Ho provato con questo codice ma ho bisogno di aiuto perchè penso che la logica sia giusta ma di aver commesso qualche errore

<%
Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("fpdb/cap_cdb.mdb")

SQL = "select * from mia_tabella order by provincia ASC, cap ASC "
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, conn, 3, 3

provincia = ""
stradale = ""

do while not rs.EOF

' faccio un controllo che al primo ciclo sarà sicuramente vero
if (provincia <> rs("provincia")) or (stradale <> rs("stradale")) then

' questo secondo controllo ha lo scopo di creare un record nei cicli successivi
' al primo affinché vengano memorizzati anche i cap degli stradali con meno
' di 20 record o numeri non multipli di 20 come 3 se hai 23 record, 4 per 24,
' ecc una volta che si cambia provincia o stradale

if (provincia <> "") then
rs.MovePrev
cap2 = rs("cap2")
rs.MoveNext

objSQL = "select * from tabella2 order by provincia ASC "
set objrs = Server.CreateObject("ADODB.Recordset")
objrs.Open objSQL, conn, 3, 3

objrs.AddNew
objrs("provincia") = provincia
objrs("stradale") = stradale
objrs("cap1") = cap1
objrs("cap2") = cap2
objrs.Update
end if

count = 0
provincia = rs("provincia")
stradale = rs("stradale")
cap1 = rs("cap")
end if

' inizia il loop vero e proprio
count = count + 1

' controllo se sono arrivato a 20 record (o 40, 60, ecc.) per crearne
' uno nuovo nell'altra tabella
resto = count mod 20

if (resto = 0) then

cap2 = rs("cap2")

objSQL = "select * from tabella2 order by provincia ASC "
set objrs = Server.CreateObject("ADODB.Recordset")
objrs.Open objSQL, conn, 3, 3

objrs.AddNew
objrs("provincia") = provincia
objrs("stradale") = stradale
objrs("cap1") = cap1
objrs("cap2") = cap2
objrs.Update

end if

rs.MoveNext
cap1 = rs("cap1")
Loop

Rs.Close
Set Rs = Nothing
objrs.close
Set objrs = Nothing


Conn.Close
Set Conn = Nothing
%>


Vi prego datemi una mano

Grazie
Enrico

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.