Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Access löscht Leerzeichen aus einem Textfeld

Begonnen von Küken, Dezember 19, 2019, 11:36:34

⏪ vorheriges - nächstes ⏩

Küken

Hallo, ich habe da ein kleines Problem, ich habe in einem Formular (frm_Material) ein Textfeld (txt_Such) in dem ich einen Suchbegriff eingebe. Die Daten des Formulars beziehen sich auf die Tabelle Material (SELECT * FROM MATERIAL;) Das Formular hat ein Unterformular (ufrm_Mat) auf das ein entsprechender Filter gesetzt wird und der bookmark des Formulars wird auf das Suchergebnis gesetzt. Soweit alles einfach. Mein Problem ist das in diesem Textfeld, wenn ein Leerzeichen am Ende ist, diese bei jeder zweiten Eingabe gelöscht wird.

Private Sub txt_Such_Change()
On Error GoTo txt_Such_Change_Error
Dim RS_Hersteller As DAO.Recordset
Dim RS_Material As DAO.Recordset
Dim RS_Form As DAO.Recordset
Dim DB As DAO.Database
Set DB = CurrentDb
Dim str_SQL As String
Dim str_Such As String
str_SQL = "SELECT Hersteller.Herst_ID, Hersteller.Herst_Name FROM Hersteller;"
Set RS_Hersteller = DB.OpenRecordset(str_SQL)
str_SQL = "SELECT Material.Mat_ID, Material.Mat_Name, Material.Mat_Herst_ID, Material.mat_RefNr FROM Material;"
Set RS_Material = DB.OpenRecordset(str_SQL)
str_Such = txt_Such.Text

str_Such = "mat_Name LIKE '" & str_Such & "*'" & "OR mat_RefNr LIKE '*" & str_Such & "*'"
RS_Material.FindFirst str_Such
str_Such = "Herst_ID = " & RS_Material!Mat_Herst_ID
RS_Hersteller.FindFirst str_Such
If Not RS_Hersteller.NoMatch Then
    kom_Hersteller.Value = RS_Hersteller!Herst_ID
    Set RS_Form = Forms!frm_Material.Form.RecordsetClone
    str_SQL = "Herst_ID = " & RS_Hersteller!Herst_ID
    RS_Form.FindFirst str_SQL
    If Not RS_Form.NoMatch Then
        Forms!frm_Material.Form.Bookmark = RS_Form.Bookmark
    End If
    RS_Form.Close
    Set RS_Form = Nothing
    str_SQL = "mat_Name LIKE '" & txt_Such.Text & "*'" & "OR mat_RefNr LIKE '*" & txt_Such.Text & "*'"
    Forms!frm_Material.ufrm_Mat.Form.Filter = str_SQL
    Forms!frm_Material.ufrm_Mat.Form.FilterOn = True
End If
txt_Such.SetFocus
txt_Such.SelStart = Len(txt_Such.Text)
If Not RS_Material.EOF And Not RS_Material.BOF Then
   RS_Material.Close
End If
If Not RS_Hersteller.EOF And Not RS_Hersteller.BOF Then
   RS_Hersteller.Close
End If
txt_Such_Change_Exit:
DB.Close
Set RS_Hersteller = Nothing
Set RS_Materiall = Nothing
Set RS_Form = Nothing
Set DB = Nothing
Exit Sub
txt_Such_Change_Error:
MsgBox Err.Number & " " & Err.Description, vbOKOnly, "Fehler"
GoTo txt_Such_Change_Exit
End Sub


Und es Funktioniert wirklich jedes 2. mal!
Wäre Nett wenn mir das jemand erklären könnte.

DF6GL

Hallo,

ein Leerzeichen am Ende einer Eingabe in ein Textfeld wird durch die interne Trim-Funktion des Steuerelementes abgeschnitten...Das kann nicht beeinflusst werden.

Kannst Du mal erklären, warum Du so filtern musst/willst? Ich befürchte, Du machst viel zu viel Wirbel um das Suchen in einer HFO/UFO-Konstruktion.




Küken

Hy, das Problem hat sich gelöst! Ich habe die Daten völlig von dem Formular getrennt. Dieses dient nunmehr nur noch der Eingabe von Suchkriterien. Ich setze somit nur noch den Filter auf das Unterformular und der Rest Passiert per VBA im Hintergrund. Im Unterformular haben die Mitarbeiter nun die Möglichkeit nach Suchkriterien ausgewählte Materialeigenschaften zu korrigieren oder Material zu löschen. Ich verwende ein Unterformular weil ich sonst nicht die Möglichkeit habe Material das bestimmte Kriterien erfüllt farblich hervorzuheben.