Announcement

Collapse
No announcement yet.

SQL Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage

    Hallo,

    ich habe unter Delphi 1.0 und Paradox 5.0 (BDE) ein Datenbankprogramm entwickelt, jetzt möchte ich eine SQL Abfrage von einer Paradox Datenbank ausführen doch leider sind ja dann keine Subselects erlaubt doch ich muss ein einer Abfrage 2 UND Bedingungen, eine IN Bedingung und eine OR Bedingung im WEHRE Abschnitt unterbringen. Die Abfrage würde dann wiefolgt aussehen:

    query1.sql.clear;
    query1.sql.add('SELECT K.Kdnr,K.Vorname,K.Name, A.Dokument,A.Anf_am,A.Kdnr,A.Id,A.Erinnerung_level ,A.Erinnerung_Datum');
    query1.sql.add('FROM "Kunden" K, "Anford" A');
    query1.sql.add('WHERE K.Kdnr = A.Kdnr);
    query1.sql.add('and (A.Erinnerung_datum <= :date_limit)');
    query1.sql.add('and A.Erinnerung_level IN (1,2,3)');
    query1.sql.add('OR (K.Berater ='+chr(39)+berater+chr(39));
    query1.ParamByName('date_limit').asDate := Date;
    query1.open;
    table_kunden.open;

    Doch so gehts natürlich nicht.
    Was ich ereichen will ist folgendes:

    Ich habe 2 DB einen Kundendatenbank und eine Anforderungsdatenbank und ich benötige aus beiden DB Informationen Verbunden sind die beiden DB über das Feld KDNR (Kundennummer) und dürfen nur die Daten angezeigt werden wo das Datum (A.Erinnerung_datum ) <= aktuelles Datum ist. Dann sollen Die Daten angezeigt werden wenn der das Feld K.Berater der Variable berater entspricht oder der Wert des Feldes A.Erinnerung_level in einem bestimmten Bereich (z.B.(1,2,3)) liegt.

    So, kann man so eine Abfrage mit "local SQL" realisieren oder muß wirklich in einer WHILE Schleife jeden Datensatz durchblättern und auf die Bedingungen prüfen und dann in einem temporären Feld einen Wert setzen an dem ich später alle anzuzeigenden Datensätze rausfiltern kann.

    Über Tipps und Hinweise würde ich mich sehr freuen, sitze nun schon länger an diesem sch... Problem.

    Vielen Dank und Grüße Hendrik

  • #2
    Hallo,

    mit der Datenbankoberfläche von Delphi 1 und der 16-Bit-Version der BDE ist folgendes möglich, wobei ich auf die Delphi-Datenbank DBDEMOS zurückgreife:
    <pre>
    SELECT c.*, o.*
    FROM "Customer.db" c, "Orders.db" o
    WHERE (c.CustNo = o.CustNo AND c.Country = "Bahamas")
    OR (c.CustNo = o.CustNo AND o.Saledate > "1/1/94" AND c.State IN ("HI","FL","OR"))
    </pre>
    Ich gehe dabei davon aus, dass 2 Tabellen der <b>gleichen</b> Paradox-Datenbank ausgewertet werden sollen. Wenn nicht, so muss der Aliasname mit Doppelpunkten getrennt vor den Tabellennamen gesetzt werden

    Comment

    Working...
    X