Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: RunningManNetto am Oktober 19, 2018, 10:31:30

Titel: Spalten auswerten und in neue Spalte schreiben
Beitrag von: RunningManNetto am Oktober 19, 2018, 10:31:30
Hallo liebe Forumsmitglieder,

ich komme nicht weiter bei einem Problem und hoffe hier finde ich ein wenig Hilfe.

Ich habe mehrere Spalten mit T-Shirt-Grössen und möchte diese gerne zusammenfassen in Spalte Gesamt für den Etikettendruck.

XS | S | M | L | XL | XXL | XXXL | Gesamt
1  |    |    |    | 2   |       |          | 1x XS / 2x XL

Wenn nichts drin steht sollte auch nichts erscheinen und wenn mehrere T-Shirts drin stehen, dann sollen sie mit einem Querstrich getrennt werden.

Ich hoffe es meldet sich jemand :-)

Gruss RunningManNetto
Titel: Re: Spalten auswerten und in neue Spalte schreiben
Beitrag von: MzKlMu am Oktober 19, 2018, 11:09:36
Hallo,
die Tabelle ist falsch aufgebaut.
Die Tabelle sollte so ausssehen:
Artikel  Größe    Menge
T-Shirt   XS        1
T-Shirt   XL        2

Wobei für Artikel und Größe nur deren Fremdschlüssel gespeichert wird.
Das heißt, auch für die Größen wird eine Tabelle benötigt.
Dann wird die Abfrage nur über Artikel und Größe gruppiert und die Menge summiert. Das in eine neue Spalte zu schreiben ist überflüssig.

Wie kommen eigentlich die Mengen in die Datenbank, manuell eingetragen ?

Die Umstrkturierung ist unbedingt erforderlich, sonst wirst Du nicht viel Freude haben, denn Du hast ja bestimmt auch noch andere Größen, z.B. für Schuhe, deutsche Größen usw.
Titel: Re: Spalten auswerten und in neue Spalte schreiben
Beitrag von: RunningManNetto am Oktober 19, 2018, 12:20:06
Hallo MzKlMu,

die Daten kommen bereits aus einer Datenbank (.csv) und gehören immer jeweils einen Teilnehmer pro Zeile.

NR | Name      |XS | S | M | L   | XL | XXL | XXXL | Gesamt
1  | Oldmann  |  1 |     |    |     | 2  |        |         | 1x XS / 2x XL
2  | Kört         | 1  |    |    |  1  |     |        |         | 1x XS / 1x L

Die anderen Informationen hatte ich ertmal weggelassen. Die Daten können bis zu 3000 Zeilen (Teilnehmer) enthalten.

Vielleicht ist dies besser zu verstehen.

Gruss RunningManNetto
Titel: Re: Spalten auswerten und in neue Spalte schreiben
Beitrag von: MzKlMu am Oktober 19, 2018, 12:36:54
Hallo,
ich habe es vorher auch schon verstanden.
Du musst aus der CSV eine normaliserte Struktur herstellen, wie oben beschrieben.
Titel: Re: Spalten auswerten und in neue Spalte schreiben
Beitrag von: RunningManNetto am Oktober 19, 2018, 12:55:31
Hallo MzKlMu,

vielen Dank erstmal für Deine Hilfe. Da ich noch nicht so fit bin in Access, bräuchte ich ein wenig unterstütung bei der Umsetzung.

Muss ich das denn mit einem SQL Code umsetzen?

Gruss RunningManNetto
Titel: Re: Spalten auswerten und in neue Spalte schreiben
Beitrag von: Lachtaube am Oktober 19, 2018, 13:11:11
Wenn das der alleinige Zweck ist, kann man Gesamt in einer SQL-Abfrage auch so erfassen.
SELECT Mid( Format(   XS, '" / "0" S"' )
          & Format(    S, '" / "0" S"' )
          & Format(    M, '" / "0" M"' )
          & Format(    L, '" / "0" L"' )
          & Format(   XL, '" / "0" XL"' )
          & Format(  XXL, '" / "0" XXL"' )
          & Format( XXXL, '" / "0" XXXL"' ), 3 ) AS Gesamt
FROM   DeineImporttabelle;
Für andere Operationen mit den Daten empfiehlt sich aber die von Klaus vorgeschlagene Struktur.
Titel: Re: Spalten auswerten und in neue Spalte schreiben
Beitrag von: RunningManNetto am Oktober 19, 2018, 13:51:46
Hallo Lachtaube,

vielen Dank erstmal für die Lösung. Habe auch gleich umgesetz :-). Wenn kein Wert in der Tabelle steht, dann darf auch nichts drin stehen - kein 0 S usw.

Wie soll das denn gehen?

Gruss RunningManNetto
Titel: Re: Spalten auswerten und in neue Spalte schreiben
Beitrag von: Lachtaube am Oktober 19, 2018, 15:40:59
0 ist ein Wert, während hingegen Null kein Wert wäre. Durch Kriterien kann man in der Regel Werte einschränken, was aber bei den vielen Spalten schier unmöglich ist - in der Normalform wäre das nur eine einzige Bedingung.

Empfehlung: Ersetze in Aktualisierungsabfragen die 0 jeweils durch Null..