Newsgroup: it.comp.appl.access
Titolo: Contatore su maschere continue

Ciao a tutti,
Ho un fastidioso problema con un campo contatore su maschere continue che
non riesco a risolvere.
Premesso che il DefaultValue del contatore con la funzione DMax su
Form_Current funziona perfettamente il problema è che quando apro la
maschera in visualizzazione continua vorrei poter avere il numero
progressivo del contatore prima di dover selezionare qualunque campo della
riga del record corrente.
Qualcuno sa dirmi come poter fare?
Grazie a tutti.
Ciao,
Andrea
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Hai provato a scrivere la funzione DMax direttamente nella casella della
proprietà Valore predefinito della casella di testo invece che in un codice
VBA generato a fronte dell'evento "Su corrente" della maschera?
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ciao Roberto,
Grazie per l'interessamento ma ho provato più volte a inserirlo direttamente
nel valore predefinito della casella di testo ottenendo come risultato che
il DMax mi crea un contatore duplicato.
Solo all'apertura della maschera come primo record il contatore da un valore
esatto.
Appena vado ad inserire dei dati nel primo record, all'apertura della form,
si aggiunge, ovviamente, una riga vuota con il record successivo da inserire
che carica l'espressione per il contatore che però, non essendo ancora stato
salvato il record precedente, mi da lo stesso valore del primo record.
Come posso ovviare a questo inconveniente?
Grazie e ciao,


 wrote in message
news:62Z10Z15Z110Y1...@usenet.libero.it

Se quello che ti interessa è solamente visualizzare un Numero
progressivo indicatore della posizione record allora
inserisci una TextBox e nella proprietà origine inserisci
=GetRecNum()
Ovviamente dopo aver inserito questa funzione in un Modulo....!!!
Public Function GetRecNum() As Long
'==========================================================================
'Name      : GetRecNum()
'Purpose   :
'Author    : Maurizio Borrelli
'Web_Site  : 
http://digilander.iol.it/ik2zok/
'E.Mail    : 
ik2...@libero.it
'Date      : 01 febbraio 2002
'Called by :
'Calls     :
'Inputs    :
'Output    : Posizione assoluta del record corrente+1
'==========================================================================
  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
 
Ciao
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Avevo già provato la funzione da te proposta ma il mio contatore parte da 1
all'inizio di ogni anno e successivamente si incrementa ad ogni inserimento
di record successivi.
Ho notato che la tua funzione crea un contatore progressivo su record già
esistenti ma non mentre li sto inserendo in una maschera continua.
Hai idea di come posso risolvere il problema o come poter modificare la tua
funzione per fare ciò che serve a me?
Grazie,


 
Avevo capito male la questione....!
Allora quello che ti ha suggerito Roberto è l'unica soluzione
andrà adattata per l'azzeramento ad inizio anno, ma è ottima.
Per ovviare al difetto del DOPPIONE apri la Form vietando
l'aggiunta record, e per abilitarla inserisci un Pulsante
al quale fai modificare la proprietà di Form 
ME.AllowAdditions=True
Quindi simuli il Nuovo Records con :
    DoCmd.GoToRecord , , acNewRec
Su evento AfterUpdate resetti il valore della Proprietà
AllowAdditions.....!!!
Ciao.



Ho provato i tuoi suggerimenti e quelli di Roberto in tutti i modi che
conosco ma non sono riuscito a venirne a capo.
Provo ad esporvi con precisione la mia situazione.
Io apro una maschera basata su di una query in visualizzazione continua ed
in modalità aggiungi.
La maschera ha i seguenti campi:
-NOrdine (Valore predefinito "Contatore con funzione DMax funzionante")
-Data (Valore predefinito "Data di sistema")
-Cliente (Da selezionare da una casella combinata)
-Agente (Su selezione del cliente si aggiorna il campo aquisendo il nome da
una sottomaschera)
-Riferimento (Campo di testo)
-Consegna prevista (Campo di testo)
Il problema è che all'apertura della maschera la funzione DMax trova il
valore esatto e lo visualizza nella casella di testo ma appena seleziono il
Cliente si apre una nuova riga con tutti i suddetti campi per l'inserimento
di un nuovo record ed il DMax della nuova riga, ovviamente, trova lo stesso
valore della riga precedente (non essendo stato salvato il record
precedente).
Come dici tu il contatore crea un valore duplicato che per quanto io provi
con i tuoi suggerimenti non riesco ad evitarlo.
Tieni presente che la maschera deve essere di sola aggiunta dati e qualunque
funzione aggiuntiva deve avvenire solo su selezione o inserimento di dati
nei vari campi (Cliente-Riferimento-Consegna Prevista).
Forse è proprio questo il motivo per il quale non riesco a farla funzionare
con Me.AllowAdditions=True DoCmd.GoToRecord , , acNewRec etc.
L'unico sistema per farla funzionare fino ad ora è stato quello di dare al
contatore il DefaultValue via codice o su corrente o dopo aggiornamento del
campo cliente dando il problema che comunque il valore del NOrdine viene
visualizzato correttamente solo dopo l'aggiornamento del campo cliente o
l'inserimento di testo negli altri campi.
Io invece necessito di avere un NOrdine prima di inserire qualunque dato nel
record.
Spero di essere riuscito ad esporre il problema in maniera dettagliata nella
speranza che vi sia una soluzione e che qualcuno di voi mi aiuti ad
applicarla.
Grazie per la grande pazienza che avete.
Ciao,



Nessuno riesce proprio ad aiutarmi?
Non riesco a terminare il db proprio per questo problema.
Help me please!



Sono riuscito a risolvere il problema.
L'ho risolto semplicemente creando un campo di testo non associato "Val" al
quale, all'apertura della maschera, do il valore di =0 successivamente sulla
maschera su prima di inserire l'ho valorizzato nuovamente a =1 .
Fatto questo nel campo contatore creato con il DMax ho posto la condizione
"IIf([Val]=0;DMax....+1;DMax.....+2)" in modo che il primo record lo
conteggi in maniera normale aggiungendo 1 al valore trovato sulla tabella
mentre dal secondo record in poi, dove si duplicava il contatore visto che
il record precedente non era stato ancora salvato, il conteggio avviene
aggiungendo 2 evitando cosi il famoso duplicato del campo contatore.
Ringrazio comunque tutti per i vostri suggerimenti.
