Newsgroup: it.comp.appl.access
Titolo: accodamento con un campo progressivo

Premetto che postaì il problema un mesetto fa, ma non ottenni nulla di
soddisfacente, ho continuato il progetto sorvolando questa parte ma adesso
tutte le strade si sono chiuse su di essa.
sarò sintetico:
ho una tbl contenente i codici degli articoli da ordinare al fornitore,
voglio accodarli alla tbl "ordini fornitore" insieme al n° d'ordine e il
numero di riga progressivo. Il problema è il progressivo: vorrei che mi
controllasse la tbl of e se questa non contiene nessun record di tale ordine
inizziasse ad accodare 1 2 3 ..., se invece è un' ordine in preparazione con
già delle righe inserite continuasse a contare.
Ho trovato sul SC un esempio, ma faccio molta fatica ad interpretarlo per il
mio caso.
Grazie dell'attenzione
Colink

 ha scritto nel
messaggio news:8MgTa.2405$Df5....@news1.tin.it...

Se i due campi N_Ordine e N_Riga sono separati, per avere il N° progressivo
di riga all'interno di un N° ordine puoi usare la funzione DMax in questo
modo:
NumRigaProg = Nz(Dmax("[N_Riga]","TabellaOrdFor","[N_Ordine]=" &
NumeroOrdine), 0) + 1)
Spero sia ciò che volevi sapere.
Ciao.


mi sto scapocciando
la formula mi convince, ma non convince access2K.
ho sostiruito le virgole con ; perchč da errore.
Il Dmax lo conosco ma non capisco come puoi mettere (dopo la seconda
virgola):
...    ,"[N_Ordine]=" & NumeroOrdine), 0) + 1)
me la spiegheresti?
mi saresti di immenso aiuto anche perchč presumo sia la soluzione corretta.
Grazie
Colink

 me la spiegheresti?
In pratica come parametro filtro per la funzione DMAX, passi una stringa che
sarà composta dalla prima parte tra doppi apici, & (operatore di
concatenamento) il contenuto della variabile (se usi VBA), oppure del
controllo della maschera come nella variante di cui sopra.
Fammi sapere come intendi operare.
Ciao.

 ha scritto nel messaggio
news:wjiTa.2856$Df5....@news1.tin.it...

vba lo conosco poco, è per questo che speravo di farlo mettendo la formula
nella query.
Domani mattina provo a studiare come fare con la mia colllega che ne conosce
di +.
Correggimi se sbaglio: devo fare un ciclo che scorra la tabella A e accodi
in B le tuple incrementando il contatore con la formula che mi hai indicato?
Provando a farlo nella query il risultato non riesco a farlo fungere, non
capisco come il Jet accodi i record. Infatti il risultato che ottengo è, per
ogni tupla, nel campo "riga" il massimo+1 su ogni record.
Ti ringrazio
Holla Colink
--
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ogni tupla, nel campo "riga" il massimo+1 su ogni record.
Credo sia xchè Access rende disponibili i record aggiunti tutti insieme,
dopo che si è confermata l'aggiunta del blocco di record.
Comunque il tutto si dovrebbe poter fare anche con una query impostata ad
hoc, ma se fai da codice, magari a scapito di un leggerissimo rallentamento
(le query sono ottimizzate), hai un maggiore controllo, ed in caso di
modifiche successive, queste risultano più semplici da implementare.
Ciao.

problema risolo. posto la soluzione per i posteri
-------------------------------------------------
Private Sub accoda_righe_Click()
    Dim stDocName As String
    stDocName = "zzzzz"
    DoCmd.RunMacro stDocName
Dim ordine As String
Dim codice As Long
Dim riga As Integer
Dim cod_tes As String
' SETTA LE TABELLE E IL DATABASE
Set db1 = CurrentDb
Set ord_for_testa = db1.OpenRecordset("ord_for_testa")
Set ORD_FOR_CORPO = db1.OpenRecordset("ord_for_corpo")
Set analizer_temp = db1.OpenRecordset("analizer_temp")
Set dati_ord_for_attivo = db1.OpenRecordset("dati_ord_for_attivo")
'INIZIALIZZA LE VARIABILI
analizer_temp.Index = "codice"
riga = 0
ordine = dati_ord_for_attivo!nordine
' ESEGUE LA SCANSIONE DELLA TABELLA analizer_temp
analizer_temp.Seek ">=", 0
If Not analizer_temp.NoMatch Then
 Do While Not analizer_temp.EOF
    riga = riga + 1
    cod_tes = analizer_temp!codice
 'POPOLA LA TABELLA ord_for_corpo
    ORD_FOR_CORPO.AddNew
    ORD_FOR_CORPO!ordine = ordine
    ORD_FOR_CORPO!riga = riga
    ORD_FOR_CORPO!cod_tes = cod_tes
    ORD_FOR_CORPO.Update
    analizer_temp.MoveNext
 Loop       'Se MoveNext ha dato EOF ricomincia
 End If
' APRE MASCHERA
DoCmd.OpenForm "ord_for_corpo", , , "[ordine] = ordine"
End Sub
-------------------------------------------------