Newsgroup: it.comp.appl.access
Titolo: Id numerici e autoincremento in sottomaschere.

Dopo aver dato un occhio al sito comune ho scaricato il file che
spiega il funzionamento dell'autoincremento negli ID numerici.
Vengo subito al punto, ho una maschera  che visualizza i dati del
cliente ed una sottomaschera correlata in formato tabella dati che
"riepiloga" tutte le pratiche a nome del singolo cliente.
Dovendo utilizzare un campo numerico con autoincremento nella
sottomaschera ho impostato il campo  valore predefinito come risultato
della funzione CalcolaIdnumerico(): 
Function CalcolaIdnumerico() As Long
  Dim RS As Recordset
 
    Set RS = CurrentDb.OpenRecordset("SELECT Pratiche.CodPratica FROM
Pratiche ORDER BY Pratiche.CodPratica;")
 
    If RS.EOF Then
          CalcolaIDnumerico = 1
    Else
          RS.MoveLast
          CalcolaIDnumerico = RS!CodPratica + 1
    End If
 
  RS.Close
  End Function  
Il problema è che una volta aperta la maschera, nella sottomaschera
correlata il primo valore mi viene presentato in maniera corretta, 
inserita una nuova pratica il valore della  successiva dovrebbe
incrementarsi ma cio' non avviene, il valore è ancora il primo
proposto.
Per farla breve credo che il problema risieda nel fatto che la tabella
Pratiche viene aggiornata solo alla chiusura della maschera. 
Spero che la mia domanda non sia banale, grazie per l'attenzione.
 
 

Nel lontato Tue, 22 Feb 2000 08:37:44 +0100 d.C., il simpatico Gomez
<mis2ndg...@ANTISPAMyahoo.com> ebbe a scrivere:

Non va bene un semplice 
CalcoloNumerico = (dmax("CodPratica","Pratiche")) +1? 
L'unico problema che ti si pone è alla prima pratica, dove dmax
dovrebbe restituirti un errore comunque inercettabile
if err.number = [NonMiRicodoMòCosìSuDuePiedi] then
 CalcoloNumerico = 1
else
 Msgobox err.number & vbnewline & err.desription
end if
 
Ciao
Basjlico

dovrebbe restituirti un errore comunque inercettabile
Il problema rimane poichè quando vado ad inserire una pratica nella
sottomaschera,  la tupla che comincio ad inserire contiene il
progressivo di pratica corretto, subito pero' mi viene proposto anche
il codice della pratica successiva (sbagliato perchè il calcolo
dovrebbe considerare anche la tupla che è in inserimento) che ha come
codice lo stesso della pratica in inserimento.
Grazie per l'attenzione.

 Pratiche viene aggiornata solo alla chiusura della maschera.
In tutto questo hai dimenticato di specificare *DOVE* hai messo la funzione
che ti calcola l'ID.
Ciao, Sib

dovrebbe restituirti un errore comunque inercettabile
C'e' sempre il buon vecchio nz
CalcoloNumerico = nz(dmax("CodPratica","Pratiche"),0) +1
 
--
Lorenzo Coronati
--
<<Nessuno sa che questa affermazione e' vera>>
(John D. Barrow)
--

 Grazie per l'attenzione.
Prego, ma hai letto il mio post di prima? Forse no, quindi ti ripeto la
domanda (che ovviamente NON era retorica NE' critica)
DOVE hai messo il codice o la formula che ti calcola l'ID?
Ciao, Sib


Sorry, non ho capito una mazza. Che è la tupla?
Ciao
Basjlico

La TUPLA??! Che e' la tupla?
E' come una ennupla, però più fica!
Antonio

che ti calcola l'ID.
La funzione è stata messa come valore predefinito del campo CodPratica
nella sottomaschera, tale campo ha come Origine controllo l'omonimo
campo nella tabella Pratiche.
Grazie per l'attenzione

DOVE hai messo il codice o la formula che ti calcola l'ID?
No, l'ho letto adesso dopo aver letto questo (li ho scaricati
insieme)....
La risposta l'ho postata in coda al tuo primo messaggio.
Grazie a tutti.
 

 DOVE hai messo il codice o la formula che ti calcola l'ID?
No, non l'avevo ancora letto, scusa.
1-Per nuova pratica intendo un nuovo record nella sottomaschera pratiche.
2-La funzione che calcola l'ID è messa come valore predefinito del campo
CodPratica
   nella sottomaschera Pratiche. Tale campo ha come origine controllo il
campo
   CodPratica  della tabella Pratiche.

 E' come una ennupla, però più fica!
Ah, ecco perchè analizzandola con la funzione SoundEx, mi suggerisce Topa...
;-)
--
Ciao, AntoGal
*************************************************
Home Page (area programmatori di VolFtp)
http://volftp.mondadori.com/italiani/galletta/
per scaricare un gioco di DAMA ITALIANA
*************************************************



Ecco l'errore (è il motivo per cui ti ho fatto la domanda)
Mettendo il codice che calcola l'ID nella sottomaschera questo ti incrementa
di 1 l'ID ogni volta che aggiungi un record alla sottomaschera.
Il codice che calcola l'ID deve stare solo nella maschera principale, il
valore predefinito dell'ID della sottomaschera deve essere il valore
corrente dell'ID della maschera principale.
Ciao, Sib

 corrente dell'ID della maschera principale.
Ho risolto il problema mettendo la chiamata alla funzione Ricalcola dopo
l'Evento aggiornamento del campo descrizione nella sottomaschera.
La funzione Ricalcola()  contiene solo una riga di codice.
Me.Recalc
Grazie mille a tutti!