Newsgroup: it.comp.appl.access
Titolo: La casella ri riepilogo restituisce il valore del record?

Salve al NG
In una maschera Rubrica, con i vari campi Nome, Cognome, Indirizzo, Telefono
(controlli TextBox) ecc. ho aggiunto un controllo ListBox (casella di
riepilogo) con l'elenco di tutti i record.
Vorrei raggiungere rapidamente il record selezionato ma non so come fare.
Io credo di dover fare qualcosa di simile: all'evento Click o DoppioClick
della ListBox si accede ad una routine di codice più o meno del tipo:
DoCmd.GoToRecord , , acGoTo, NumeroDiRecord
ma questo NumeroDiRecord (Long) dove lo prendo?
Spero di essere stato chiaro.
Grazie
Filippo

 ha scritto nel messaggio
news:9pd804$spj$1...@news.panservice.it...

Non so se sei pratico di DAO, ma io affronterei in altro modo:
La ListBox restituirà un valore che utilizzerai come ricerca nel
RecordsetClone della Form.
Supponi che ListBox Restituisca IdProgressivo
Su evento Click inserisci
      Me.Recordsetclone.FindFirst "[Id]=" & Me.TuaListBox
      Me.Bookmark = Me.RecordsetClone.Bookmark
Automaticamente ad ogni selezione si sposta....
E' la stessa tecnica che avresti visto utilizzando l'Autocomposizione della
ListBox--->Trova Campo....ecc..
@Alex.


Anziché il metodo GoToRecod prova ad usare, dopo aver spostato il fuoco sul
controllo su cui effettuare la ricerca, il metodo FindRecord (vedi help).
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Vi ringrazio dell'aiuto.
In effetti con l'autocomposizione viene fuori questo codice
 Dim rs As Object
 Set rs = Me.Recordset.Clone
 rs.FindFirst "[Cognome] = '" & Me![lstElencoNomi] & "'"
 Me.Bookmark = rs.Bookmark
che, con un passaggio in più, è lo stesso indicato da @Alex.
Il punto è che in entrambe le soluzioni si usa una procedura di riferca
FindFirst (di Alex) o FindRecord (di Roberto) che, al di là del fatto che
potrebbe essere più lenta, è comunque ridondante rispetto a quello che mi
interessa. Tra l'altro, se nell'elenco ci sono più cognomi uguali, ad es.
Rossi Maria, Rossi Giulia, Rossi Alessandra etc, il metodo punta sempre al
primo record trovato, indipendentemente da quello che è stato selezionato
nella listbox.
Ora io mi chiedo: nella ListBox appare la lista di tutti i record,
supponiamo soltanto il campo Cognome (che è quello che mi interessa). Io
seleziono un elemento della lista che ovviamente avrà un numero d'ordine
che, credo, corrisponderà a quello dei record ammesso che siano ordinati con
il medesimo criterio. E' mai possibile allora che questo numero d'ordine
della lista non venga restituito da qualche parte, in modo da usare al click
sul nome dell'elenco molto semplicemente,  il comando:
DoCmd.GoToRecord, , stramaledettissimonumerorestituito?
Che voi sappiate questo non si può fare? A me sembra strano essere costretti
ricorrere ad una ricerca su tutti i record anziché ad un banale GoTo.
A questo punto, lo ammetto, il problema è teorico e di puntiglio, ma voi che
ne dite?
Grazie,
Filippo

 Filippo
Questo naturalmente é solo il mio pensiero; quanto a quale soluzione sia più
performante non saprei che dire: comunque, quando c'è di mezzo la manualità
dell'operatore, penso che la differenza non sarebbe apprezzabile.



Possibili soluzioni:
1) Se nella tua tabella c'è una chiave primaria, inseriscila - a larghezza
zero - nella tua ListBox e fai la ricerca su quella
2) Altrimenti fai la ricerca su cognome e nome, utilizzando la proprietà
Column della ListBox
Bye
--
Alberto

 Roberto
Ti ringrazio molto, mi hai chiarito diversi aspetti della questione
Ciao, Filippo