Office: (Office 2013) Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz

Helfe beim Thema Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe ein Problem mit einer Access-Abfrage, für das ich einfach keine Lösung finde und deshalb nachfragen muss. Ich habe 2 Spalten... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Jenny0815, 9. September 2019.

  1. Jenny0815 Neuer User

    Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz


    Hallo, ich habe ein Problem mit einer Access-Abfrage, für das ich einfach keine Lösung finde und deshalb nachfragen muss.

    Ich habe 2 Spalten zusammengeführt und die beiden Einträge mit Komma und Leerzeichen voneinander getrennt bzw. in einem anderen Fall in Klammern gesetzt. Das sieht dann im Idealfall so aus: "Eintrag 1 (Eintrag 2)" bzw. "Eintrag 1, Eintrag 2". Weil aber nicht jeder Datensatz einen Eintrag hat, sieht es eben auch manchmal z.B. so aus: "Datensatz 1 ()". Mit dem Ersetzen-Befehl wollte ich diese Doppelklammer entfernen: (Ersetzen([Spaltenname];"()";"").

    Das Problem: Access entfernt nicht die Klammern, sondern alle Datensätze mit "()" in dieser Spalte aus der Abfrage.

    Kann mir jemand bitte sagen, woran das liegt und wie der Befehl korrekt aussieht? Oder wie ich sonst zwei Spalten elegant zusammenführen kann, ohne dass die einzelnen Einträge aneinanderkleben?


    Vielen Dank schon mal!
     
    Jenny0815, 9. September 2019
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    angenommen, du hast eine Tabelle namens "Tabelle1", welche 3 Felder (=Spalten) besitze:
    1) Feld namens "ID" (Felddatentyp: Autowert) enthalte eine eindeutige Zahl
    2) Feld namens "Feld1" (Felddatentyp: Kurzer Text) enthalte eine Zeichenkette, wie zB. "Eintrag 1" oder "Datensatz 1" oder "", etc.
    3) Feld namens "Feld2" (Felddatentyp: Kurzer Text) enthalte eine Zeichenkette, wie zB. "Eintrag 2" oder "", etc.

    Mit folgender SQL-Abfrage kannst du deine gewünschte Abfrage erstellen:
    SELECT ID, Trim(Replace([Feld1] & "(" & [Feld2] & ")","()","")) AS Feld1Feld2
    FROM Tabelle1;

    wobei diese Abfrage 2 Felder produziert:
    1) Feld namens "ID", identisch mit dem Tabellenfeld "ID"
    2) Feld namens "Feld1Feld2", enthält die Verkettung der Tabellenfelder "Feld1" und "Feld2", wobei der Inhalt von Feld2 in runde Klammern eingeschlossen wird.
    3) Ist jedoch Feld2 leer, werden die runden Klammern im Feld "Feld1Feld2" entfernt (Funktion "Replace")
    4) Enthält "Feld1Feld2" am Anfang oder am Ende Leerzeichen, werden auch diese entfernt (Funktion "Trim").

    Einen gleichen Effekt könnte man mit folgender SQL-Abfrage erzielen:
    SELECT ID, Trim([Feld1] & IIf(IsNull([Feld2]),"","(" & [Feld2] & ")")) AS Feld1Feld2
    FROM Tabelle1;


    Anmerkung: Die vorgenannten SQL-Abfragen erscheinen bzw. können eingegeben werden (auch mit Copy+Paste), wenn du statt der Abfrage-Entwurfsansicht die Abfrage-SQL-Ansicht verwendest.
     
    Exl121150, 11. September 2019
    #2
  3. Jenny0815 Neuer User
    Vielen Dank Anton! Ich kenne mich mit SQL leider nicht gut genug aus, um dein Beispiel korrekt in meine Abfrage zu übertragen (es hat leider keine versuchte Variante funktioniert), deswegen hier meine konkrete Anwendung:

    In meiner Abfrage generiere ich das Feld/die Spalte "Herkunft: [Händler] & ", " & [Herkunftsland] & ", " & [Datum]". Es werden also 3 Spalten vom Felddatentyp Kurzer Text in eine namens "Herkunft" zusammengeführt, getrennt durch ", " (in einer anderen Abfrage gibt es noch den Fall mit den Klammern). Da einige Felder in den Spalten leer sind, entstehen so hässliche Zeichenfolgen wie ", , ". Mit dem richtigen Ausdruck würde ich die gerne löschen, ohne dass die Abfrage gleich den ganzen Datensatz entfernt.

    Ich hatte auch versucht, mit einer zweiten Abfrage diese Zeichenfolgen zu entfernen. Sie basierte auf der Abfrage, mit der ich die Felder in "Herkunft" zusammengeführt hatte. Der Ausdruck betrifft also das Feld "Herkunft" und enthält durch die Zusammenführung von 3 teilweise leeren Feldern Einträge wie ", , ", ", , 1985 " oder "Likörfabrikation, , '58".

    Ich würde mich sehr freuen, wenn du mir dafür den passenden Befehl (ob SQL-Abfrage oder Ausdruck in der Entwurfsansicht) konstruieren könntest. Notfalls muss ich die Abfrage in eine Tabelle exportieren und das über Suchen/Ersetzen regeln, aber es muss doch auch über die Abfrage funktionieren.
     
    Zuletzt bearbeitet: 11. September 2019
    Jenny0815, 11. September 2019
    #3
  4. Exl121150 Erfahrener User

    Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz

    Hallo,

    ich habe aufgrund deiner Angaben eine Demo-Tabelle "Tabelle1" angelegt, die folgende Felder (=Spalten) bzw. Sätze (=Zeilen) besitzt.
    Diese Tabelle enthält 8 Sätze, um mit ihnen alle Leerfeld-Kombinationen zeigen zu können.
    Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz Jenny0815_Tabelle1.jpg
    Ferner habe ich eine Abfrage namens "Abfrage1" erstellt, die auf die Felder/Sätze der Tabelle "Tabelle1" zugreift. Die Datenblattansicht dieser Abfrage gestaltet sich wie folgt:
    Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz Jenny0815_Abfrage1.jpg
    • In den ersten 4 Feldern (ID, Händler, Herkunftsland, Datum) habe ich einfach die Felder der Tabelle wiederholt, um eine schnelle Vergleichbarkeit zu ermöglichen.
    • Im Feld "Herkunft" sind die Felder "Händler","Herkunftsland","Datum" enthalten, wenn man sie einfach mit &", "& verknüpft mit den unschönen Kommas.
    • Im Feld "Herkunft_korrigiert" sind die Felder "Händler","Herkunftsland","Datum" mittels Komma+Leerzeichen verkettet, ohne dass überflüssige Kommas/Leerzeichen aufscheinen.
    Um dieses Resultat zu erzielen, ist in der Abfrage-Entwurfsansicht Folgendes zu veranlassen:
    1. Die Abfrage ist mit der Tabelle "Tabelle1" zu verknüpfen (mittels "Tabelle anzeigen").
    2. In den Abfragespalten ist in Spalte 1 (Zeile Feld: "ID"/ Zeile Tabelle: "Tabelle1") einzugeben.
    3. In den Abfragespalten ist in Spalte 2 (Zeile Feld: "Händler" / Zeile Tabelle: "Tabelle1") einzugeben.
    4. In den Abfragespalten ist in Spalte 3 (Zeile Feld: "Herkunftsland" / Zeile Tabelle: "Tabelle1") einzugeben.
    5. In den Abfragespalten ist in Spalte 4 (Zeile Feld: "Datum" / Zeile Tabelle: "Tabelle1") einzugeben.
    6. In den Abfragespalten ist in Spalte 5 (Zeile Feld: "Herkunft: [Händler] & ", " & [Herkunftsland] & ", " & [Datum]") einzugeben.
    7. In den Abfragespalten ist in Spalte 6 (Zeile Feld: "Herkunft_korrigiert: Teil(Wenn(IstNull([Händler]);"";", " & [Händler]) & Wenn(IstNull([Herkunftsland]);"";", " & [Herkunftsland]) & Wenn(IstNull([Datum]);"";", " & [Datum]);3)") einzugeben.
    Wenn du über das Kontextmenü der rechten Maustaste die SQL-Ansicht der Abfrage auswählst, müsste Folgendes angezeigt werden:
    Code:
    SELECT 
       ID, 
       Händler, 
       Herkunftsland, 
       Datum, 
       [Händler] & ", " & [Herkunftsland] & ", " & [Datum] AS Herkunft, 
       Mid(IIf(IsNull([Händler]),"",", " & [Händler]) & IIf(IsNull([Herkunftsland]),"",", " & [Herkunftsland]) & IIf(IsNull([Datum]),"",", " & [Datum]),3) AS Herkunft_korrigiert
    FROM Tabelle1;
    
    Im Prinzip wird dabei für jedes der 3 infrage kommenden Felder überprüft, ob das Feld leer (=NULL) ist:
    • Falls ja: Es wird nur eine leere Zeichenkette "" zurückgegeben;
    • Falls nein: Es wird der Zeichenkettenausdruck ", "&[Feld] zurückgegeben.
    Diese so erzeugten Zeichenketten für jedes der 3 Felder werden miteinander verkettet und die ersten beiden Zeichen (Funktion Mid(Verkettung, 3)) entfernt.
     
    Exl121150, 12. September 2019
    #4
  5. Jenny0815 Neuer User
    Hallo Anton, wow, vielen Dank für deine Hilfe! Es klappte zunächst nicht, als ich die Feldbezeichnung unter Punkt 7 in die bestehenden Abfrage übertragen hatte, ich musste erst die letzten beiden Zeichen )" entfernen. Dann ging es. Ich hatte auch eine neue Abfrage in der SQL-Ansicht mit deinen Angaben per Copy&Paste erstellt, das funktionierte auch.

    Ich bin sehr froh, ganz herzlichen Dank!
     
    Jenny0815, 13. September 2019
    #5
Thema:

Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz

Die Seite wird geladen...
  1. Abfragen: Ersetzen-Befehl entfernt den ganzen Datensatz - Similar Threads - Abfragen Ersetzen Befehl

  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. Import Daten aus Access Abfrage klappt nicht

    in Microsoft Excel Hilfe
    Import Daten aus Access Abfrage klappt nicht: Moin, ich habe ein Problem. Ich habe eine Datenbank in Access mit diversen Tabellen und Abfragen. Jetzt habe ich eine neue Abfrage erstellt und muß das Ergebnis täglich in eine Exceldatei...
  4. Auslesen einer Abfrage in VBA Modul

    in Microsoft Access Hilfe
    Auslesen einer Abfrage in VBA Modul: Hallo zusammen, ich wünsche allen ein frohes und gesundes Jahr 2024. Ich habe eine alte Access 2003 und da habe ich zur Ermittlung von Planungsdaten folgende Funktion genutzt, jetzt mit Office 365...
  5. Nur aktuelles Jahr in Abfrage auslesen

    in Microsoft Access Hilfe
    Nur aktuelles Jahr in Abfrage auslesen: In meiner Abfrage habe ich eine Spalte AktJahr erstellet. Das Datum ermittle ich mit AktJahr: Datum(). Es soll nur die aktuelle Jahreszahl angezeigt werden. Mehrere Versuche mit der...
  6. SQL-Abfrage mit where

    in Microsoft Access Hilfe
    SQL-Abfrage mit where: SQL-Abfrage mit where-Parameter. PNrHaupt ist eine Zahl. Ich vermute, da liegt der Fehler, aber ich weiss nicht, wie ich das darstellen soll. Bei jeder neuer PNrHaupt soll eine neue Datei erstellt...
  7. Umlaute in Tabelle/Abfrage ersetzen

    in Microsoft Access Hilfe
    Umlaute in Tabelle/Abfrage ersetzen: Ich möchte gerne für eine MySQL-Datenbank einige Tabellen aus Access exportieren. Dabei ist es erforderlich Umlaute (ö, ä, ü, ß) in oe, ue, ae, ss umzuwandeln. Hab ihr einen Tip für mich wie ich...
  8. Komma durch Punkt ersetzen in Abfrage

    in Microsoft Access Hilfe
    Komma durch Punkt ersetzen in Abfrage: Hallo, ich habe eine Abfrage in der zwei Felder Zahl (Double) sind in der Ursprungstabelle. Da es sich um Dezimalzahlen handelt sind diese bei mir mit Komma getrennt. Ich möchte nun aber einen...
Schlagworte:
  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