Newsgroup: it.comp.appl.access
Titolo: Non riesco a numerare progressivamente dei record in maschere continue

Ho utilizzato la FAQ n. 3.106 (Forms) del SitoComune per numerare 
progressivamente dei record in maschere continue;
ho inserito e salvato un modulo CopiaIncollando lo script dalla FAQ:
'inizio modulo
Public Function GetRecNum() As Long
'==========================================================================
'Name      : GetRecNum()
'Purpose   :
'Author    : Maurizio Borrelli
'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
'fine modulo
, e ho inserito una casella di testo non associata nella maschera 
inserendo la seguente formula: =GetRecNum()
Ne ricevo però sempre lo stesso errore:
L'oggetto non contiene l'oggetto di automazione 'GetRecNum'.
Si è cercato di eseguire una routine di Visual Basic per impostare una 
proprietà o un metodo di un oggetto che non è disponibile per le 
operazioni di automazione nel componente.
Dove sbaglio?
ciao
Peppe

 Peppe
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel 
messaggio news:9LEPe.31950$HM1.9...@twister1.libero.it...

Dico una stupidata assurda: il campo che hai utilizzato per richiamare la 
procedura, l'hai creato ex-novo o hai fatto il copia-incolla da una altro 
campo?
Spiego: utilizzando capi non legati per inserire formule o richiamare 
procedure, spesso è capitato (per pigrizia) di fare un copia-incolla da un 
campo cha ha un contenuto simile per poi modificarlo. Risultato: il più 
delle volte, benché il contenuto fosse corretto, la visualizzazione del 
contenuto non era corretta.
Può essere?
Ciao, Fabio. 

 Può essere?
No, il campo l'ho creato ex novo.
ciao
Peppe

 ha scritto nel messaggio
news:yNCPe.17604$zs.1...@tornado.fastwebnet.it...

Se come sembrerebbe non riesci a far funzionare quanto pubblicato nel Sito
Comune nella FAQ 3.106, che però è sicuramente funzionante, vai sul Sito
Comune e nella Sezione Forms fai il download del database di esempi allegato
alla FAQ intitolata "3.28 Esempi di creazione ed utilizzo delle maschere in
Access 97".
Apri il database scaricato e seleziona e visualizza l'esempio che ha il
Topic intitolato Displying Line Numbers on SubForm Records.
Maggiori dettagli su come realizzare quanto visto in quell'esempio lo trovi
nel seguente link:
http://support.microsoft.com/default.aspx?id=120913


 Ciao, Fabio.


Forse ho trovato il motivo: c'è una nota nella FAQ:
"La funzione di cui sopra fa riferimento alla libreria Microsoft DAO 
quindi, se si usa una versione di Access successiva ad Access 97 occorre
aggiungere al database i riferimenti a tale libreria."
Come si aggiungono i riferimenti alla libreria Microsoft DAO?
ciao
Peppe

 ha scritto nel messaggio
news:WOFPe.17975$zs.1...@tornado.fastwebnet.it...

Apri un qualsiasi modulo, ad esempio quello in cui hai inserito la funzione
copiata dal Sito Comune, e dal menu Strumenti seleziona il comando
Riferimenti...
Nella finestra di dialogo che si apre cerca Microsoft DAO 3.6 Object Library
ed attiva lo "svirgolino" a sinistra del nome di tale libreria: sposta il
più in alto possibile tale riferimento nella lista dei riferimenti cliccando
sulla freccia verso l'alto contentua nella finestra di dialogo: chiudi la
finestra e chiusi il modulo.


Ho ricordato una cosa che spero possa indicare l'errore da correggere; ho 
provato ad usare il sistema proposto nelle FAQ del SC per creare un totale 
progressivo in una query, avendo però come risultato sempre 0; ho provato 
allora ad usare un altro sistema, e cioè quello indicato nell'altro post, 
che creava un progressivo in un campo non associato di una maschera; ho 
inserito la funzione nell'origine del campo dalla maschera in modalità 
maschera, e già prima di salvare le modifiche alla maschera il risultato era 
corretto; ho cancellato allora il modulo creato nel primo tentativo, e da 
quel momento ho ricevuto l'errore indicato, qualsiasi sistema provi ad usare 
:-(
Avrò creato un errore in qualche angolino del mio programma :-( perché i db 
di esempio funzionano tutti correttamente.
Spero possiate aiutarmi, perché ho l'impressione che si tratti di qualcosa 
fuori della mia portata.
ciao
Peppe 

 ha scritto nel messaggio
news:WGfQe.34323$F23.4...@twister2.libero.it...

Senza il daabase a disposizione o una sfera di cristallo è difficile darti
una mano.
E' possibile, come tu ipotizzi che nel tuo database ormai ci siano pezzi di
soluzioni diverse che si accavallano creando problemi, comunque ti ricordo
che molte delle soluzioni del Sito Comune fanno riferimento alla libreria
Microsoft DAO e che quindi non funzioneranno se non si aggiunge al databse i
riferimenti a tale libreria; naturalmente il problema non esiste per gli
esempi del Sito Comune che comunque hanno i riferimenti a tale libreria.


 esempi del Sito Comune che comunque hanno i riferimenti a tale libreria.
I "pezzi di soluzioni diverse" sono comunque solo dei moduli, che ho ormai 
cancellato; i riferimenti alla libreria DAO c'erano già; ne ho aumentato la 
priorità, come suggeritomi in altro post, ma senza alcun risultato.
ciao  Peppe 

Ho fatto una copia del programma, ho annullato ogni traccia dei vari 
tentativi effettuati finora, perfino il campo non associato nella maschera; 
ho poi riprovato col sistema "GetRecNum()" descritto nel post iniziale, e 
stavolta sono tornato ad avere sempre 0 come risultato.
Ho quindi modificato, nel modulo, la stringa
On Error GoTo erh
erh:
   GetRecNum = 0
cambiando il valore da assumere in caso di errore, ma il risultato rimane 0; 
se non altro stavolta non ho un errore :-)
I riferimenti al DAO ci sono, proverņ a smanettare ancora un pņ.
ciao
Peppe 

Giuseppe Monti ha scritto:
Alla fine ci sono riuscito eliminando dal modulo le stringhe:
     If Not (.BOF And .EOF) Then
     End If
Dai che chiudiamo sto thread: .BOF e .EOF sta a significare "prima del 
primo" e "dopo dell'ultimo" record, giusto? E perché ora funziona?
ciao
Peppe

 E perché ora funziona?
Così hai eliminato la verifica che il recordset origine del report sia
vuoto, verifica a quanto pare non funzionante scritta così in un report,
d'altra parte quella soluzione era stata testata in una maschera: ti ricordo
che il trattamento del recordset origine record di un report è molto diverso
da quello origine record di una maschera, infatti per una maschera esistono
eventi che non esistono per i report e viceversa (ad esempio evento "Su
corrente" ed evento "Su formattazione") e a quanto pare il settaggio delle
proprietà BOF e EOF non avvengono per i report così come invece avvengono
per una maschera.
Comunque sia aver eliminato quelle due righe di codice VBA fa si che avrai
delle segnalazioni di errore in caso che il recordset sia vuoto: ti conviene
di cautelarsti da questa eventualità, ad esempio scrivendo una routine a
fronte dell'evento "Su report vuoto" che impedisca l'esecuzione del report.
Resta il fatto che è difficilmente che funzioni che operano sui recordset
scritte per essere usate da maschere possano funzionare da report senza
modifiche.


 d'altra parte quella soluzione era stata testata in una maschera
Io il contatore lo uso in una maschera, in visualizzazione "maschere 
continue". Oltretutto all'apertura della maschera, quindi a recordset 
vuoto, il risultato è 0, almeno apparentemente senza errore.
In ogni caso grazie, col tuo aiuto ho risolto il problema e ho imparato 
un bel pò di cose.
ciao
Peppe