Newsgroup: it.comp.appl.access
Titolo: maschere e sottomaschere

Ho il seguente problema:
maschera_1 origine dati  tabella_1( seriale/chiave primaria;
modello/testo; proprietario/testo)
sottomaschera_1 origine dati
tabella_2(ID_lavorazione/contatore; seriale/testo; data
lavorazione/data; operatore/testo)
seriale della tabella_1 e seriale della tabella_2 sono in
relazione uno-a-molti
Come posso fare in modo che:
inserendo un seriale già esistente nella maschera_1  questa
vada a posizionarsi sul record relativo e così pure la
sottomaschera nella quale, a quel punto, posso inserire una
nuova lavorazione?

 ha scritto nel messaggio
news:bab5p8$bkn$1...@gossip.excite.it...

Se in maschera_1 i controlli hanno lo stesso nome dei campi di tabella_1 cui
sono associati.
Se, come mi sembra di capire, i campi seriale delle due tabelle sono di tipo
testo.
In maschera_1 inserisci una casella di testo non associata chiamata
MioSeriale, nella quale vai a digitare il seriale che vuoi trattare e che
non sai se già esiste in tabella_1 o è un seriale nuovo.
A fronte dell'evento "Dopo aggiornamento" della casella di testo MioSeriale
genera il seguente codice VBA:
Private Sub MioSeriale_AfterUpdate()
If DCount("*", "tabella_1", "seriale='" _
& Me!MioSeriale & "'") = 0 Then
    DoCmd.GoToRecord , , acNewRec
    Me!seriale = Me!MioSeriale
    Me!modello.SetFocus
Else
    Me!seriale.SetFocus
    DoCmd.FindRecord Me!MioSeriale, , , , , acCurrent
    Me!sottomaschera_1.SetFocus
End If
End Sub
Così facendo, se il seriale digitato in MioSeriale già esiste in tabella_1,
Access si posiziona sul relativo record di tabella_1, permettendoti di
inserire nuovi record nella sottomaschera; se invece il seriale digitato NON
esiste in tabella_1, Access si predispone all'inserimento di un nuovo record
in tabella_1 impostando il valore del controllo seriale con il valore
digitato in MioSeriale.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Funziona ma non mi permette di inserire dati nella sottomaschera sia che
ci sia
un nuovo record che uno vecchio
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 un nuovo record che uno vecchio
Per scrupolo ho provato a realizzare quello che ti ho suggerito e non ho
avuto comunque alcuna difficoltà ad inserire record nella sottomaschera.
E se non digiti nulla nel controllo MioSeriale, nella sottomaschera che è
visualizzata all'apertura della maschera principale riesci ad inserire
record?


Ok riesco ad inserire ( stavo facendo un errore grossolano) però quando
vado ad inserire un
seriale inesistente mi vienne fuori il messaggio: 
Errore di run-time 2137
Impossibile utilizzare trova o sostituisci
La riga incriminata é:
DoCmd.FindRecord Me!MioSeriale, , , , , acCurrent
-- 


 DoCmd.FindRecord Me!MioSeriale, , , , , acCurrent
Non saprei cosa dirti, come ti ho detto a me funziona senza segnalarmi
errori: hai spostato il fuoco sul controllo seriale prima di eseguire il
metodo FindRecord?


Si l'ho spostato ma l'errore rimane


HO risolto tutto, c'era un pò di confusione con i nomi delle maschere.
Ne approfitto per chiederti un'altra cosa:
E' possibile inserire un messaggio di avviso quando digito un seriale
che non c'è in tabella?
Qualcosa del tipo: "seriale inesistente, vuoi inserire un nuovo
articolo?"



Prova cosě:
Private Sub MioSeriale_AfterUpdate()
If DCount("*", "tabella_1", "seriale='" _
& Me!MioSeriale & "'") = 0 Then
    If MsgBox("Vuoi inserire un nuovo articolo?", _
    vbQuestion + vbYesNo, "Seriale inesistente") _
    = vbYes Then
        DoCmd.GoToRecord , , acNewRec
        Me!seriale = Me!MioSeriale
        Me!modello.SetFocus
    Else
        MsgBox "Seriale ignorato", _
        vbInformation + vbOKOnly, _
        "Seriale inesistente"
        Exit Sub
    End If
Else
    Me!seriale.SetFocus
    DoCmd.FindRecord Me!MioSeriale, , , , , acCurrent
    Me!sottomaschera_1.SetFocus
End If
End Sub
-- 


Tutto Ok. Grazie mille
