Newsgroup: it.comp.appl.access
Titolo: contatore un pò particolare

ciao a tutti,
ho un db di magazzino basato su una tabella che contiene circa 9000 articoli
e che viene di volta in volta ricostruita in base al contenuto di file
esterni che contengono quantità e altro.
questa tabella tra i vari campi hanno in particolare i campi "CATEGORIA" e
"SOTTOCATEGORIA" che si ripetono in base alla categoria di ogni articolo.
avrei bisogno di un contatore di categoriache si azzeri ogni qual volta
inizi una nuova categoria, per praticità faccio un esempio:
EAN                    DESCRIZIONE    CATEGORIA    SOTTOCATEGORIA CONTATORE
234234324234    forbici                    casalingo             accessori
1
321312339824    macchina                giocattolo            macchine
1
324324342218    coltello                    casalingo            accessori
2
la numerazione dovrà essere basata in base alla categoria+sottocategoria e
tenendo presente l'ordine crescente dei codici.
si può fare na pazzia simile?
grazie a chiunque risponderà...
Nicola

 ha scritto nel messaggio
news:UvtVa.40825$Za4.1...@news2.tin.it...

Se devi attribuire un progressivo per la sottocategoria (ad es. PRG_SG), da
VBA puoi usare la funzione DMAX in unione alla funzione NZ:
TuaVariabileProg = Nz(DMax("[PRG_SG]", "TuaTabella", "[CATEGORIA]='" &
VariabileCategoria & "' And [SOTTOCATEGORIA]='" & VariabileSottocategoria &
"'"), 0) + 1
Dove se VariabileCategoria e VariabileSottocategoria corrispondono a dei
controlli in una maschera, devi sostituirle con il loro nome secondo
sintassi (ad es. Me![MioControllo] oppure
Forms![NomeMaschera]![MioControllo]).
Ciao.

 ha scritto nel messaggio
news:5D1Wa.2186$an6....@news1.tin.it...

ok provato e funziona perfettamente, il problema però e di far calcolare
tutti i valori all'apertura della maschera e non durante lo scorrimento
degli articoli. tali valori infatti andranno ad indicare la posizione
dell'articolo nella categoria, dovranno quindi essere già presenti in
tabella...
grazie ancora
Nicola

 ha scritto nel messaggio
news:UQxWa.12840$cl3.3...@news2.tin.it...

Puoi spiegare + in dettaglio come funziona o dovrebbe funzionare la tua
procedura?
Xchè potrebbero esserci altre strade.

 ha scritto nel messaggio
news:oxzWa.13425$cl3.4...@news2.tin.it...

In pratica il db ha un unica tabella con n articoli suddivisi per categoria
e sottocategoria.
quello che voglio ottenere è quanto segue:
a seguito di una ricerca per codice tramite una textbox non associata mi
viene filtrato un solo articolo e sono impossibilitato a proseguire avanti o
indietro. Per ripristinare devo riscegliere la categoria e sottocategoria di
appartenenza dalle 2 caselle di riepilogo che le contengono.
Vorrei poter proseguire a scorrere i dati partendo dall'articolo cercato
rimuovendo il filtro dovuto alla query e restando sempre nella stessa
sottocategoria.
La mia idea è un po macchinosa ma è l'unica che mi viene in mente per il
momento e cioè di sfruttare la posizione dell'articolo cercato per poter
proseguire con i successivi.
Grazie per la risposta
Nicola

 > > > > inizi una nuova categoria, ...
[CUT]
... il problema però e di far calcolare

Quindi il progressivo all'interno di Categoria/sottocategoria, ti servirebbe
per selezionare singolarmente i singoli record ed andare avanti ed indietro
all'interno di una maschera, una volta individuata la categoria/sottocat. di
un determinato articolo?
Forse puoi provare a farne a meno:
- Hai la tua casella di testo per cercare il codice articolo + 2 caselle
combinate
  per Categoria e Sottocategoria + un bottone per cercare il primo articolo
di una nuova
  Categoria/Sottocategoria
- Inserisci alcuni caratteri del codice articolo
- Sull'evento 'Dopo aggiornamento' della casella avrai inserito questo
codice (non l'ho provato)
Me.OrderBy = ""
Me.OrderByOn = False
If Not IsNull(Me.[CasellaCodArticolo]) Then
   Me.Filter = "[CodArticolo] like ""*" & Me.[CasellaCodArticolo] & "*"""
   Me.FilterOn = True
   Me.[CasellaCodArticolo]=Null
   If Me.Recordset.RecordCount = 0 Then
            MsgBox ("Nessun codice rispondente alla ricerca, cambiare i
parametri !")
            Me.Filter = ""
            Me.FilterOn = False
   Else
            Dim AppoCodArt As String
            AppoCodArt = Me.[CodArticolo]
            Me.[CasellaCategoria] = Me.[Categoria]
            Me.[CasellaSottoCateg] = Me.[Sottocategoria]
            Me.Filter = "[Categoria]='" & Me.CasellaCategoria & "' And
[SottoCategoria]='" & _
                                 Me.[CasellaSottoCateg] & "'"
            Me.OrderBy = "[Categoria],[Sottocategoria],[CodArticolo]"
            Me.OrderByOn = True
            Me.Recordset.FindFirst "[CodArticolo]='" & AppoCodArt & "'"
   End If
Else
   Me.Filter = ""
   Me.FilterOn = False
   MsgBox ("Filtro eliminato!")
End if
- Se vari la categoria o sottocategoria e premi il bottone, nella proprietà
d'evento 'Su click' del
  bottone avrai mess questo codice:
Dim strSQL As string
strSQL = ""
If Not IsNull(Me.[CasellaCategoria]) Then
   strSQL = "[Categoria]='" & Me.CasellaCategoria & "'"
   If Not IsNull(Me.[CasellaSottoCateg]) Then
          strSQL = strSQL & " And [SottoCategoria]='" &
Me.[CasellaSottoCateg] & "'"
   End If
End If
If strSQL <> "" Then
   Me.Filter = strSQL
   Me.FilterOn = True
   If Me.Recordset.RecordCount = 0 Then
            MsgBox ("Nessun articolo rispondente alla ricerca, cambiare i
parametri !")
            Me.OrderBy = ""
            Me.OrderByOn = False
            Me.Filter = ""
            Me.FilterOn = False
   Else
            Me.OrderBy = "[Categoria],[Sottocategoria],[CodArticolo]"
            Me.OrderByOn = True
   End If
Else
   Me.OrderBy = ""
   Me.OrderByOn = False
   Me.Filter = ""
   Me.FilterOn = False
   MsgBox ("Filtro eliminato!")
End if
-------------------------------------------------
In questo modo, se cerchi un codice articolo, ti cerca gli articoli
corrispondenti e si posiziona sul primo, quindi prende nota del codice
articolo, categoria e sottocat., li filtra per categoria e sottocategoria,
li ordina per categoria/sottocategoria/codice articolo, si posiziona sul
record dell'articolo su cui si era già posizionato, in maniera da farti
andare avanti ed indietro nei record.
Se invece cambi categoria/sottocateg., filtra i record, si posiziona sul
primo trovato, e poi come sopra.
Spero non ci siano troppi errori nel codice.
Ciao.

 ha scritto nel messaggio
news:jVBWa.14024$cl3.4...@news2.tin.it...

grazie 1000 davvero, vado a provare e ti faccio sapere
Nicola