Newsgroup: it.comp.appl.access
Titolo: chiudere o meno la maschera se un controllo è vuoto.

Salve!
ho una maschera con tre campi
IdProdotto, prodotto, categoria (richiesto si).
Vorrei ottenere alla chiusura della maschera "click su pulsante di chiusura"
nel caso del mancato inserimento della categoria:
"manca la categoria, la vuoi inserire?", vbYesNo, "Informazione!"
Con "no", vorrei chiudere la maschera, annullando l'operazione,
altrimenti spostare il focus sul controllo vuoto.
Ho provato su errore 3101, su scaricamento
ma non ci sono riuscito.
 
Grazie
 

Su Unload, hai il Parametro CANCEL da condizionare per annullare la chiusura, ma devi controllare la compilazione dei controlli OBBLIGATORI, perchè quanto inserito in Tabelle non viene intercettato in Maschera se non su Form_Error, argomento sicuramente già esposto.
 
Una cosa veloce se ad esempio hai più Controlli da gestire:
Private Sub Form_Unload(Cancel As Integer)
     Cancel=(Len(Me!Categoria & VbNullstring)=0 OR (Len(Me!Prodotto & VbNullstring)=0) 
End Sub
 
Se invece vuoi guidare al Riempimento devi controllarne uno alla volta...
Private Sub Form_Unload(Cancel As Integer)
     If Len(Me!Categoria & VbNullstring)=0 Then 
         Cancel=True
         Me!Categoria.SetFocus
     ElseIf Len(Me!Prodotto & VbNullstring)=0 Then
         Cancel=True
         Me!Prodotto.SetFocus
     End If
End Sub
 
@Alex


grazie


Ciao Alex
ho cambiato nella tabella; in categoria, richiesto "no" e consenti lunghezza zero "si"
poi....
Private Sub Form_Unload(Cancel As Integer) 
    Dim iRisposta As Integer
    If Len(Me!Prodotto & vbNullString) <> 0 And Len(Me!CboCategoria & vbNullString) = 0 Then
        iRisposta = MsgBox("Manca la categoria, vuoi inserirla?", vbYesNo, "Informazione!")
        Select Case iRisposta                                           'impostiamo il Select Case con riferimento al messaggio restituito dalla variabile iRisposta
          Case vbYes                                                    'se risponderemo "Si" :
            Me!CboCategoria.SetFocus
            Cancel = True
          Case vbNo                                                     'se sceglieremo "No":
            Exit Sub
          Case Else
        End Select
    End If
End Sub
 
ma se chiudo prima di aver messo la categoria come elimino il record, visto che non è completo?
Grazie

Se chiudi senza voler inserire devi mettere il Me.Undo, dando per assunto che la Form sia associata.
 
@Alex

 @Alex
e se non lo é?
cosa si può fare?
Ancora grazie


Ma se non è associata... di certo NON inserisce RECORD... quindi se esci non fa nulla... mentre se vuoi salvare devi fare qualche azione.
 
Fatico a capire come operi, non sempre in modo tecnicamente coerente... ma vedi tu.
 
@Alex


Se nella tabella ho due campi, 
prodotto e categoria,
se scrivo il prodotto e non inserisco la categoria, me lo fa fare anche se non è associata.

Alberto... se non è associata non è associata è quello che dici sarebbe un miracolo, e non è la sede per credere ai miracoli...
Quindi se quello che dici accade allora non ci stai raccontando le cose come veramente stanno ma temo sia tu a non avere bene le idee chiare... però mo fermo qui perché io ancora non ho capito come operi.
 
Prego.
 
@Alex