Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Eine einfache Abfrage erstellen. Wie? (https://www.delphipraxis.net/62468-eine-einfache-abfrage-erstellen-wie.html)

mlspider 5. Feb 2006 10:31

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

Eine einfache Abfrage erstellen. Wie?
 
Hallo,

wie der Titel schon vermuten lässt, handelt es sich bei mir um ein absoluten "Datenbank-Neuling".

Ich habe mir eine kleine Rechnungsmaske erstellt, die an vier Tabellen gebunden ist (Artikel, Kunden, Rechnungen und Rechnungsdaten). Dem einen oder anderen dürfte dieses Beispiel recht bekannt vorkommen. Ich habe es 1:1 aus dem Buch "Kochbuch Borland Delphi 5", aus dem Hanser-Verlag, übernommen. In der Sparte SQL sind ein paar nette Anweisungen zu finden. Leider kein konkretes Beispiel für eine Delphi-Anwendung.

Nun meine Frage: Kann mir jemand irgendwie darlegen, wie man eine "einfache" Abfrage (z.b. Rechnungen nach Kundenname anzeigen lassen) realisiert.

Bin für jede Hilfe dankbar.

mkinzler 5. Feb 2006 11:09

Re: Eine einfache Abfrage erstellen. Wie?
 
Ich habe das genannte Buch nicht, versuche aber mal nach deinem Angaben die Datenbankstruktur zu erkennen.
Annahme 4 Tabellen(Artikel, Kunden, Rechnungen und Rechnungsdaten).

Alle Rechnungen pro Kunde:
SQL-Code:
select
    * 
from
    Rechnungen.db r, Kunden.db k
where
    r.Kunde = k.id
group by
    k.id
Edit: sql-tags eingefügt

mlspider 5. Feb 2006 11:22

Re: Eine einfache Abfrage erstellen. Wie?
 
Eine sehr simple Abfrage ist mir soeben gelungen. Das Eingrenzen von Rechnungszeitraum. Es wurden mir mit Hilfe von:

SQL-Code:
SELECT * FROM rechnungen WHERE datum BETWEEN '01.02.2006' AND '18.02.2006'
alle Rechnungen innerhalb dieses Zeitraums angezeigt. Leider befinden sich die Kundennamen in der Tabelle Kunden.db. Wie könnte man jetzt diese Abfrage erweitern, so dass vielmehr auch der jeweilige Kunde angezeigt wird?

mkinzler 5. Feb 2006 11:28

Re: Eine einfache Abfrage erstellen. Wie?
 
Durch einen Join, siehe mein Beispiel oben.

Wenn du mir die DDL-Skripte der Tabellen postet, kann ich die richtigen Spaltennamen nehmen.

mlspider 5. Feb 2006 11:34

Re: Eine einfache Abfrage erstellen. Wie?
 
Sorry für diese nun folgende dämliche Frage. Welche Dateien oder was genau soll ich denn posten (DDL-Skripte der Tabellen)?

mkinzler 5. Feb 2006 11:36

Re: Eine einfache Abfrage erstellen. Wie?
 
DDl = Data Definition Language

Sql-Skripte zur Erzeugunger der Datenbank ( Create table ...) oder eine Übersicht der Tabellen mit Feldern

mlspider 5. Feb 2006 11:47

Re: Eine einfache Abfrage erstellen. Wie?
 
Globaler Alias: BOffice.

Artikel.db:
1. Nr (Zähler, Indiziert)
2. Artikelname (Alpha)
3. Einkaufspreis (Währung)
4. Verkaufspreis (Währung)
5. Bestand (ShortInteger)
6. MwSt (Short Integer)

Kunden.db:

1. Kundennr (Zähler)
2. Name (Alpha)
usw.

Rechnungen.de

1. Nr. (Zähler)
2. Datum (Datum)
usw.

Sollte erstmal reichen. Ich hoffe Du kannst damit was anfangen.

mkinzler 5. Feb 2006 11:58

Re: Eine einfache Abfrage erstellen. Wie?
 
In der Rechnungen.db sollte noch eine Verweis auf die Kunden stehen z.b. KundenNr

mlspider 5. Feb 2006 12:02

Re: Eine einfache Abfrage erstellen. Wie?
 
Dieses Feld ist vorhanden. KundenNr (Long Integer)

mkinzler 5. Feb 2006 12:06

Re: Eine einfache Abfrage erstellen. Wie?
 
SQL-Code:
select
    k.Name, r.Nr, r.Datum
from
    Rechnungen r, Kunden k
where
    r.KundenNr = k.Nr
group by
    k.Nr

mlspider 5. Feb 2006 12:11

Re: Eine einfache Abfrage erstellen. Wie?
 
Gibt mir folgenden Fehler aus: Wenn ein Group By existiert, muß sich jedes einfache Feld in den Projektoren im Group By befinden. Hört sich hochtrabend an. Trotzdem danke.

mkinzler 5. Feb 2006 13:39

Re: Eine einfache Abfrage erstellen. Wie?
 
Das Group by ist hier auch überflüssig. lass es mal weg

mlspider 5. Feb 2006 14:07

Re: Eine einfache Abfrage erstellen. Wie?
 
Cool. Läuft bestens. Darauf kann man aufbauen. Danke! Schönen Sonntag noch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz