Trim Methode funktioniert leider nicht

Moderator: ModerationP

Trim Methode funktioniert leider nicht

Beitragvon Elisabeth1985 » 05. Jan 2018, 11:23

Hallo,
auch Google konnte mir nicht helfen.
Warum funktioniert meine Trim-Methode nicht im VBA Code?
Ich lasse Daten aus Excel einlesen und es kann ggf. sein, dass am Ende eines Datensatzes ein Leerzeichen zu viel ist.
Mein Code sieht wie folgt aus:
Code: Alles auswählen
RTrim (Me!Vertragspartner)


Aber passieren tut da rein gar nix.
Muss ich das Trim vorher deklarieren?

Grüße
Elisabeth
Elisabeth1985
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 55
Registriert: 08. Jun 2017, 10:38

Re: Trim Methode funktioniert leider nicht

Beitragvon Nouba » 05. Jan 2018, 11:32

RTrim ist eine Funktion.
Code: Alles auswählen
   Me.Vertragspartner = RTrim(Me.Vertragspartner)
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Nouba
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17106
Registriert: 13. Mär 2006, 12:55
Wohnort: Berlin

Re: Trim Methode funktioniert leider nicht

Beitragvon Gast49 » 05. Jan 2018, 11:32

Zeige uns bitte den vollständigen Code.
Gast49
 

Re: Trim Methode funktioniert leider nicht

Beitragvon Yaslaw » 05. Jan 2018, 11:36

Sind es sicher nur Leerzeichen oder können es auch Tabulatoren, Zeilenumbrüche etc sein.
rtrim kann nur mit echten Leerzeichen umgehen.
Du kannst dir aber einen eigenen rTrim schreiben, der Leerzeichen, Tabulatoren, Zeilenumbrüche etc. abschneidet
Code: Alles auswählen
Public Function rTrimS(ByVal iString As String) As String
    Static cacheRxTrim As Object
    If cacheRxTrim Is Nothing Then
        Set cacheRxTrim = CreateObject("VBScript.RegExp")
        cacheRxTrim.pattern = "^([\S\s\u0000]*\b)[\s\u0000]*$"
    End If
    rTrimS = cacheRxTrim.replace(iString, "$1")
End Function


Test (Auswertung mit print_r() zu besseren Sichtbarkeit der Sonderzeichen)
Code: Alles auswählen
print_r rtrim(" abc" & vbtab)
<String> ' abc\t'

print_r rTrimS(" abc" & vbtab)
<String> ' abc'
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements sind formatierbar)
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
Benutzeravatar
Yaslaw
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2554
Registriert: 02. Jul 2014, 15:25
Wohnort: Winterthur

Re: Trim Methode funktioniert leider nicht

Beitragvon Elisabeth1985 » 05. Jan 2018, 11:50

Alle schon mal danke.

@Nouba: Lasse ich den Code abspielen, kommt folgende Fehlermeldung:
Code: Alles auswählen
Laufzeitfehler: -2147352567
Die Daten wurden geändert.

Wenn ich dann auf Debuggen gehe, ist die Zeile mit Trim markiert. Gehe ich dann sofort wieder "Play", löscht er mir das Leerzeichen und alles scheint gut zu sein.
Wie kann ich die Fehlermeldung umgehen? DoCmd.SetWarnings False funktioniert leider nicht.

@Yaslaw: Es sind nur Leerzeichen. Diese wurden aus einer Exceltabelle eingelesen. Will ich in Access am Ende einfach ein Leerzeichen (testhalber) mal setzen, wird dieses nicht gespeichert. Nur wenn es durch den Import aus Excel kommt.
Elisabeth1985
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 55
Registriert: 08. Jun 2017, 10:38

Re: Trim Methode funktioniert leider nicht

Beitragvon steffen0815 » 05. Jan 2018, 11:53

Hallo,
zeige bitte den vollständigen Code. Bei welchem Ereignis wird dieser ausgeführt.

Btw:
Du solltest die Leerzeichen schon beim Import verhindern. Nach welchem Verfahren importierst du?
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10850
Registriert: 15. Jan 2006, 12:15

Re: Trim Methode funktioniert leider nicht

Beitragvon DerHoepp » 05. Jan 2018, 12:23

Hallo Elisabeth,

die Fehlermeldung kommt aus deiner selbstgeschriebenen Fehlerbehandlungsunterdrückung (http://office-loesung.de/p/viewtopic.php?f=167&t=755585)! Bau die erst ein, wenn du deinen Code Fehlersicher gestaltet hast.

Gruß
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7138
Registriert: 14. Mai 2013, 11:08

Re: Trim Methode funktioniert leider nicht

Beitragvon Elisabeth1985 » 05. Jan 2018, 13:26

@derHöpp: Aber dieser Code befindet sich an einer ganz anderen Stelle und in einem ganz anderen Formular!?
Elisabeth1985
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 55
Registriert: 08. Jun 2017, 10:38

Re: Trim Methode funktioniert leider nicht

Beitragvon steffen0815 » 05. Jan 2018, 13:35

Hallo,
Aber dieser Code befindet sich an einer ganz anderen Stelle und in einem ganz anderen Formular!?
Aber warum zeigst du ihn dann nicht!
Steffen hat geschrieben:zeige bitte den vollständigen Code. Bei welchem Ereignis wird dieser ausgeführt.

Warum geizt du immer so mit dem Code :)
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10850
Registriert: 15. Jan 2006, 12:15

Re: Trim Methode funktioniert leider nicht

Beitragvon Elisabeth1985 » 05. Jan 2018, 13:40

Here your are:

Code: Alles auswählen
Private Sub btn_ExcelImport_Click()

Call VPImport_Excel
   
lastID = Me.CPVP_ID
Me!lbxCPVP.SetFocus
Me!lbxCPVP.Requery
Me![lbxCPVP] = lastID

'Me.Vertragspartner = RTrim(Me.Vertragspartner)
   
End Sub


Code: Alles auswählen
Public Function VPImport_Excel()

    Dim xsApp As Object
    Dim xsDoc As Object
    Dim RS As DAO.Recordset
    Dim fd As Office.FileDialog
    Dim FilePath As String
    Dim lngStore As Long
    Dim Datum As Variant
    Dim Datum1 As Variant
    Dim Datum2 As Date
    Dim SearchID As String

    Set RS = CurrentDb.OpenRecordset("tabCPVP")
    Set xsApp = GetObject(, "Excel.Application")

    Datum1 = MonthName(Month(Date))
    Datum2 = Format(Date, "dd.mm.yyyy")
   
    xsApp.Visible = True
    Set xsDoc = xsApp.ActiveWorkbook
    RS.MoveLast
    RS.Edit
    RS("Vertragspartner") = xsApp.ActiveSheet.Cells(2, 15) ' O2
    RS("Straße_Vertragspartner") = xsApp.ActiveSheet.Cells(2, 24) & " " & xsApp.ActiveSheet.Cells(2, 25)
    RS("PLZ_Vertragspartner") = xsApp.ActiveSheet.Cells(2, 26)
    RS("Ort_Vertragspartner") = xsApp.ActiveSheet.Cells(2, 27)
    RS("Vertragsdatum") = Datum2
   
    If Datum1 = "Januar" Then
       RS("Monat") = MonthName(Month(DateAdd("m", 1, Date)))
    ElseIf Datum1 = "Dezember" Then
       RS("Monat") = MonthName(Month(DateAdd("m", -1, Date)))
    Else
       RS("Monat") = Datum1
    End If
       
        If xsApp.ActiveSheet.Cells(2, 50) = "Ja" Then
            RS("Devisenanhang") = True
        End If
       
        If xsApp.ActiveSheet.Cells(2, 52) = "Nicht Emir relevant" Then
            RS("nicht_EMIR") = True
        End If

        If xsApp.ActiveSheet.Cells(2, 55) = "" Then
            RS("LEI") = "_"
        Else: RS("LEI") = xsApp.ActiveSheet.Cells(2, 55)
        End If
       
    RS("Email_EMIR") = xsApp.ActiveSheet.Cells(2, 66)
    RS("Melde_Spk") = xsApp.ActiveSheet.Cells(2, 1)
    RS("Melde_Kundenbetr") = xsApp.ActiveSheet.Cells(2, 5)
    RS("Melde_Fax") = xsApp.ActiveSheet.Cells(2, 7)
    RS("Melde_Email") = xsApp.ActiveSheet.Cells(2, 6)

    RS.Update
    Set RS = Nothing

    Set xsApp = Nothing

    MsgBox ("Import erfolgreich!")

End Function
Elisabeth1985
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 55
Registriert: 08. Jun 2017, 10:38

Re: Trim Methode funktioniert leider nicht

Beitragvon steffen0815 » 05. Jan 2018, 13:50

Hallo,
die Leerzeichen beim Import entfernen:
Code: Alles auswählen
RS("Vertragspartner") = trim(xsApp.ActiveSheet.Cells(2, 15))


Ansonsten ist mir dein
Code: Alles auswählen
    RS.MoveLast
    RS.Edit
suspekt.
Wie kannst du dir sicher sein, dass der letzte Datensatz der richtige ist.
Warum kannst du nicht mit Standardfunktionalität die Exceltabelle einbinden und per Anfügeabfrage importieren.
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10850
Registriert: 15. Jan 2006, 12:15

Re: Trim Methode funktioniert leider nicht

Beitragvon Joss » 05. Jan 2018, 14:12

Hallo Elisabeth,

nur ein paar optische Kleinigkeiten, musst du aber nicht ändern: :wink:
statt RS("Vertragspartner") - übliche Schreibweise: RS!Vertragspartner
statt MsgBox ("Import erfolgreich!") - übliche Schreibweise ohne Klammern: MsgBox "Import erfolgreich!"

Gruß
Josef
Meine Suchmaschine: www.fireball.de | Access-Wiki: www.dbwiki.de
Joss
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 161
Registriert: 20. Okt 2012, 11:38

Re: Trim Methode funktioniert leider nicht

Beitragvon Nouba » 05. Jan 2018, 14:22

@Josef,

zu 1) wer bestimmt, was üblich ist? Beide Versionen sollten exakt den selben Code verwenden.
zu 2) stimme ich zu, weil es sich um einen Methodenaufruf handelt.
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Nouba
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17106
Registriert: 13. Mär 2006, 12:55
Wohnort: Berlin

Re: Trim Methode funktioniert leider nicht

Beitragvon Elisabeth1985 » 18. Jan 2018, 08:37

Guten Morgen,
war im Urlaub, deswegen jetzt erst Rückmeldung.

@ Steffen: Der Code mit RS("Vertragspartner") = trim(xsApp.ActiveSheet.Cells(2, 15)) funktioniert!
Vielen Dank auch für die Ratschläge mit meinen " "

Grüße
Elisabeth
Elisabeth1985
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 55
Registriert: 08. Jun 2017, 10:38


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste