VBA Access Textfeld beim verlieren des Fokus autom. Speichern

Orphelina

Erfahrenes Mitglied
Hallo ihr,

ich hab ein Problem und komm auf keinen grünen Zweig und hab schon mehrere Sachen probiert- ohne Erfolg.
Und zwar hab ich in meiner Access2003 DB ein Formular, das ein Textfeld enthält. Es gibt auch einen Speichern- Button, aber ich will dass der Inhalt des Feldes automatisch gespeichert wird wenn das Feld seinen Fokus verliert bzw. der User woanders hinklickt...
Aber mit der Fokus- Methode bin ich nicht weit gekommen...
Hat jemand nen Tipp?

Danke und Gruss

Orphelina
 
wenn dein Textfeld einem Tabellenfeld zugeordnet ist (z.B. über ein Datacontrol) würde es automatisch gespeichert werden

gruss bb
 
Also die Daten des Textfeldes werden aus einer Tabelle eingelesen. Wenn der User das Feld verlässt will ich es über eine Funktion speichern.
Und wie geht das mit dem DataControl?
In der Hilfe hab ich dazu nur gefunden das es nur für webbbasierte Anwendungen ist und meins läuft aber nur lokal....

Gruss
 
.du musst das datacontrol auf deine Form ziehen-> dann unter eigenschaften zuweisen welche tabelle es sein soll und im textfeld dann die Datafield eigenschaft setzten

Glaube ich zumindest hab es jetzt nicht ausprobiert da ich mehr in vb direkt progge aber in vba dürfte das nicht gross abweichen

Gruss bb
 
So,

es ist noch einfacher als man denken mag... In den Eigenschaften meines Access Feldes kann man beim Verlassen bzw. beim Verlieren des Fokus eine Ereignisprozedur auswählen... Dann braucht man nur noch Code der das speichern regelt. Das könnte so ähnlich aussehen:
Code:
    If Trim(tb_EditText.value) = Trim("No Data exist!") Then
        MsgBox ("Type Text and save!")
        Exit Sub
    End If
    
    If IsNull(Len(Trim(tb_EditText.value))) Then
        MsgBox ("Type Text and save!")
        Exit Sub
    End If
    
    Set rst = New ADODB.Recordset
    
    rst.CursorLocation = adUseClient
    rst.Open "SELECT * FROM Tabelle" _
            & "WHERE Bedingung = '" & anderesFeld & "' ,
            CurrentProject.Connection, adOpenDynamic, adLockOptimistic
    
    Dim aFields As Variant
    Dim aValues As Variant
    aFields = Array("Module_ID", "Language_ID", "Text")
    aValues = Array(gt_Module, editLang, tb_EditText.value)
    
    If rst.EOF Then
        rst.AddNew aFields, aValues
    Else
        rst("Text").value = tb_EditText.value
    End If
    
    rst.Update
    rst.Close
Danke schön trotzdem!

Gruss Orphelina
 

Neue Beiträge

Zurück