Office: (Office 2016) Abfrage Feld von links bis zu einer bestimmten Markierung auslesen

Helfe beim Thema Abfrage Feld von links bis zu einer bestimmten Markierung auslesen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Guten Tag zusammen ich bin an einer Abfrage am basteln. Ich möchte widerholende Werte gruppieren die aber in der gesamten Länge sich doch... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von chiefhenk, 12. November 2020.

  1. Abfrage Feld von links bis zu einer bestimmten Markierung auslesen


    Guten Tag zusammen
    ich bin an einer Abfrage am basteln. Ich möchte widerholende Werte gruppieren die aber in der gesamten Länge sich doch unterscheiden.

    BSP:

    Titel
    Akte X S03E23 - Ferngesteuert
    Akte X S03E24 - Der Tag steht schon fest
    Akte X S04E01 - Herrenvolk
    Akte X S04E02 - Blutschande
    Akte X S04E03 - Teliko
    ...
    art Titel
    Auf Achse S03E12 - Abenteuer in Valparaiso
    Auf Achse S03E13 - Elisa
    Auf Achse S04E01 - Willers Rueckkehr
    Auf Achse S04E02 - Meersdonks Sohn
    Auf Achse S04E03 - Ulli

    Dies sollte dann in einer separaten Abfrage folgendermassen gruppiert sein
    Titel gruppiert
    Akte X S03
    Akte X S04
    ...
    Auf Achse S03
    Auf Achse S04

    Klar sagt mir nun jemand ich soll das auftrennen...
    Titel / Serie / Episode...
    Würde ich die Datenbank heute Neu machen würde ich das tun.
    Wir reden aber von ca. 4500 Datensätzen die Aufgetrennt werden müssten.

    Nun ich stelle mir vor das das irgendwie mit dem Befehl Left gehen könnte, aber ich weis nicht wie ich das hinkriege, das es als Endpunkt Nur bis E... geht, dann ist das gruppieren keine Sache mehr. Hat jemand sowas schon mal gemacht?

    Freue mich auf einen Code der funktioniert... lg

    :)
     
    chiefhenk, 12. November 2020
    #1
  2. Im Direktfenster
    Code:
    Und, übrigens, 4500 DS mit einer Aktualisierungsabfrage zu trennen
    dauert wahrscheinlich keine Sekunde.
     
    Beaker s.a., 14. November 2020
    #2
  3. Hallo,
    ich würde das Auftrennnen allem anderen vorziehen, zumal 4500 DS im Bereich von Kleinigkeiten liegen.
    Das Grundgerüst zum Auftrennen hat ja Ekkehard schon geliefert.
    Und wenn Du dann schon beim Auftrennen bist, so gehört auch die Serie in eine eigene Spalte. Und Staffel und Episode als Zahl, nicht als Text.
    Dann wird auch das Gruppieren zu einem Kinderspiel.
     
    gpswanderer, 14. November 2020
    #3
  4. Abfrage Feld von links bis zu einer bestimmten Markierung auslesen

    Du bist gedanklich schon auf dem richtigen Weg.
    dann gucke mal:
    Code:
    Code:
    Jetzt brauchst Du nur noch die Konstante durch eine Schleife über alle Deine Werte austauschen, und das Debug.Print sollte ersetzt werden durch ein Schreiben der Inhalte in eine Tabelle (Recordset / AddNew).
     
  5. \@Eberhard

    hab ich mir`s doch fast gedacht.
    Der RegEx-Experte schlägt wieder zu *wink.gif*

    Deine Tipp`s dazu sind immer wieder unschlagbar
    und haben mich (mittlerweile fast nur noch mitlesend) immer wieder inspiriert .
     
  6. Danke für den Ansatz:

    Ich bekomme leider immer Fehlermeldungen in der Abfrage, ich mache da sicher etwas falsch:

    folgendes ist vorhanden
    [Datenbankname]
    Feldname [art] unterscheidet "Serie", "Doku", "Film"
    Feldname [Titel] da stehen die kompletten Titel und Episodendaten drin.

    Ich möchte eigentlich eine ganz simple Liste haben, bei denen die Episoden ausgeblendet sind und nur Auf Achse S01 usw. steht. Dies brauche ich um fehlende Serien ausfindig zu machen und evt. nachzukaufen.

    Also müsste der Bericht eigentlich ein Feld aufsteigend haben [Serien]

    Wie muss ich die Abfrage gestallten und den Code einfügen, dass das funktioniert.
     
    chiefhenk, 14. November 2020
    #6
  7. Und wenn es nicht
    Auf Achse
    heißt, sondern
    Am Ende
    ?
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  8. Abfrage Feld von links bis zu einer bestimmten Markierung auslesen

    Nun, wenn man daraus eine richtige Datenbank nach bewährten herkömmlichen Regeln machen wollte, würde man nicht bei der Trennung der Texte stehen bleiben, sondern die Einzeldaten in Tabellen einer 1:n-Beziehung verteilen. Mit der Serientabelle hätte man dann unmittelbar und dauerhaft eine solche eindeutige Liste zu den Serien.
     
  9. Hallo Maxel,
    Ich wollte nur das prinzipielle Vorgehen des Trennens zeigen.
    Eine professionellere Methode, die dieses Problem wohl auch umgeht (bin da
    leider gar nicht firm), hat Eberhard gezeigt.

    gruss ekkehard
     
    Beaker s.a., 15. November 2020
    #9
  10. Ich würde das RegExp-Muster (#4 von ebs17) noch etwas abändern, damit
    • die Buchstaben S und E nicht mit der Zahl, sondern nur die Zahlen in Tabellenfelder Serie und Episode abgespeichert werden könnten, und
    • die Suche etwas toleranter mit Leerzeichen umgeht.

    Weitere Ergänzung:
    • Die resultierenden Texte (Seriennamen und Episodennamen) noch mit Trim() von eventuellen unnötigen umgebenden Leerzeichen befreien, und
    • prüfen, ob das Muster wirklich passt und somit das Match und die Submatches überhaupt vorhanden sind, zwecks Vermeidung Fehlermeldung:
    Code:
     
  11. Mit den genannten Ausfeilungen meines Ansatzes (Darstellung eines Prinzips eines Trennens) gehe ich mit, wobei ich dann die Zahl auch als Zahl an ein Datenbankfeld übergeben würde.
    Code:
    Das hilft aber nur, wenn man mit dem Code und einem Ablauf zur Einbindung dessen etwas anfangen kann.
     
  12. Hallo Maxel...

    Ich weis nicht ob ich mich falsch ausgedrückt habe.
    Die Datenbank läuft so wie sie da steht gut.

    Ich brauche lediglich einen Bericht, der nur den ersten Teil bis S+Zahl anzeigt

    Im Feld Titel ist die Ganze info und im Virtuellen (Feld Serie*Smilie soll dann der bereinigte Text stehen. Ich weis leider nicht wie ich das in einem Abfrage Feld eingeben (syntax) muss ohne das ich mit deinem Code einen Fehler bekomme.

    Also Abfrage 1
    [Auswahl] [Titel] Serie:
    "Serie" "Titel komplett" "Titel Virtuel erzeugt"
    Aufsteigend


    "Serie" Akte X S03E23 - Ferngesteuert Akte X S03
    "Serie" Akte X S03E24 - Der Tag steht schon fest Akte X S03
    "Serie" Akte X S04E01 - Herrenvolk Akte X S04
    "Serie" Akte X S04E02 - Blutschande Akte X S04
    "Serie" Akte X S04E03 - Teliko Akte X S04
    ...

    "Serie" Auf Achse S03E12 - Abenteuer in Valparaiso Auf Achse S03
    "Serie" Auf Achse S03E13 - Elisa Auf Achse S03
    "Serie" Auf Achse S04E01 - Willers Rueckkehr Auf Achse S04
    "Serie" Auf Achse S04E02 - Meersdonks Sohn Auf Achse S04
    "Serie" Auf Achse S04E03 - Ulli Auf Achse S04


    Abfrage 2
    Serie:
    Gruppiert und Aufsteigend

    Akte X S03
    Akte X S04
    ...
    Auf Achse S03
    Auf Achse S04


    In der Abfrage 2 kann ich dann nur das Feld Serie Gruppieren.
    Daraus möchte ich dann einen mehrspaltigen Bericht machen.

    Den anderen danke ich auch herzlich, aber es schiesst am Ziel vorbei. Es geht nicht darum hier eine Diskussion auszulösen wie man das besser machen kann. Es geht darum eine kurze laufende Codesequenz zu erhalten, die mein jetzigen Datenbankzustand berücksichtig und mein Problem löst.
     
    chiefhenk, 16. November 2020
    #12
  13. Abfrage Feld von links bis zu einer bestimmten Markierung auslesen

    Hallo Maxel...
     
    chiefhenk, 16. November 2020
    #13
  14. Hallo chiefhenk,

    hier eine (nicht perfekte) Lösung mit instr (Berechnetes Feld für Abfrageentwurf):
    Code:
    [Titel komplett] muss natürlich durch den tatsächlichen Tabellenfeldnamen ersetzt werden.

    Das große "E" darf zwar im Titel an einem Wortanfang oder -ende vorkommen, allerdings nicht im Wortinneren z.B. AKTEN X, Akte 0E0, Akte DEF usw.

    Mit großem "E" im Wortinneren funktioniert diese Lösung leider nicht. Solche Titel müssten vorher irgendwie umgeschrieben werden (z. B. Kleinschrift etc.).
     
  15. Mir fehlt da die Vorstellung dazu, wenn Du mit den Inhalten so wie sie sind nichts anfangen kannst.

    Abwandlung auf die sehr enge Aufgabenstellung: Die obige Prozedur wird umformuliert in eine Funktion, die ebenfalls in einem Standardmodul zu platzieren wäre. Diese lässt sich unmittelbar in einer Abfrage einsetzen.
    Code:
    Mit etwas Verständnis zu dem oben angegebenen Beispiel und Zusammenstreichen hätte man sich das durchaus selber ableiten können.

    Einsatz:
    Code:
    Für jene, die es verstehen wollen: Warum bevorzugt man dringend eine einmalige Trennung und Speicherung der atomaren Informationen in eigenen Tabellenfeldern?

    1) Man muss ja überhaupt erst einmal in der Lage sein, trennen zu können. Die Freude am Zusammenpappen von Informtionen hin zu schöner oder intelligenter Optik ist weit verbreitet und gerne nachgeahmt, das Erwachen kommt später. Die Anfrage zeigt dieses allererste Problem. Da ist ein einmaliger Vorgang, ggf. unterstützt durch händische Maßnahmen, wo einem das nötige Code-Handwerkszeug nicht verfügbar oder zu aufwändig ist, nachvollziehbar praktikabler. Bei Einmalig kann man auch mal etwas mehr Aktion investieren.

    2) Wenn man es technisch kann, ist es doch immer noch Aufwand (Codeaufwand, benötigte Zeit dafür). Dieser Aufwand ist mit jedem Aufruf der Abfrage, des Berichtes usw. neu zu treiben, oder eben nicht.
    Ist die jetzige Abfrage nicht gewünschtes Endergebnis, sondern Datenbasis für folgende Verarbeitungen, können sich anfängliche kleine Maßnahmen in ihrer zeitlichen Wirkung multiplizieren und exponentieren, aufregendere Maßnahmen mit externen Objekten und7oder höherer Komplexität umso wirkungsvoller.
    Das Zusammensetzen von Teilen zu einem Gesamtstring, wenn man diesen (zum Anschauen!) braucht, ist dagegen drastisch einfacher und dürfte jedem ohne große Anstrengung gelingen.

    3) Wenn man sich mal kurz in die Welt von Datenbanken eindenken möchte, wo man nicht nur seine 377 Filme oder 426 Weinflaschen verwaltet, sondern es mit wirklichen Datenmengen zu tun hat (10.000, 100.000, ...), wird es sehr schnell offenkundig. Masse ist mehr Arbeit und kostet mehr Zeit, recht schnell hin bis zu unerträglich langen Laufzeiten. Mit "passenden" Gestaltungen kriegt man auch jeden hochneuen Superrechner in die Knie.
    Da kommt man inhaltlich rasch zurück auf den Punkt 2). Zusätzlich wird man jede Hilfe in Anspruch nehmen wollen, die man kriegen kann. Eine davon heißt Indexnutzung, also einen Index für nötige Felder zu haben und zu nutzen.
    Das Haben eines Index kann man noch leicht organisieren. Auf ein berechnetes Feld wird man aber in Jet-SQL nie einen Index nutzen können. Als indexausschließende Berechnung reicht da schon eine Multiplikation einer Zahl mit Eins, ein Year auf ein Datum, ein NOT als Ausschließung. Mögliche und benötigte Performance: Futsch.
    Zur Indexnutzung braucht man schon das unbehandelte pure Tabellenfeld.

    4) Die Auftrennung in atomare gespeicherte Informationen entspricht den Regeln der Normalform. Diese sind nicht (nur) böse graue Theorie, mit denen man gerade anfangs so belästigt wird, sondern formulieren Dinge, die für eine gute Praxis bewährt und notwendig sind.
     
Thema:

Abfrage Feld von links bis zu einer bestimmten Markierung auslesen

Die Seite wird geladen...
  1. Abfrage Feld von links bis zu einer bestimmten Markierung auslesen - Similar Threads - Abfrage Feld bestimmten

  2. Abfrage mit leeren Feldern

    in Microsoft Access Hilfe
    Abfrage mit leeren Feldern: Hallo zusammen Meine Access-Kenntnisse beschränken sich leider wirklich auf ein Minimum aber trotzdem möchte ich mich hier in diesem Bereich ein wenig weiterentwickeln :-) Ich habe eine Datenbank...
  3. Unterabfrage als Feld in Abfrage

    in Microsoft Access Hilfe
    Unterabfrage als Feld in Abfrage: Guten Morgen! Ich möchte gerne eine Unterabfrage nutzen, um einen Feldinhalt darzustellen. Ich habe eine Tabelle mit Kilometerständen. Nun möchte ich für jedes Kennzeichen, den aktuellsten...
  4. Abfrage eines Feldes mit Berechnung

    in Microsoft Excel Hilfe
    Abfrage eines Feldes mit Berechnung: Moin, ich bin neu im Excel-Programmieren, und habe folgendes Problem nirgendwo gefunden, vielleicht kann mir jemand helfen. Im Feld A1 soll manuell ein Buchstabe eingetragen: z.B.: j / n...
  5. Abfrage in Excel importieren - Werte von mehrwertigen Feldern als Text anzeigen

    in Microsoft Access Hilfe
    Abfrage in Excel importieren - Werte von mehrwertigen Feldern als Text anzeigen: Hallo Ihr Lieben, ich habe verschiedene Felder als mehrwertiges Feld definiert und z.B zusätzliche Tabellen erstellen, aus welchen ich Daten für das mehrwertige Feld ziehe. Nun möchte ich eine...
  6. Berechnetes Feld in Abfrage Datentyp Währung

    in Microsoft Access Hilfe
    Berechnetes Feld in Abfrage Datentyp Währung: Hallo Community, ich sitze seit einiger Zeit vor folgendem Problem. Ich habe zwei Felder (Datentyp Währung, Format 0.000) aus zwei unterschiedlichen Tabellen mit den Werten 0.001 und 0.004 über...
  7. In Abfrage summieren von Feldern

    in Microsoft Access Hilfe
    In Abfrage summieren von Feldern: Hallo, ich bin noch Access Anfänger oder Wiederverwender und habe ein Problem (vergessen wie es geht). Ich möchte aus sieben Feldern eine Summe bilden die ich dann durch die Anzahl der Felder...
  8. Abfrage (Feld auf nur ein bestimmtes Zeichen prüfen)

    in Microsoft Access Hilfe
    Abfrage (Feld auf nur ein bestimmtes Zeichen prüfen): Hallo Zusammen, ich habe eine ganz normale Abfrage und will in einem Feld nur ein bestimmtes Zeichen in einer bestimmten Stelle prüfen. Ich weis wie es im Basic mit dem Mid-Befehl geht. Ich will...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden