Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Select mit unbekannten Text





Frage

Hallo Ihr Access-Götter :-)) Kann mir einer schreiben wie ich nachfolgendes Bewerkstelle: Füge den Text zwischen Artikelname und Artikelbeschreibung von Textfeld"Beschreibung" in das Textfeld"Sortiert" ein. Gibt es gleichzeitig oder nachfolgen noch die Möglichkeit vorhanden Leerzeilen aus dem selektierten Text herauszuschneiden o. ä., da es jede Menge Leerzeilen zwischen dem Artikelnamen und der Artikelbeschreibung gibt. Ich habe es schon so probiert: 1.) Textfeld [Sortiert] Steuerelemnteinhalt = Links([Beschreibung];1 2.) Abfrage Sortiert:Left([Beschreibung],1) Leider erhalte ich immer Fehlermeldungen, obwohl dieses so bei der Access Hilfe beschrieben wird.

Antwort 1 von oliverV

Hallo,

Zitat:

Füge den Text zwischen Artikelname und Artikelbeschreibung von Textfeld"Beschreibung" in das Textfeld"Sortiert" ein.


Wenn ich es richtig verstanden habe, verwende in einer Abfrage:
Sortiert: [Artikelname] & " " & [Beschreibung] & " " & [Artikelbeschreibung]

Ich kann aber auch vollkommen daneben liegen, beschrieb mal ausführlicher was du machen willst (bzw. sollst).

Zu den Leerzeichen, evtl. hilft dir die Glätten-Nummer weiter.

Gruß

Oliver


Antwort 2 von Ossiman

Hallo Oliver,

Text im Textfeld [Beschreibung]

z. B. „Artikelname: kleine Jeanshosen Artikelbeschreibung: Größe 46

Jetzt soll der Text zwischen Artikelname und Artikelbeschreibung
( kleine Jeanshosen )
in das Textfeld [Sortiert] ausgelesen/übergeben werden.


Antwort 3 von oliverV

Ja, wenn alle drei Felder gebundene Felder sind, dann so wie ich geschrieben habe: Erstelle ein neues Feld in einer Abfrage bzw. in der Datenherkunft deines Formulars.
Sortiert: [Artikelname] & " " & [Beschreibung] & " " & [Artikelbeschreibung]

Gruß

Oliver


Antwort 4 von Ossiman

Hallo Oliver.

Artikelname und Artikelbeschreibung sind keine Felder sondern Text!

anderes Beispiel:

Sehr geehrte Damen und Herren als Text [Beschreibung].

Der Text "Damen und"
zwischen "geehrte_"
und "_als"
soll ausgelesen werden.

Oder verstehe ich etwas falsch?


Antwort 5 von Ossiman

Noch eine Frage?

Wieso erhalte ich diese Fehlermeldung:#Name?
bei =Glätten([Text0])

Antwort 6 von oliverV

Andres formuliert aber dennoch nicht deutlicher.
Was heißt „...sind keine Felder sondern Text!“, wo steht der Text drin, doch wahrscheinlich in einem Feld.
Oder meinst du ungebundene Felder ?
Dann beziehe dich mit Formulare![Formularname]![Feldname] auf das gewünschte Feld (Text); dazu muss das Formular natürlich geöffnet sein, damit das Feld ausgelesen werden kann (z.B. mit einer Abfrage, oder der Datenherkunft eines Berichts).

Zum Thema Glätten kann ich dir nicht viel sagen, habe ich selbst noch nicht verwendet; #Name deutet aber auf eine fehlerhafte Feldbezeichnung hin ([Text0]).
Wo setzt du das Glätten ein, in einer Auswahlabfrage, einer Aktionsabfrage, oder in einem Formular bzw. Bericht ?

Gruß

Oliver


Antwort 7 von sj

Hallo,

ist das evtl. eine Lösung, brauchst aber ein wenig Ahnung in VB und SQL, außerdem weis ich nicht ob ich die Frage Richtig verstanden habe.

EINGABE = "Artikelname: kleine Jeanshosen Artikelbeschreibung: Größe 46"

ZWISCHENSCHRITT = Right(EINGABE, Len(EINGABE) - Len("Artikelname:"))

I = InStr(1, ZWISCHENSCHRITT, "Artikelbeschreibung")

AUSGABE = Left(ZWISCHENSCHRITT, I - 1)

Um die Leerzeichen zu entfernen müstest du den String, wie folgt, in einer Schleife laufen lassen.

Stelle des Leerzeichens suchen
I = InStr(1, AUSGABE, " ")

Leerzeichen entfernen
AUSGABE = Left(AUSGABE, I - 1) & Right(AUSGABE, Len(AUSGABE) - I)


Gruß

SJ



Antwort 8 von Ossiman

Hallo Oliver,

es handelt sich um ein ungebundenes Feld [Beschreibung] mit immer wechselnden Texten von denen ich bestimmte Textteile (z. B. immer die letzten 5 Buchstaben von Links oder die 10 Buchstaben nach dem Wort Hallo) auslesen möchte.


Antwort 9 von Ossiman

Hallo SJ,

leider bin ich bei Vb erst am Anfang des Lernprozesses. Wenn ich Deine Lösung unter [Ereignisprozedur] eingebe erhalte ich nur Fehlermeldungen. Leider müsste ich schon einen Anfänger-Sicheren Code haben.


Antwort 10 von oliverV

Hallo,

neue Woche, neues Glück – die Sonne scheint und somit erhellt sich das Thema etwas, wenn ich raus schaue ist es aber dennoch etwas dunstig.

Zitat:

Füge den Text zwischen Artikelname und Artikelbeschreibung von Textfeld"Beschreibung" in das Textfeld"Sortiert" ein.


Das war deine gestellte Frage, ich interpretierte es so, das du verschiedene Feldinhalte in einer Abfrage, einem Formular oder Bericht zusammenführen willst.
Bei gebundenen Felder wäre das meine Antwort1, bei ungebundenen Felder meine Antwort 6.

Ich muss zugeben, deine Ansätze mit Links() verwirrten mich etwas, aber erst durch SJ’s Antwort und deine Antwort 8, habe ich kapiert, das du Teilinhalte auslesen willst.

Weiterhin mutmaße ich: [Beschreibung] ist ein ungebundenes Formularfeld, den Teilinhalt des Feldes benötigst du in einer Abfrage bzw. Datenherkunft (evtl. eines Kombifeldes) in dem selben Formular oder sonst irgendwo.

Ich weis nicht ob es immer der Text zwischen dem Text „Artikelname“ und dem Text „Artikelbeschreibung“ ist, oder ob es um bestimmte Positionen innerhalb des Textes geht (Antw. 8).

Daher hier die benötigten „Werkzeuge“:

Links(Text; AnzZeichen)
Liefert von links beginnend soviel Zeichen wie in AnzZeichen angegeben wurde.
Beispiel: Links(„Artikelname“; 7) = „Artikel“

Rechts(Text; AnzZeichen)
Liefert von rechts beginnend soviel Zeichen wie in AnzZeichen angegeben wurde.
Beispiel: Links(„Artikelname“; 4) = „name“

Teil(Text; StartPos; AnzZeichen)
Liefert einen Teilinhalt, ab StartPos mit der Länge von AnzZeichen.
Beispiel: Links(„Artikelname“; 4; 3) = „kel“

InStr(Text; Zeichen)
Liefert die Position des Zeichens, von links beginnend.
Beispiel: InStr(„Artikel-Name“; "-") = 8

Länge(Text)
Liefert die Länge des Textes
Beispiel: Länge(„Artikel“) = 7


Das sind im Prinzip die Grundfunktionen die du aber beliebig kombinieren kannst.
Einige Beispiel:

Links(Text; InStr(Text; Zeichen)-1)
Liefert den Text bis zum Zeichen
Beispiel: Links(„Artikel-Name“; InStr(„Artikel-Name“; "-")-1) = Artikel

Rechts(Text ;Länge(Text)-InStr(Text; "-"))
Liefert den Text ab dem Zeichen
Rechts(„Artikel-Name“; Länge(„Artikel-Name“)-InStr(„Artikel-Name“; "-")) = Name

Verwendung der String-Funktionen

Text kannst du durch ein gebundenes Feld ersetzen [Feldname], oder durch einen Formularbezug zu einem ungebunden Formularfeld Formulare!Formularname!Feldname.

Bei einer Verwendung in einer Abfrage lautet des Syntax z.b.:
Länge des Beschreibungsfeldes: Länge([Beschreibung])


Zitat:

Füge den Text zwischen Artikelname und Artikelbeschreibung von Textfeld"Beschreibung" in das Textfeld"Sortiert" ein.



Verwendung in einer Abfrage:
Sortiert:Teil([Beschreibung];InStr([Beschreibung];"Artikelname")+12;(InStr([Beschreibung];"Artikelbeschreibung"))-(InStr([Beschreibung];"Artikelname")+12))

ggf. [Beschreibung] durch den Formularsbezug ersetzt.

Gruß

Oliver


Antwort 11 von Ossiman

Hallo Oliver,

da ich am Wochende fertig werden wollte trat ich wie von Dir vermutet auf einem anderen Forum auf.
Ich hoffe Du verzeihst :-))



Modul: (Modulname „Test“)

Function HoleTeilZeichenkette(SuchenIn As String, _
Zeichenkette1 As String, _
Zeichenkette2 As String) As Variant
Dim lStart As Long
Dim lEnde As Long
Dim lPos As Long
Dim lLaenge As Long

lStart = InStr(SuchenIn, Zeichenkette1)

If lStart > 0 Then
lPos = lStart + Len(Zeichenkette1)
lEnde = InStr(SuchenIn, Zeichenkette2)
If lEnde > 0 Then
lLaenge = lEnde - lPos
HoleTeilZeichenkette = Trim$(Mid$(SuchenIn, lPos, lLaenge))
End If
End If
End Function


Aufruf:

Me!Artikel = HoleTeilZeichenkette(Me!Beschreibung, "artikel", "Artikelnummer")


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: