Hallo Fachleute,
als Access-Freizeit-User komme ich nicht weiter und benötige Hilfe.
Ich möchte mit einer Abfrage nur die 10-stelligen Artikel (Textfeld) ausgeben, bei denen die ersten 8 Stellen gleich sind.
Beispiel:
Artikel: 111111111A, 111111112B, 111111113C, 222222222A, 333333335C, 333333336D
Ausgabe: 111111111A, 111111112B, 111111113C, 333333335C, 333333336D
Mit welchen Kriterien kann ich das erreichen?
Kann mir jemand helfen? Danke im Voraus:-)
Erni
Wäre das Dir selber möglich, wenn das Informationskonglomerat von Haus aus in atomare Informationen zerlegt wäre, es also im Mindestfall ein Tabellenfeld mit der Information der 8 Ziffern und eines mit jener der 2 Ziffern gäbe? Das entspräche auch der Best Practice (Empfehlungen der Normalisation).
Das beschreibt dann auch den ersten Lösungsschritt. Dann muss man nur noch die schwere Entscheidung treffen, ob man eine solche Trennung einmalig vornimmt und speichert (=> Datenmodellierung) oder ob man das, was man ja so "gut" beherrscht, bei jeder neuen Verwendung der Daten immer wieder machen und dabei Aufwand investieren und Zeit verschwenden will.
Zur Umsetzung gibt es Textverarbeitungsfunktionen wie Links, Rechts, Teil, Instr, Len sowie dann auch anspruchsvollere und leistungsfähigere Funktionalitäten wie reguläre Ausdrücke. Die Erstgenannten solltest Du ohne große Beschreibungen selber umsetzen können.
Hallo Ernie,
wie schon mein Vorredner sagte, erleichert, vereinfacht und beschleunigt eine Normalisierung der Daten das Geschehen. Mit einer Funktion Liste per SQL aufbauen (https://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen) (o.ä.) kann man dann die Ausgabe erzielen.
SELECT SQLLIste( 'SELECT a & b
FROM v
WHERE a = "' & a & '"', ', ') AS Artikel
FROM v
GROUP BY a
HAVING Count( a ) > 1;a stellt die ersten 8 Ziffern und b die folgenden 2 Ziffern dar, während v für die Tabelle steht.
Mit einem Datenbankserver geht's in einem Schritt, wie dieser <dbfiddle> (https://dbfiddle.uk/?rdbms=postgres_11&fiddle=ccc0c141895db243fe37688acbf110f8) zeigt.
Hallo liebe Fachleute,
danke für Eure schnellen Antworten. Ich werde demnächst versuchen Eure Vorschläge mit meinen doch recht geringen Kenntnissen umzusetzen.
Danke.
Erni