Newsgroup: it.comp.appl.access
Titolo: CURRENT RECORD E RECORDSET.RECORDCOUNT

Buona sera a tutto il NG, una domanda: perche' su un'evento FormCurrent
quando alla proprietà Caption di una label, da codice gli passo il
valore "Utente " & Me.CurrentRecord "di" & Me.Recordset.RecordCount &
"Utenti", mi ritorna il numero del recordset e del recordcount, cosi'
come deve essere, viceversa quando su una form con una listbox che
filtra dei valori x relativi ai dati che ci sono sulla maschera con la
label  il filtro me lo applica e mi restituisce i dati correttamente ma
la label mi da invece "utente 1 di 1", invece io vorrei che si andasse
a posizionare sul record reale che so 500 e la label mi restituisca
"Utente 500 di 2300 Utenti".
ho provato con lo scrivere sulla maschera che fa da filtro la seguente
stringa:
Forms!FrmUtente1!.Form.LblNutenti.Caption = "Utente  " &
Forms!FrmUtente1!.Form.CurrentRecord & " di " &
Forms!FrmUtente1!.Form.Recordset.RecordCount & "  Utenti"
ma nulla mi restituisce sempre "Utente 1 di 1 Utenti".
mi dareste una mano se qualcuno sa come risolvere questo?
Grazie
Saluti
Diego

diego ha scritto:

Non devi usare il Filtro allora ma il Find, se usi il Filtro il
Recordset viene filtrato
di conseguenza vontiene solo UN record...!
usa il metodo Find del RecordsetClone, quindi sfrutta i Bookmark :
Me.RecordsetClone.Find "quello che hai messo nell'azione Filter"
Me.Bookmark=me.recordsetclone.bookmark
@Alex

Alessandro Baraldi ha scritto:
Ciao Alex L'ho usato il find e mi ha funzionato solo una volta, dirai
tu ...ma che e' scemo??
no non lo sono e non capisco il motivo per cui mi abbia funzionato solo
una volta;
comunque ti spiego, ho una maschera non associata con i relativi
controlli anch'essi non associati quando arrivo nel campo codice
fiscale parte una quesry che mi fa un controllo, cioe' se esiste gia'
quel codice fiscale nel db, la query funziona e mi restituisce il
risultato che esiste la persona, a quel punto visto che la condizione
e' vera dovrebbe partire il find che mi posiziona al record della
maschera principale dove stanno i dati, quella che e' collegata alla
tabella per intenderci, la query che mi fa il controllo e del tipo
select count ecc ecc il resto del codice per il find record e' questo:
If Rst > 0 Then
MsgBox "            ATTENZIONE!!" & Chr(13) & Chr(13) & "UTENTE
PRESENTE IN ARCHIVIO", vbExclamation, TitoloApp
Dim TROVA As String
TROVA = Me.CaCodFisc
Forms!FrmUtente!.SetFocus
DoCmd.FindRecord TROVA
End If
per tutta risposta la prima volta mi riesce perfettamente e la label mi
da l'effettiva posizione del record  cioe' "Utente 5 di 2300 utenti";
riprovo di nuovo e mi da sempre quest'errore:"L'esecuzione di una macro
impostata ad una delle proprietà del campo non è riuscita per
un'errore nell'argomento dell'azione TrovaRecord."
ma che vuol dire, ma perche' una volta mi riesce e le altre no??
ho sbagliato qualcosa ?? se cosi' fosse non doveva riuscirmi nemmeno la
prima volta.
tu che ne pensi??
grazie
saluti
Diego

diego ha scritto:

Innanzitutto se non usi una connessione in area ODBC non si usa FIND ma
FINDFIRST
quindi leggendo l'help avresti anche visto che a seconda del tipo di
Dataset potresti
averne uno che può scorrere solo in avanti, questo ti obbligherebbe al
MoveFirst sempre, ma con un dbOpenDynaset non dovresti avere questo
problema se le tabelle sono nel BE, se invece le tabelle sono nel
FE(puoi usare un dbOpenTable o dbReadOnly).
Altra cosa io non uso mai quel codice, ma questo:
Me.RecordSetClone.FindFirst "[CaCodiceFiscale]='" & Me!txtCodice & "'"
If me.recordsetclone.nomatch then
  Msgbox "Non c'è"
  me.recordsetclone.bookmark=me.Bookmark
  exit sub
End if
' ricorda che il C.F. è campo Testo, quindi APICI prima e dopo.
' ora il Clone del Recordset principale si è spostato ma non il
principale
Me.Bookmak=Me.Recordsetclone.Bookmark
Ciao
@Alex

Alessandro Baraldi ha scritto:
_____________________________________________________________________
Dim RsUt As Recordset
Dim StrRicerca As String
Set miodb = CurrentDb
StrRicerca = "SELECT TblUtente.IdUtente,TblUtente.CodFisc FROM
TblUtente WHERE TblUtente.CodFisc='" & Me.CaCodFisc & "'"
Set RsUt = miodb.OpenRecordset(StrRicerca, dbOpenDynaset)
Me.RecordsetClone.FindFirst "[TblUtente.CodFisc]='" & Me.CaCodFisc &
"'"
If Me.RecordsetClone.NoMatch Then
  MsgBox "Non c'è"
  Me.RecordsetClone.Bookmark = Me.Bookmark
  Exit Sub
End If
Forms!Frmutente.Form.SetFocus
Forms!Frmutente.Form.Bookmak = Me.RecordsetClone.Bookmark
Alessandro scusa ....ti posto il codice cosi' almeno ti fai un'idea
delle cazzate che faccio....imposto il tutto in questo modo ma non
va...niente da fare!!!
il Me.CaCodFisc è la textBox non associata della maschera non
associata in cui viene passato il valore del cod fiscale
la maschera associata alla tabella utenti e' FrmUtente
ma che cosa devo fare?? io ci sto impazzendo...mi sa che ricollo alla
casella di riepilogo che con il doppio click mi filtra il dato
solo che ritenevo piu' elegante questo metodo.
comunque grazie dell'aiuto
sei stato gentilissimo e paziente
Saluti
Diego

diego ha scritto:

Non capisco nulla di come hai strutturato la cosa...!!
Hai 2 Maschere:
1) Associata alla Tbl Utenti in cui presumo tu abbia tutti gli Utenti
ed i relativi dati
2)Form Non associata con una txtCaCodice non associata.
Questa 2° Maschera a cosa serve....?
Se devi effettuare una ricerca nella Form associata e semplicemente
spostare
il RecordCorrente a quello selezionato ti basta un'autocomposizione di
una ComboBox
seguendo il Wizzard e quella ti piazzerà una Combo che quando la
userai per inserire
il criterio di ricerca(C.F.) nel tuo caso si sposta
automaticamente....!
Lo stesso codice che viene generato con il Wizzard è valido su una
TextBox....
SPiega meglio se non ho capito nulla....
@ALex

Ho risolto.....ho letto meglio l'Help e funziona alla grande, sbagliavo
ad associare la stringa di ricerca alla query, anzicche' aprirmi solo
il recordset ed usare invece come stringa di ricerca il campo ...c'e'
ne e' voluto ma funziona...il codice e' questo:
Dim RsUt As Recordset
Dim StrRicerca As String
Set miodb = CurrentDb
Set RsUt = miodb.OpenRecordset("SELECT
TblUtente.IdUtente,TblUtente.CodFisc FROM TblUtente", dbOpenDynaset)
StrRicerca = "CodFisc = '" & Me.CaCodFisc & "'"
RsUt.MoveLast
RsUt.FindFirst StrRicerca
If RsUt.NoMatch Then
Else
MsgBox "ATTENZIONE!!" & Chr(13) & Chr(13) & "UTENTE PRESENTE IN
ARCHIVIO", vbExclamation, TitoloApp
Forms!FrmUtente1.Form.SetFocus
Forms!FrmUtente1.Form.Bookmark = RsUt.Bookmark
End If
RsUt.Close
_______________________________________________________________________
ti spiego tutto, allora la form non associata mi serve per inserire
nuovi utenti o modificare, senza agire direttamente sulla form
collegata alla tabella, anche perche' dal momento che la form associata
ha anche una sottomaschera tu mi insegni che nel momento in cui mi
sposto dalla form principale alla sottomaschera il record viene scritto
e se per caso mi accorgo di aver sbagliato qualcosa non posso annullare
nulla pur non avendo ancora salvato il record della sottomaschera,
scusami l'essere prolisso,...me lo dicono tutti che sono logorroico!!,
comunque per ovviare a cio' uso form non associate dove al momento del
salvataggio mi basta usare query di aggiornamento o di inserimento per
non avere problemi,e' anche vero pero' che il db contiene quasi 2500
record, quindi quando vado ad inserire un nuovo utente vado a farmi il
controllo in base al codice fiscale, cosicche' non lo inserisco due
volte e poi mi ritrovo lo stesso utente con due pratiche aperte, se
esiste mi posiziono sull'utente trovato e aggiungo il record nella
tabella che popola la sottomaschera (usando sempre una form non
associata) con un'insert to, o se devo modificare qualcosa con un
UpDate.
ecco perche' uso le form non associate.
scusami la dilungaggine, ma ci tenevo a spiegarti bene la cosa!!
ti ringrazio enormemente dell'aiuto che  mi hai dato
saluti
Diego