Newsgroup: it.comp.appl.access
Titolo: Valore campo numero record

Come posso, usando una casella combinata, scegliere nella
relativa lista un valore (per es il nome di un musicista) e poi
dopo averlo selezionato attivare il record che contiene per es
nel campo autore il nome di quel musicista?
Ho tentato con:
DoCmd.GoToRecord acDataForm, "Relazioni", acGoTo, 7
ma al posto di 7 dovrei metterci il numero di record corrispondente
a quello che contiene nel campo autore il nome selezionato nella
casella combinata.
Come si fa, conoscendo il valore di un campo di un record a trovarne il
numero corrispondente?
Chi mi dà una mano?

 ha scritto nel messaggio
news:VeCG6.14399$sb5.1...@news.infostrada.it...

Ti propongo un'altra soluzione, diversa da quella di ricavarti il numero del
record su cui posizionarti.
Ipotizziamo che la casella combinata si chiami MiaCombo ed abbia una sola
colonna (quella che contiene il nome del musicista).
Ipotizziamo che il campo dell'oggetto che è origine record della tua
maschera si chiami, come dici tu, Autore.
A fronte dell'evento "Dopo aggiornamento" della casella combinata MiaCombo
genera il seguente codice VBA:
Private Sub MiaCombo_AfterUpdate()
    Dim rst As Recordset
    Dim crit As String
    crit = "[Autore]=" & Chr$(34) & MiaCombo.Column(0) & Chr$(34)
    Set rst = Me.RecordsetClone
    rst.MoveLast
    rst.FindFirst crit
    If rst.NoMatch Then
        MsgBox "Autore inesistente"
    Else
        Me.Bookmark = rst.Bookmark
    End If
End Sub
Se c'è più di un record che abbia nel campo Autore quel musicista, Access si
posizionerà sul primo; se non ce ne è nessuno ti comparirà un messaggio di
avvertimento.
Se poi la casella combinata è invece composta, come è di solito, da due
colonne (la prima nascosta che porta l'ID del musicista e la seconda il nome
del musicista), al posto della riga di codice VBA:
    crit = "[Autore]=" & Chr$(34) & MiaCombo.Column(0) & Chr$(34)
scrivi
    crit = "[Autore]=" & Chr$(34) & MiaCombo.Column(1) & Chr$(34)
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Robč,
ho fatto come tu dici ma mi ritorna il seguente errore di compilazione:
Impossibile trovare il metodo o il membro dei dati. Il Debug evidenzia
.FindFirst
Questo č quello che ho scritto:
Private Sub Cerca_AfterUpdate()
    Dim rst As Recordset
    Dim crit As String
    crit = "[Autore]=" & Chr$(34) & Cerca.Column(0) & Chr$(34)



Per scrupolo ho appena provato a crearmi un esempio con Access 97 contenete
la routine VBA che ti ho suggerito; a me funziona tutto correttamente e non
ho alcuna segnalazione di errore.
D'altra parte la routine in questione è ripresa quasi completamente da un
esempio dell'help.
Se poi usi A2000, che però non conosco, immagino che esista comunque il
metodo FindFirst; eventualmente, ad ogni buon conto, se usi A2000 aggiungi
ai Riferimenti del database anche la libreria DAO, facendola precedere alla
libreria ADO.
Mi dispiace ma non so suggerirti altro.


 libreria ADO.
Ho Access 2000. Scusa la mia ignoranza ma come si fà ad aggiungere ai
Riferimenti
del database anche la libreria DAO, facendola precedere alla  libreria ADO?
Ciao Grazie

 ha scritto nel messaggio
news:Bz0H6.25372$sb5.2...@news.infostrada.it...

Apri il tuo database.
Apri un modulo qualsiasi del tuo database, come se lo dovessi modificare.
A questo punto, dal menu Strumenti seleziona il comando Riferimenti; nella
lista della finestra di dialogo che ti si apre "spunta" la libreria DAO e
posizionala, sempre nella lista delle librerie, prima della libreria ADO che
dovresti trovare già "spuntata".
Non so dirti molto di più; come ti ho detto precedentemente non uso A2000.


 ha scritto nel messaggio
news:Bz0H6.25372$sb5.2...@news.infostrada.it...

Potresti anche a provare a risolvere il problema con il metodo FindRecord
(vedi help) dell'oggetto DoCmd.



Sei grande,
sono riuscito a caricare la libreria DAO come mi hai descritto
ed ora FUNZIONA!
A tempo perso proverò anche con l'oggetto DoCmd
Grazie. Ciao
Silvano.