PDA

Vollständige Version anzeigen : Problem mit Abfrage


wsd70
12.10.2011, 11:47
Hallo
ich kriege eine Abfrage nicht hin (bin Anfänger) und bitte um Hilfe

Ich habe eine gemeinsame Tabelle tab_ReZa für Rechnungsdaten UND Zahlungsdaten.
Es gibt eine weitere Tabelle tab_RZ 'Restzahlung', die über 'Rechnungsnummer' mit der ersten Tabelle verknüpft ist.
Mit einer Abfrage "Zahlungseingänge" bekomme ich Rechnungsdaten, Zahlungsdaten und Daten aus der Tabelle 'Restzahlung' in jeweils einer Zeile angezeigt.
Meine Frage : wie kann ich die Zahlungsdaten aus der tab_ReZa und aus der tab_RZ so abfragen, dass die Daten aus beiden Tabellen in getrennten Zeilen stehen? (damit ich alle Zahlungseingänge in einer Liste in chronologischer Folge anzeigen und ausdrucken kann)
Geht sowas oder muss ich die Zahlungsdaten aus tab_ReZa rausnehmen und alle Zahlungsdaten in einer Tabelle 'Zahlungseingänge' ablegen?
(ich habe die Daten in einer Tabelle zusammengefasst, weil in 95% der Fälle beim Eingeben der Rechnungsdaten auch gleich die Zahlungsdaten im gleichen Formular - und ohne Verlinken mit einer Rechnung- eingegeben werden können.)

Wo finde ich Hinweise auf eine Lösung (falls sie möglich ist)
Gruß Werner

maikek
12.10.2011, 11:59
Moin,
so nach kurzem Überfliegen sage ich mal:
Ich habe eine gemeinsame Tabelle tab_ReZa für Rechnungsdaten UND Zahlungsdaten.
Die Rechnungs- und Zahlungen stehen in zwei Spalten hintereinander, oder? Ändere die Tabelle, nimm ein Feld Betrag und ein Feld BetragArt o.ä., in Betrag kommt die Summe und in BetragArt eine Kennziffer, ob es sich um eine Rechnung oder eine Zahlung handelt. Oder du arbeitest mit positiven und negativen Beträgen. Der Rest lässt sich dann errechnen.
maike

wsd70
12.10.2011, 12:28
Hallo Maike,
In der tab_ReZa gibt es getrennte Felder für Rechnungsdaten (R-Betrag, R-Datum usw) und Zahlungsdaten (Z-Betrag, Z-Datum, ZArt usw.).
Rechnungsdaten und Zahlungsdaten stehen in einem Datensatz. Die Zahlungsdaten sind als solche also eindeutig ansprechbar.
Das Problem ist : ich will in einer Abfrage die Daten aus zwei verschiedenen Tabellen in verschiedene Zeilen schreiben: also in der Abfragespalte 'Zahlungsbetrag' sollen z.b. die Z-Beträge aus der tab_ReZa und aus der tab_RZ untereinander stehen, d.h. ich will die Ergebnisse aus 2 Abfragen "vereinen".

Gruß Werner

Atrus2711
12.10.2011, 12:49
ich will die Ergebnisse aus 2 Abfragen "vereinen".
SELECT * FROM A
UNION ALL
SELECT * FROM B

wsd70
12.10.2011, 13:19
Hallo Martin
danke für Deinen Hinweis. Leider bin ich mit der Syntax nicht vertraut.
Ich habe in das Abfragefeld geschrieben :
ZNr: Select [RNr] from [qry_Liste_Zahlungseingänge] UNION ALL
Select [RZNr]from [qry_Liste_Zahlungseingänge_RZ]

Im Abfragefeld 'ZNr' sollen die Felder 'RNr' und 'RZNr' gezeigt werden.
Was schreibe ich falsch?

Gruß Werner

Atrus2711
12.10.2011, 13:57
Mein Code war nicht nur ein einzelnes Feld, sondern die SQL-Ansicht der ganzen Abfrage. Schalt mal um nach SQL, dann solltest du da deine SQL eingeben können.

Außerdem hat sich vor dem FROM der zweiten Teilabfrage ein Leerzeichen verflüchtigt.

Edit:
Im Abfragefeld 'ZNr' sollen die Felder 'RNr' und 'RZNr' gezeigt werden
Das könnte man auch so verstehen, dass du die beiden Werte verbinden willst, um etwa aus 47 und 12 4712 zu machen. Dafür wäre dann eher der Textverketter & zuständig: SELECT FeldA & FeldB AS NeuesFeld FROm DeineTabelle.

wsd70
12.10.2011, 15:18
Martin,
Die Inhalte der beiden Felder - F1 in Abfrage qry_1 mit dem Inhalt 47 und F2 in Abfrage qry_2 mit dem Inhalt 12 - sollen nicht zu 4712 verknüpft werden!
Sondern: es sollen in der Abfrage qry_3 im Feld F3 in getrennten Zeilen stehen:
Feld 3
47
12

Atrus2711
12.10.2011, 15:29
Gut, dann ignoriere das nach meinem Edit. Die UNION ALL sollte der Weg sein.

wsd70
12.10.2011, 16:23
Martin, sorry aber ich komme nicht weiter
Es kommt immer die Fehlermeldung : Die Unterabfrage in diesem Ausdruck hat eine fehlerhafte Syntax.
Ich habe es jetzt mit einem vereinfachten statement probiert
Ausdr1: SELECT * FROM [tab_Rechnungen] UNION ALL SELECT * FROM [tab_Restzahlung]
Wo liegt mein Fehler ?
Gruß Werner

Thomas Möller
12.10.2011, 16:54
Hallo Werner,

Meine Frage : wie kann ich die Zahlungsdaten aus der tab_ReZa und aus der tab_RZ so abfragen, dass die Daten aus beiden Tabellen in getrennten Zeilen stehen? (damit ich alle Zahlungseingänge in einer Liste in chronologischer Folge anzeigen und ausdrucken kann)

so wie ich Dein Anliegen verstehe musst Du die beiden Abfragen in Deiner Abfrage über ein gemeinsames Feld verknüpfen.

Welches Feld ist denn in beiden Abfragen enthalten und geeignet, einen Datensatz eindeutig zu identifizieren?

CU

wsd70
12.10.2011, 17:40
Hallo Thomas,
ich weis, meine Beschreibung ist etwas verwirrend. Ich bin auch gar nicht sicher, ob mein Problem gelöst werden kann - so wie ich es mir vorstelle.
Zu Deiner Frage:
Welches Feld ist denn in beiden Abfragen enthalten und geeignet, einen Datensatz eindeutig zu identifizieren?
Die tab_RZ hat ein Feld 'ORNr' (Original-RechnungNummer) mit dem sie mit der ID der tab_ReZa gelinkt ist. (Der Datensatz in der tab_RZ steht mit dem Datensatz in der tab_ReZa in der Beziehung tab_RZ.ORNr -> tab_ReZa.ID)

Das Problem ist, ich habe Zahlungsdaten in der tab_ReZa und in der tab_RZ.
Ich brauche eine Liste, in der die Zahlungsdaten aus einem Datensatz in der tab-ReZa und aus einem Datensatz in der tab-RZ - nicht in einer Zeile, wie bei einer "normalen" Abfrage - sondern untereinander in getrennten Zeilen stehen.

Gruß Werner

Vielleicht ist es so etwas anschaulicher. Ich habe jetzt in einer Zeile stehen:
RechnungsID I RechnungsNummer I Zahlbetrag I ZahlDatum I RestzahlungsNummer I Restzahlbetrag I RestzahlDatum I

Ich möchte folgende Auflistung:
.....Nummer....................I......Betrag..........I.....Datum...........I = Überschrift in Abfrage
RechnungsNummmer....I Zahlbetrag.........I ZahlDatum.........I
RestzahlungsNummer.. I Restzahlbetrag.. I RestzahlDatum. I

Diese Sätze in der Abfrage sollen nach Datum sortiert werden.

maikek
12.10.2011, 21:39
Du musst das Ganze nicht als Feld in einer Abfrage anlegen, sondern als Abfrage als solche - wie Martin auch schon schrieb.

Abfrageentwurf öffnen ohne eine Tabelle zu wählen
auf die SQL-Ansicht wechseln
Syntax dort einkopieren
zurückschalten in Entwurfsansicht
Abfrage ausführen.

IMHO wäre es der bessere Weg, die Tabelle(n) zu normalisieren.
maike

wsd70
13.10.2011, 06:35
Hallo Maike
Danke für den Hinweis. Habe jetzt kapiert was ich falsch gemacht habe.
Gruß Werner