Creare un contatore in una query

di il
4 risposte

Creare un contatore in una query

Spettabile Forum mi trovo davanti a un problema cui non riesco ad uscirne: ho una query di selezione di una tabella scadenza prodotti. Ho creato una subquery all'interno della query per creare un campo contatore con una stringa SQL di questo tipo:
NumIncr: (Select Count (*) FROM [tbl_scadenze] as Temp WHERE [Temp].[scadenza] < [tbl_scadenze].[scadenza])+1
Funziona bene solo che quando ho 2 date di scadenza uguali genera 2 numeri progressivi uguali. Vi faccio un esempio:
scadenza NumIncr
01/01/14 1
14/02/14 2
28/03/14 3
28/03/14 3
02/04/14 5
Vorrei che mi restituisse il numero corretto progressivo a prescindere dalla data di scadenza uguale, come posso fare per rivolvere il problema? Da premettere che non posso accorpare le date perché mi serve così la query e che deve essere ordinata in base alla scadenza in ordine crescente.
Spero di essermi spiegato bene… grazie in anticipo…

4 Risposte

  • Re: Creare un contatore in una query

    Perchè devi farlo in una Query...?

    Se devi visualizzare in un Report esiste un'impostazione nativa di un Controllo Non associato che genera INCREMENTO.

    Se devi visualizzare in una form, stessa cosa su CURRENT... si genera incremento.

    Questo rende il tutto più agevole, anche perchè un CONTATORE così di fatto non serve a nulla nel senso che non avrà mai la stessa sequenza(basta pensare se aggiungi o togli Records... quello che adesso è il 3° dopo una cancellazione sarà 2...) se non come progressivo di VISUALIZZAZIONE.
  • Re: Creare un contatore in una query

    Grazie alex per la risposta... comunque so che sul report è possibile farlo ma mi serve nella query per poi visualizzarlo in maschera. In ogni caso è possibile creare il contatore in una query con duplicati? o ci devo rinunciare?
    grazie ancora
  • Re: Creare un contatore in una query

    Tutto è possibile, ma in questo caso è SBAGLIATO tecnicamente, e per renderlo funzionale il rischio è rallentare moltissimo il processo.

    Per questo ti suggerivo di farlo nella FORM e non nella query...
    Se metti un Controllo non associato nella Form, e nella sua Origine Controllo inserisci:
    =GetRecNum()
    e poi vai a scrivere questa Funzione in un Modulo ottieni quello che hai chiesto:
    
    Public Function GetRecNum() As Long
        On Error GoTo erh
        With CodeContextObject.RecordsetClone
            If Not (.BOF And .EOF) Then
                .Bookmark = CodeContextObject.Bookmark
                GetRecNum = .AbsolutePosition + 1
            End If
        End With
    ext:
        Exit Function
    
    erh:
        GetRecNum = 0
    End Function
  • Re: Creare un contatore in una query

    GRAZIE ALEX HA FUNZIONATO ALLA GRANDE..
    SCUSA SE RISPONDO SOLO ADESSO MA SONO STATO FUORI PER LAVORO
    GRAZIE ANCORA
Devi accedere o registrarti per scrivere nel forum
4 risposte