Newsgroup: it.comp.appl.access
Titolo: Ciclo Nidificato  ?

buonasera a tutti, non riesco ad impostare una condizione e vi chiedo una 
mano:
Ho una tabella cosi strutturata:
 DATA IDQ PADI NumPadi
01/01/10 Roma D 1
01/01/10 Roma P 1
01/01/10 Roma P 2
03/01/10 Roma D 1
03/01/10 Roma P 1
03/03/10 Roma D 1
03/03/10 Roma D 2
10/03/10 Roma D 3
11/03/10 Roma P 1
12/03/10 Roma P 1
13/03/10 Roma D 1
14/03/10 Roma D 2
03/01/10 Milano D 3
03/01/10 Milano D 4
03/01/10 Milano P 1
03/02/10 Milano D 1
13/02/10 Milano D 2
14/02/10 Milano P 1
14/02/10 Milano P 2
03/03/10 Milano D 1
10/03/10 Napoli D 1
ho il codice seguente che numera progressivamente il campo [numpadi] a 
seconda del valore [padi]
'*******************************************
Set db = CurrentDb
Set Cipro = db.OpenRecordset("Tab1")
'********************************************
  Dim NumPadi As Integer
 Y = 0
 ' -- INIZIO CICLO PER DISTINTE --
    Cipro.MoveFirst
     Do Until Cipro.EOF
            If Cipro.Padi = "D" Then
              Cipro.Edit
              Y = Y + 1
              Cipro.NumPadi = Y
              Cipro.Update
             Else
              Y = 0
             End If
               Cipro.MoveNext
     Loop
 ' -- INIZIO CICLO PER PACCHI --
        Cipro.MoveFirst
      Do Until Cipro.EOF
            If Cipro.Padi = "P" Then
              Cipro.Edit
              Y = Y + 1
              Cipro.NumPadi = Y
              Cipro.Update
             Else
              Y = 0
             End If
                       Cipro.MoveNext
     Loop
        MsgBox "Finito"
End Sub
funziona (anche se non è il massimo della programmazione) ma mi sono accorto 
cha tra il numerare l'ultima città dell'elenco (esempio ROMA) e la prima 
successiva (esempio MILANO), avendo la stessa lettera nel campo [padi], mi 
continua la numerazione, mentre io vorrei ripartire da zero oltre 
all'interruzione del campo [padi] anche ad ogni cambio città; l'ordine deve 
rimanere in base alla data.
penso che bisogna integrare il codice sopra  con un'altra condizione.
mi date una mano ?
Grazie


La famosa rottura di livello
Devi semplicemente utilizzare un confronto con un valore previous del tipo
Dim strPrecedente
strPrecedente=''
  Y = 0
  ' -- INIZIO CICLO PER DISTINTE --
     Cipro.MoveFirst
      Do Until Cipro.EOF
             If Cipro.Padi<>  strPrecedente Then	Y=0
               Cipro.Edit
               Y = Y + 1
               Cipro.NumPadi = Y
               Cipro.Update
		strPrecedente = Cipro.Padi
                Cipro.MoveNext
      Loop
Ciao
Daniele

"OneEDP" <OneEDP@antispam> ha scritto nel messaggio 
news:4ba26651$0$1143$4faf...@reader1.news.tin.it...

ciao ho provato la numerazione D e P la fa correttamente ma al cambio citta 
prosegue la numerazione ma il risultato è questo :
'*******************************************
Set db = CurrentDb
Set Cipro = db.OpenRecordset("Tab1")
'********************************************
  Dim NumPadi As Integer
  Dim strPrecedente As String
  strPrecedente = ""
  Y = 0
  ' -- INIZIO CICLO PER DISTINTE --
     Cipro.MoveFirst
      Do Until Cipro.EOF
             If Cipro.Padi <> strPrecedente Then Y = 0
               Cipro.Edit
               Y = Y + 1
               Cipro.NumPadi = Y
               Cipro.Update
               strPrecedente = Cipro.Padi
               Cipro.MoveNext
      Loop
        MsgBox "Finito"
End Sub
....
   ID DATA IDQ PADI NumPadi
      11 13/03/2010 Roma D 1
      12 14/03/2010 Roma D 2
      13 03/01/2010 Milano D 3
      14 03/01/2010 Milano D 4
..


Allora concatena la stringa con città e padi

"OneEDP" <OneEDP@antispam> ha scritto nel messaggio 
news:4ba26f96$0$1143$4faf...@reader1.news.tin.it...

Grazie funziona, ma ci sono altre strade ? 


Come te la cavi con gli statement sql?