Newsgroup: it.comp.appl.access
Titolo: Aprire una maschera scegliendo il record in una casella di riepilogo

Ho creato una maschera che contiene una casella di riepilogo che a sua
volta
ha come origine una qry.
In questa casella di riepilogo vengono elencati alcuni campi della
tblpazienti (cog, nome....), ora io vorrei poter
aprire la maschera di inserimento pazienti (mscpazienti) facendo
doppio clik su
uno di quelli elencati nella casella di riepilogo.
la maschera che devo aprire per effettuare l'inserimento contiene una
sottomaschera
SMscpazienti, che è collegata alla maschera principale con il
controllo idmedico in quanto
ha come origine la tblmedico. in modo da filtrare tutti i pazienti di
uno stesso medico.
Come posso fare?


Se ti capisco bene:
La tua casella di riepilogo deve contenere l'idpaziente e anche
l'idmedico del paziente. Diciamo p.e. nella prima colonna si
trova l'idpaziente (larghezza 0, colonna associata) e nella terza
colonna l'idmedico (larghezza 0).
--> Codice nell'evento "Dopo aggiornamento" della casella:
Dim rs As DAO.Recordset
Docmd.OpenForm "TuaAltraMaschera", , , _
 "idmedico=" & Me!TuaCasellaRiepilogo.Column(2)
Set rs = Forms!TuaAltraMaschera!SMscpazienti.Form.RecordsetClone
rs.FindFirst "idpaziente= " & Me!TuaCasellaRiepilogo
If Not rs.Nomatch Then
  Forms!TuaAltraMaschera!SMscpazienti.Form.Bookmark = rs.Bookmark
End If
Vedi anche:
Sincronizzare le maschere
www.donkarl.com/it?FAQ4.3
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 


Ho fatto come hai detto ma cliccando nella casella di riepilogo sul
paziente
di cui voglio aprire la maschera, si apre una piccola finestra con il
cognome
del paziente e mi chiede di immettere un valore.
Inserendo un valore o annullando compare un errore dove viene indicato
che la
SMscpazienti non è stata trovata.
Cosa ho sbagliato?
Grazie


dimmi che non stai lavorando su un database di una struttura sanitaria
pubblica, anzi no, non dirmelo....
sam--

 Cosa ho sbagliato?
Devi usare il _nome_ del controllo sottomaschera nella
maschera principale. Vedi anche 
www.donkarl.com/it?FAQ4.2
.



non ci riesco, ricapitoliamo
Ho due tabelle (tblA e tblB) che hanno una relazione tra di loro con
il campo piva in quanto la tbla contiene i medici ed la tblB i
pazienti.
Ho creato una maschera A che ha come origine la tblA ed in questa
maschera ho lasciato il controllo CognomeMedico visibile in
intestazione maschera, mentre nel corpo ho inserito la SMscpazienti
che ha come origine la tblB che contirn tutti i dati del paziente.
Al fine di cercare nella tblB pazienti ho creato una MscCercaPAzienti
dove ho inserito una casella di riepilogo che ha come origine dati la
Qrypazienti dove prendo solo i campi che mi interessano
CodFisc,IDMEDICO,Cognome,Nome,Età,CognomeMedico.
fin qui tutto bene ...
La casella di riepilogo ha quindi come origine dati la qry
la colonna associata è la 1 e il numero di colonne sono 6 (tenendo
conto dell' IDmedico).
su aggiornamento della casella di riepilogo....
Dim rs As DAO.Recordset
DoCmd.OpenForm "MscPazienti", , , "IDMedico=" & Me!Elenco8.Column(2)
Set rs = Forms!MscPazienti1!SMscPazienti!.CodFisc.RecordsetClone
rs.FindFirst "CodFisc= " & Me!Elenco8
If Not rs.NoMatch Then
 Forms!MscPazienti1!SMscPazienti!.CodFisc..Bookmark = rs.Bookmark
End If
DOve è il mio errore?
Grazie e scusami

  Forms!MscPazienti1!SMscPazienti!.CodFisc..Bookmark
Non è chiaro perche qui scrivi "MscPazienti1" invece di "MscPazienti"
che hai usato nella riga con l'OpenForm.
La sintassi giusta forse sarebbe:
Forms!MscPazienti!SMscPazienti.Form.RecordsetClone
e
Forms!MscPazienti!SMscPazienti.Form.Bookmark = rs.Bookmark
Pero come già scritto non è chiaro se il nome della tua maschera è
"MscPazienti" o "MscPazienti1" e se il nome del controllo
sottomaschera è "SMscPazienti". Questo solo puoi sapere tu.



Ho sbagliato nel docmd
questa è giusta MscPazienti!SMscPazienti
ho eseguito le tue correzioni ed adesso mi da un altro errore
run time 2501 operazione docmd annullata e mi segnala questa riga
DoCmd.OpenForm "MscPazienti", , , "IDMedico=" & Me!Elenco8.Column(1)
se vedo il valore della casella di riepilogo noto che il suo valore è
1 mentre in realtà
dovrebbe essere il codice fiscale del medico, credo a questo punto che
il problema
si debba attribuire al fatto che IDMEDICO è una stringa di caratteri e
non un numero.
è giusto?
Grazie mille

 wrote:

ho fatto così ....
Private Sub Elenco8_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = Forms!MscPazienti!SMscPazienti.Form.RecordsetClone
DoCmd.OpenForm "MscPazienti", , , "IDMEDICO='" & Me!Elenco8.Column(1)
& "'"
rs.FindFirst "CodFisc='" & Me!Elenco8 & "'"
If Not rs.NoMatch Then
  Forms!MscPazienti!SMscPazienti.Form.Bookmark = rs.Bookmark
End If
adesso funziona in parte in quanto
mi trova sempre il primo paziente di quel medico e non quello
selezionato
dall'elenco.
esempio:
pippo è paziente del medico A
pluto è paziente del medico A
topolino è paziente del medico B
se cerco pluto mi aprirà sempre pippo e poi da qui vado su pluto
scorrendo
tutti i record intermedi.
Grazie

 ...
Prova p.e. con
MsgBox Me!Elenco8
se il valore č questo che ti aspetti.


 se il valore è questo che ti aspetti.
dove lo devo mettere?


ho visto mi da
pippo = 0
pluto = 1
topolino =2
e l'ho messa dopo il docmd e prima del findfirst

 e l'ho messa dopo il docmd e prima del findfirst
Non mi sembra di essere un CodFisc ma la posizione della riga
nella casella. Tipicamente questo succede se la proprietà
"Colonna associata" è impostata a 0 invece di 1. Controlla.



Che  errore !!!!
Sei stato gentilissimo, adesso va tutto bene.
grazie