Newsgroup: it.comp.appl.access
Titolo: Prorpietà Recordset

Ho una maschera associata ad una tabella e per l'evento current ho definito
una serie di blocchi if che analizzano
il valore restituito  da Me.RecordsetClone.RecordCount, il problema che mi
si presenta è che qualunque sia
il numero di recond (purchè non sia 0) contenuti nella tabella, all'apertura
del form il valore restituito è 1.
Come faccio ad ottenere in valore effettivo anche all'apertura?
grazie 

 ha scritto nel messaggio
news:ICJPd.30686$lB4.8...@twister1.libero.it...

Se apri la Form con un Filtro non è possibile se non con un'altro
Riferimento, magari un DCOUNT, se la Form è aperta
direttamente sulla Tabella c'è qualche cosa di sbagliato.
Posta magari il tuo codice.
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 @Alex (Alessandro Baraldi)
Questo è uno dei blocchi:
If Me.RecordsetClone.RecordCount = 0 Or Me.RecordsetClone.RecordCount = 
Me.CurrentRecord And Me.NumRecord <> "1" Then
                  VaiSuccessivo.Enabled = False
                  Else
                  VaiSuccessivo.Enabled = True
                  End If
 (NumRecord è la casella di testo che utilizzo per visualizzare sul form il 
numero del record in cui mi trovo ed è posto  Me.NumRecord = 
Me.CurrentRecord)
quello che tento di fare è di disabilitare il pulsante VaiSuccessivo se:
       - non c'è alcun record  Me.RecordsetClone.RecordCount = 0 (questo 
funziona)
       - si stà visualizzando l'ultimo record Me.RecordsetClone.RecordCount 
= Me.CurrentRecord  (anche questo funziona)
     l'operatore And l'ho dovuto utilizzare perchè qualunque sia il numero 
di record presente nella tabella (eccetto il  caso in cui la tabella sia 
vuota)
     al momendo dell'apertura del form RecordsetClone.RecordCount = 1, 
questo comporta che VaiSuccessivo.Enable = False anche se il numero
     record fosse maggiore di 1
    inserendo quindi la condizione che Me.NumRecord  sia diverso da "1" 
riesco ad abilitare il pulsante per tutte le condizioni in cui lo deve 
essere ma come contropartita  ho che se effettivamente la tabella contiene 
un solo record VaiSuccessivo rimane abilitato fin che non ne creo almeno 
un'altro.
Grazie
 


Mi sono perso via nelle tue complicanze.
Me.CmdNExt.Enabled=Not Me.NEwRecord AND
(Me.RecordsetClone.RecordCount=Me.CurrentRecord)
P.S. ricordati solo di spostare il Focus su un 'altro Oggetto
Ciao
-- 
@Alex (Alessandro Baraldi)



 vediamo un pò... seguendo il tuo ragionamento ho scritto:
CmdNext.Enable = False
If (Me.NewRecord = -1) And (Me.RecordsetClone.RecordCount = 
Me.CurrentRecord) Then
         CmdNext.Enabled = False
         Else
         CmdNext.Enabled = True
         End If
cosi facendo ho ottenuto sicuramente un codice più snello e leggibile 
(probabilmente non è esattamente quello che intendevi)
ma non ho risolto il problema che CmdNext risulta  essere abilitato anche se 
non c'è nessun record nella tabella associata.
Nel caso che la tabella sia vuota  all'apertura del form Me.NewRecord ha 
valore -1,
quindi si realizza la condizione che ci si trovi in un nuovo record
ma l'enunciato  Me.RecordsetClone.RecordCount = Me.CurrentRecord  diventa 0 
= 1

 ha scritto nel messaggio
news:hPKPd.30437$QG6.5...@twister2.libero.it...

Ora nell'Evento Current togli tutto quello che hai messo
e scivici questo:
Me.CmdNExt.Enabled=Not (Me.NEwRecord Or
(Me.RecordsetClone.RecordCount=Me.CurrentRecord))



Ora ho scritto esattamente quello che hai detto cancellando tutto il resto 
per l'evento current
 ma cosi facendo all'apertura della maschera CmdNext è comunque disabilitato
(qualunque sia lo stato di partenza che gli impongo).
Comunque avevo già modificato l'operatore nella condizione if che ti ho 
postato prima ottenendo
lo stesso identico risultasto di adesso.
In conclusione, qualunque sia il metodo utilizzato, si riesce a far 
funzionare
bene i pulsanti solo se nella tabella son presenti almeno
due record. 

 ha scritto nel messaggio
news:adLPd.30479$QG6.5...@twister2.libero.it...

In questo modo il cmdNext è disabilitato solo in 2
casi:
1)NuovoRecord
2)UltimoRecord
Ovvio che se apri una Form Vuota o con un solo
Record è verificata almeno una Causa.



Giusto, hai ragine cosi funziona. Prima avevo fatto casini con il Not poichč 
mi dava errore di compilazione.
mille grazie 

mi contraddico da solo con ac2002 all'apertura della maschera cmdnext è 
disabilitato qualunque sia
il contenuto della tabella. Se creo un nuovo record tutto funziona, ma 
chiudendo la maschera e poi
riaprendola cmdnext è nuovamente disabilitato (chiaramente per 
Me.RecordsetClone.RecordCount >1) 

 ha scritto nel messaggio
news:VQLPd.30541$QG6.5...@twister2.libero.it...

Hai richiamato Current su Evento Load oppure eseguito
lo stesso codice su Load...??
Scusa pensavo lo sapessi.


Grazie, ma non voglio abusare troppo della tua disponibilità,
comunque dopo che me lo hai detto ho provato sia a copiare il codice
dell'evento current del form sull'evento load sia a richiamare direttamente
l'evento current dall'evento load. Inutile che ti dica che i risultati sono 
gli stessi. 

 ha scritto nel messaggio
news:MfMPd.30591$QG6.5...@twister2.libero.it...

E' il solito problema di Caricamento del Recordset.
Prova così:
Private Sub Form_Current()
   Static blOpen
   If blOpen Then
      Me.cmdNext.Enabled = Not (Me.NewRecord Or
(Me.RecordsetClone.RecordCount = Me.CurrentRecord))
   End If
   blOpen = True
End Sub


 Ciao
Qui sei andato un pò troppo oltre le mie capacità attuali, direi di fermarci 
qui,
mi devo priva strudiare l'istruzione static per capire cosa significa quello 
che hai scritto, in ogni caso
sicuramente ometto qualcosa visto che mi da errore di "end if senza blocco 
if"
Blopen è una variabile? se si, è di tipo boolean vero?
La devo dichiarare in qualche modo?
Ciao 

Alla fine la soluzione era davanti agli occhi e non la vedevo.
Ho abbandonato l'uso di Recordset visto che viene inizializzato male ed ho
usato Dcoint.
Private Sub Form_Current()
Dim count As Single
cont = DCount(" [Anagrafica]![ChiaveAnagrafica]", "anagrafica")
If cont = 0 Or count < 2 Then   (quì individuo la possibilita che la tabella 
sia
                                                  vuota o che ci sia solo un 
record)
cmdNext.Enabled = False
Else
   If (Me.CurrentRecord = count) Then (qui invece l'eventualità di star già
                                                              visualizzando 
l'ultimo record)
   cmdNext.Enabled = False
Else
   cmdNext.Enabled = True
     End If
         End If
end sub
ciao e grazie ancora 

 ha scritto nel messaggio
news:D4QPd.30950$QG6.5...@twister2.libero.it...

Alla fine di tutte le soluzioni hai preso quella sbagliata.
Io quando vedo queste cose mi incazzo pure un pò
invece di capire cosa sbagliavi, e sicuramente era sintassi
da quanto ho visto, sei andato ad usare una funzione di aggregazione
sui Domini che, per quello che devi fare non è assolutamente
da fare.
Contento tu.


 @Alex (Alessandro Baraldi)
A dire il vero ho usato la prima che mi hai suggerito, quantomeno
di questa conosco uso sintassi è possibilità di applicazione.
Dell'ultimo esempio che mi hai proposto non ho capito molto,
non mi piace inserire del codice del quale non capisco il significato,
anche azzeccando la sintassi sarebbe rimasta una cosa fine a se stessa
e visto che questo per me attualmente non è lavoro,
ho preferito rimandare l'uso di quelle funzioni fin quando non
le avrò approfondite lungo il mio programma di studi. Sicuramente
appena saro padrone della cosa riproverò a seguire la seconda strada che
mi hai indicato.
Ciao 

 wrote in message 
news:ICJPd.30686$lB4.8...@twister1.libero.it...

In OnOpen della scheda:
If Me.Recordset.RecordCount > 0 Then
    Me.Recordset.MoveLast
    MsgBox Me.Recordset.RecordCount
Else
    MsgBox Me.Recordset.RecordCount
End If
Bruno

Bruno
Perfetto, cosi funziona, ora anche all'apertura del form
me.recordset.recordcount restituisce il valore esatto.
grazie