Philcattivocarattere ha scritto:
Potresti mostrare come vai a prendere il valore dalla maschera che dovrebbe essere chiusa?
Se non è infinito pubblica anche il codice presente nella maschera non associata.
il codice nella maschera che va a prendere il valore da quella non associata e chiusa è questa cosa minima qua:
Private Sub Convert_Click()
Dim a As String
a = [Form_non_associata].a_text.Value
MsgBox a
End Sub
e questo è il codice che è nella form non associata:
Private lastFocusedControl As String
Private Sub a_text_AfterUpdate()
Call inserisciAssociazione
End Sub
Private Sub a_text_GotFocus()
Call impostaFocus
End Sub
Private Sub b_text_AfterUpdate()
Call inserisciAssociazione
End Sub
Private Sub b_text_GotFocus()
Call impostaFocus
End Sub
Private Sub Form_Open(Cancel As Integer)
Dim ctl As Control
Dim txb As TextBox
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
Set txb = ctl
If txb.Tag = "lettera" Then
If Not IsNull(DLookup("[letteraOutput]", "[associazioneLettere]", "[letteraInput] = '" & Left(txb.Name, 1) & "'")) Then
txb.Value = DLookup("[letteraOutput]", "[associazioneLettere]", "[letteraInput] = '" & Left(txb.Name, 1) & "'")
End If
End If
End If
Next ctl
End Sub
Private Sub inserisciAssociazione()
Dim sql As String
sql = "UPDATE [associazioneLettere] SET [letteraOutput] = '" & Me.ActiveControl.Value & "' WHERE [letteraInput] = '" & Left(Me.ActiveControl.Name, 1) & "'"
If Strings.Len(Me.ActiveControl.Value) <> 1 Then
MsgBox "wè, devi inserire solo un carattere"
Me.ActiveControl.Value = Null
lastFocusedControl = Me.ActiveControl.Name
Else
DoCmd.SetWarnings False
DoCmd.RunSQL sql
DoCmd.SetWarnings True
End If
End Sub
Private Sub impostaFocus()
If lastFocusedControl <> "" Then
Me.Controls(lastFocusedControl).SetFocus
lastFocusedControl = ""
End If
End Sub