Newsgroup: it.comp.appl.access
Titolo: Campo contatore con parametro

forse con l'oggetto non c'ho preso cmq salve,
tempo fa ho letto un post su come implementare un campo contatore "manuale"
impostando una funzione come valore predefinito di una txtbox.
A me servirebbe qualcosa di simile, ma ho bisogno che il valore venga
incrementato solo se si incrementa una data in un altra txtbox, altrimenti
deve restare uguale all'ultimo record di quel recordset.
Siccome faccio fatica a capirlo anch'io, mi spiego con un esempio:
tabls:
Anagrafico
    idanaPK
    cognome
    nome
    etc...
Note
    idnotaPK
    idanaFK
    numnota
    datanota
    testonota
Nella sottomaschera Note posso avere più note nello stesso giorno per lo
stesso "idana"
Il mio contatore dovrebbe incrementare di 1 solo quando inserisco una nota
in una data successiva all'ultima registrata per ciascun "idana".
E' molto complesso?
Ciao e grazie.

"knives" <x@x.x> ha scritto nel messaggio
news:oJI5c.55143$z23.2...@news3.tin.it...

Nella textBoc associata al campo contatore alla proprietà ValorePredefinito
inserisci :
=CalCprogr()
Nel codice della Form inserisci una Funzione Chiamata :
Private Function CalCprogr() as Long
    dim lastDate ad Date
    dim lngPrg as Long
    'Recupera l'Ultima data inserita, se nonpresente forza un anno assurdo
    lastDate=Nz(Dmax("[DataNota]","Note"),"01/01/1900")
    'Recupera il Max Counter
    lngPrg=Nz(Dmax("[idnotaPK],"Note,1)
    'Se l'Ultima data è diversa dalla data inserita ora
    'incrementa il contatore
    If lastDate<>Me.DataNota then lngPrg=lngPrg+1
    CalCprogr=lngPrg
End Function
Speriamo che vada...!
@Alex.


Ciao, Alex
ho provato la function ma nel controllo mi restituisce #errore e proprio non
capisco quale sia il probl.
cmq ci sto giocando un pņ!
:)

"knives" <x@x.x> ha scritto nel messaggio
news:ht36c.60254$z23.2...@news3.tin.it...

La Function č di tipo PRIVATE non l'hai messa in un Modulo...??
Va nella Form in cui hai il Controllo, altrimenti devi modificarla
in PUBLIC.
Ciao.
@Alex.


Ciao Alex,
ti rimando il codice da me adattato:
Private Function CalCprogr() As Long
    Dim lastDate As Date
    Dim lngPrg As Long
    'Recupera l'Ultima data inserita, se nonpresente forza un anno assurdo
    lastDate = Nz(DMax("[Data]", M_Richieste_SubF), "01/01/1900") 'dove data
è il nome del controllo txtbox e m_richieste_subf è la form
    'Recupera il Max Counter
    lngPrg = Nz(DMax("[Num]", M_Richieste_SubF), 1) 'dove num è il campo da
incrementare
    'Se l'Ultima data è diversa dalla data inserita ora
    'incrementa il contatore
    If lastDate <> Me.Data Then lngPrg = lngPrg + 1
    CalCprogr = lngPrg
End Function
Nella riga del nuovo record mi da #errore... non so!
cmq è un problema che posso risolvere con calma... piuttosto, mi chiariresti
cosa fa e come funziona l'operatore Nz?
ciao e grazie.
Scusatemi tutti se non apro un'altro 3d.

"knives" <x@x.x> ha scritto nel messaggio
news:2Bn6c.80314$O31.3...@news4.tin.it...

Prova con il Debug a posizionarti su lngPrg e vedere cosa
restituisce lastDate......!
NZ non fà altro che, in caso di Valore NULL nella prima parte
imporre la 2° condizione.
Credo ci siano difformità di formattazione da qualche parte, ma
non sò come hai gestito le date e il progressivo.....!
Che Formato hanno.....??
@Alex.

 ha scritto nel messaggio
news:c3d2d2$nue$1...@lacerta.tiscalinet.it...

In tabella Num è Numerico "intero" e Data è Data/Ora "data in cifre"
Nella form Num è Generico e Data è Data in Cifre 00/00/0000