Autor Beitrag
TimHa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: Sa 18.03.06 22:19 
Hallo zusammen!

Ich möchte eine Suche programmieren. Der Anwender tippt eine Rechnungsnr in ein Edit Feld ein und soll nach Klick auf einen Button die Rechnung als Bericht ausgegeben bekommen.

Meiner Meinung nach brauche ich dazu ein Query, welches Informationen aus drei Tabellen (Kunde, Rechnung, Rechnungsposition) zusammenführt. Später greift der Bericht dann auf das Query zu und zeigt die gewählten Daten an.

Wie muss denn der SQL Code aussehen? Ich hab mir so was gedacht:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
SELECT *
FROM Kunde, Rechnung, Rechnungsposition
WHERE Rechnung.Rechnungsnr = :eingabeRechnungsnr
AND Rechnungsposition.Rechnungsnr = :eingabeRechnungsnr
AND Kunde.Kundenr = Rechnung.Kundennr;


Kann das überhaupt so funktionieren? Ich bezweifel, dass das mit der Kundennr funktioniert...

Tim

Moderiert von user profile iconraziel: Code- durch SQL-Tags ersetzt
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Sa 18.03.06 22:26 
Hallo Tim,

du solltest bei einem Join nur die wirklich benötigten Felder in der Feldliste angeben.
Ob die Abfrage so funktioniert hängt vom Datenschema ab, grundsätzlich könnte es aber funktionieren.

_________________
Markus Kinzler.
TimHa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: So 19.03.06 10:54 
Hi Markus!

Ok, dann ersetze ich in Zeile 1 den Stern durch die einzelnen Felder. Kein Problem.

Zeile 3 und 4 machen bei mir auch zu 100% Sinn, da die eingegebene Rechnungsnr mit den Rechnungsnummern aus den Tabellen verglichen wird. Da werden dann hoffentlich die richtigen Datensätze rausgesucht.

Ich bin mir halt bei Zeile 5 so unsicher. Was ich möchte ist folgendes: Durch die Eingabe der Rechnungsnr kann ja nur ein Kunde in Frage kommen, da die Tabelle Rechnung das Feld Kundennr als Fremdschlüssel hat.
Sucht sich das Programm durch Zeile 5 automatisch den passenden Kunden raus?

Du hast geschrieben, dass die Funktion abhängig von meinem Datenschema ist. Wie muss es denn aussehen damit es funktioniert?
In der Tabelle Rechnung (Primärschlüssel Rechnungsnr) habe ich einen Fremdschlüssel (Kundennr) der auf die Tabelle Kunde verweist. In der Tabelle Rechnungsdaten bilden die Rechnungsnr und die Artikelnr den zusammengesetzten Schlüssel.
Brauchst du sonst noch Informationen?

Tim
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 19.03.06 11:09 
[quote]Ich bin mir halt bei Zeile 5 so unsicher. Was ich möchte ist folgendes: Durch die Eingabe der Rechnungsnr kann ja nur ein Kunde in Frage kommen, da die Tabelle Rechnung das Feld Kundennr als Fremdschlüssel hat.
Sucht sich das Programm durch Zeile 5 automatisch den passenden Kunden raus? [quote] Ja.

Zitat:
In der Tabelle Rechnungsdaten bilden die Rechnungsnr und die Artikelnr den zusammengesetzten Schlüssel.
Ich würde der Tabellerechnungsposition (Rechnungsdaten?) auch einen künstlichen Primärschlüssel spendieren. Geht aber auch so.

Ich würde die Abfrage einfach so ausprobieren. Wenn was nicht funktioniert kannst du die ja mal Beschreibung der 3 Tabellen sowie ein parr Testdatensätze posten.

Markus.

_________________
Markus Kinzler.
TimHa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: So 19.03.06 15:03 
Ich werde mal was rumprobieren. :)

Tim