Newsgroup: it.comp.appl.access
Titolo: Apertura maschera da maschera

Ciao a tutti,
vorrei che nel mio db si aprisse una maschera partendo da una maschera
"principale".
Il problema è che nella nuova maschera ho impostato su "corrente" il
seguente codice:
If Me.NewRecord = True Then
    Me![<ID "nuova" maschera>] = forms! <Id della maschera "principale">
Finchè apro la nuova maschera con un comando tutto va bene, e posso inserire
quanti record voglio sempre con l'ID legato alla maschera "principale".
Ma se, come vorrei, al momento di inserire un nuovo record nella maschera
principale mi si aprisse la nuova per inserire i dati come dovrei fare?
Io do il comando openform su "dopo inserimento" nella maschera principale,
ma così facendo posso inserire un solo nuovo record nella nuova, penso
perchè dopo l'inserimento del record nella "principale", o questa è stata
chiusa o si è passati al record successivo che è ancora vuoto e quindo non
viene trovato l'Id dalla nuova maschera. C'è un modo per dire di mantenere
lo stesso id del primo record nella maschera nuova?
Spero di non esseremi ingarbugliato troppo nella descrizione,
Grazie
Gianluca

 Gianluca
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Non vorrei dire una fesseria, ma penso che il problema non sia questo perchè
il record si dovrebbe salvare "da solo" dal momento che do il comando
openform come routine "dopo inserimento".
Il problema dovrebbe (almeno credo) essere che, se dopo avere inserito il
record do invio, il record corrente diventa uno nuovo successivo, se invece
chiudo la maschera non esiste più nessun id della "principale".
In ognuno dei due casi l'inserimento del primo record nella maschera "nuova"
è ok, mentre per l'eventuale secondo record che dovrebbe tenere lo stesso id
di collegamento mi dice che c'è un errore (non trova la maschera o l'id
valido) evidenziando la stringa:
Me![<ID "nuova" maschera>] = forms! <Id della maschera "principale">
Per questo avevo pensato a qualcosa che dicesse di mantenere nei record
successivi al primo della maschera "nuova"(una volta  aperta) lo stesso id.
E' davvero così? Ed eventualmente come si fa?
Grazie
Gianluca

 Gianluca
Non riesco a capire bene il tuo problema; ma perché invece di due maschere
separate non usi una maschera con sottomaschera?
Almeno a impostare la chiave esterna della sottomaschera ci pensa Access
automaticamente.


 ha scritto nel messaggio
news:yGRic.21695$Qc.8...@twister1.libero.it...

Spiego un po' come sono combinato:
il db dovrebbe servire agli allenatori di una squadra di nuoto per
monitorare allenamenti e risultati in gara. Nella maschera che ormai è stata
battezzata come principale (si chiama [Nuova performance]) si inseriscono o
modificano le prestazioni. Si sceglie prima se gara o allenamento (poi
eventualmente il nome della gara), poi la data e infine l'atleta che ha
effettuato la prova. La maschera nuova mi serve per inserire, eventualmente
i tempi parziali della prova (es. su un 400 stile prendo il tempo ogni 100 o
ogni 50 per capire dove si deve migliorare...).
Avevo pensato ad una maschera separata per due motivi: perchè già così la
maschera [Nuova performance] è abbastanza "piena" e perchè i tempi parziali
non verranno inseriti sempre ma solo in determinate circostanze (lo
sceglieranno loro); mi ero immaginato quindi che una volta salvato il record
relativo alla prestazione (e per questo la routine era in "dopo
aggiornamento") apparisse una msgbox chiedendo se si volessero inserire i
parziali.
A questo punto il problema di cui sopra...ma se ci fosse una soluzione
migliore sono tutto orecchie (anzi occhi)!
Una cosa che proprio non capisco è:
inserendo nella maschera nuova "su corrente" il codice
Private Sub Form_Current()
Dim indicatore,
If Me.NewRecord = True Then
    If Me.CurrentRecord = 1 Then
    Me.[ID performance] = Forms![Nuova performance]![sottom2].Form![ID
Atleta in Gara]
    Else
    DoCmd.GoToRecord , , acPrevious, 1
    indicatore = Me.[ID performance]
    DoCmd.GoToRecord , , acNext, 1
    Me.[ID performance] = indicatore
    End If
End If
End Sub
perchè mi dice, nel caso in cui currentrecord>1, che Me.[ID
performance]=null?
sbaglio sintassi?
Non dovrebbe prendere lo stesso valore del campo .[ID performance] del
record precedente?
Premetto che prima d'ora non avevo mai avuto "contatti" col VBA e quindi
sono conscio del fatto che quelle che ho scritto potrebbero essere una serie
impressionante di min...ate...
Gianluca