Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Teile von Feldern zweier Tabellen vergleichen





Frage

Hallo, ich habe folgendes Problem: Tabelle 1: KundenNr; Name; RechnungsNr; Betrag Tabelle 2: Name; Verwendungszweck1; Verwendungszweck 2 Ich möchte jetzt beide Tabellen "matchen", d.h. zeige mir alle Zeilen der Tabelle 2, bei der in irgendeinem der Felder die Zeichenfolge aus den Spalten der Tabelle 1 (also entweder Inhalt der Spalte KundenNr oder Name, Verw..1 oder Verw2) vorkommen. Hintergrund: Ich habe eine Offene Postenliste (Tabelle1) und die Daten aus den Kontoauszüge bzw. Überweisungen (Tabelle 2) und möchte dei Zahlungen den Offenen Posten zuordnen. Problem hierbei ist, daß der Inhalt der Felder aus Tabelle 1 zum Teil oder ganz in einem - oder mehreren Feldern - der Tabelle 2 vorkommen können. Hat jemand eine Idee, wie ich hier vorgehen köntne? Vielen Dank im Voraus Jupp

Antwort 1 von lorf55

Hallo Jupp,
ich würde die Tabelle2 um Spalten für den Namen des Begünstigten (denn der Name dort entspricht sicher nicht dem in Tabelle1), die Rechnungsnummer und eine Hilfsspalte H erweitern und da hinein über eine UPDATE-Anweisung die Daten aus Verwendungszweck1 und 2 holen.
Für den Begünstigten könnte das so aussehen:
UPDATE SNKd, SNKdZahlung SET SNKdZahlung.Begünstigter = IIf(InStr(1,[Verwendungszweck1],[SNKd].[Name],1)>0,Mid([Verwendungszweck1],InStr(1,[Verwendungszweck1],[SNKd].[Name],1),Len([SNKd].[Name])),""), SNKdZahlung.H = InStr(1,[Verwendungszweck1],[SNKd].[Name],1)
WHERE (((SNKdZahlung.H)>0)) OR (((InStr(1,[Verwendungszweck1],[SNKd].[Name],1))<>False));

Die H-Spalte braucht man mMn., weil es keine Zuordnung zwischen beiden Tabellen gibt, trotzdem aber jeder Name aus Tabelle1 in Tabelle2 gesucht werden muss und sonst die gefundenen Daten wieder überschrieben werden.
Mit der Rechnungsnummer gehst du analog vor.
Eigentlich enthalten die Bankdatensätze auch noch den Betrag, ich verstehe nicht, warum der bei dir fehlt. Naja jedenfalls kannst du denn schon mal auf die Problemfälle (Buchstabendreher, Leerzeichen an der falschen Stelle, Abkürzungen u.ä. im Verwendungszweck) eingrenzen.
Ist deine Tabelle2 ok, kannst du eine SELECT-Abfrage auf beide Tabellen machen, wobei du den Namen des Begünstigten und den Namen aus Tabelle1 als Kriterium benutzt.

Das war meine Meinung dazu

Gruß
lorf