verschiedene Zeilen in einer Datanbank gleichzeitig anzeigen



  • Hallo,

    ich möchte eine ältere Anwendung ändern.
    Ich öffne meine DB (BDE):

    ....->Query->SQL->Add("Select * From '" + weg zur datenbank + "' WHERE ");
    ....->Query->SQL->Add("datensatznummer = '" + Nummer-x + "'");
    ....->Query->Open();

    so kann ich meinen DBEdit Feldern den Datensatz mit der Nummerx zuweisen.

    Ich möchte aber gleichzeitig in einigen 3 anderen DBEdit Feldern Daten der
    Datensatznummer Nummer-y anzeigen lassen.

    Ist schon lange her!

    Ein Tipp, noch besser ein Code-Schnipsel wäre toll!!!

    mfg
    Traugott



  • Hallo,

    ich hab mich vielleicht etwas ungenau ausgedrückt.

    mit ...->Query->SQL->Add("Select * From Datenbank")

    öffne ich alle Datensätze aus der Tabelle.

    Struktur von der Datenbank:

    PN PNM PNV Ort Tel Fax
    1 12 13 Muster 123 456
    12 45 46 Musterlinie 345 999

    Die PN des ersten (angezeigten)Datensatzes ist 1.
    Hier werden mir alle Daten angezeigt.
    Der PN1 ist die PNM12 zugeordnet. Hiervon möchte ich mir zusätzlich
    nur den Ort anzeigen lassen.

    Wie kann ich dies in einer Abfrage fassen ?

    mfg



  • Mit einem (inner) Join.



  • Hallo,

    der INNER JOIN beschreibt im Beispiel die Schnittmenge zweier Tabellen.
    Suchen über die jeweils gleiche "Kundennummer".
    Ich habe aber nur eine Tabelle.
    Hier funktioniert der INNER JOIN nach mehreren Versuchen nicht.

    Ein kleiner Code-Schnipsel wäre hier toll

    mfg



  • OK, das ist ein Spezialfall, also Self Join, d.h. du benötigst dann zwei Aliasnamen auf dieselbe Tabelle.

    SELECT T1.*, T2.Ort FROM Datenbank T1, Datenbank T2
    WHERE T1.PNM = T2.PN
    


  • Danke Dir !!!!!



  • Hi Traugott,

    Tu Dir selbst einen Gefallen und mach wenigstens eine mdb-Datenbank draus, damit Du mit ADO arbeiten kannst.(wenns nicht zu viel Aufwand ist )
    Mit der steinalten bde importierst Du die Probleme in dreierreihen hochkant.

    Gruß Mümmel



  • Hallo,

    so ganz Unrecht hast du nicht mit "die BDE ist steinalt".
    Aber was ist die richtige Datenbank?????
    Ich benötige eine Datenbank in der Text, Zahlen und Datum verarbeitet werden.
    Meine Software (C++)biete mir: dbExpress, Interbase, BDE und ADO.
    Mit der BDE habe ich vor ca. 12 Jahren angefangen; daher BDE.
    Für mein Projekt benötige ich max. 5 Tabellen.
    Da ich zusätzlich noch mit einem Linux Rechner arbeite, wäre vielleicht eine Datenbank die unter WIN und Linux lauffähig ist optimal.
    Meine Software (C++) bietet mit auch die Möglichkeit zur Erstellung einer *.rpm.
    Hier ist ein guter Rat gefragt.

    mfg



  • Was für eine Datenbank verwendest du denn bisher (Firebird, Interbase, SQLite, ...)? Die Borland Database Engine (BDE) ist ja nur eine Datenbankzugriffstechnik.

    DBExpress oder FireDAC sind jedoch die neueren Techniken.

    Den Rat bzgl. MDB (MS Access) kann ich aber nicht nachvollziehen (gerade wenn du mit dem BCB bzw. RAD Studio arbeitest). Welche genaue Version benutzt du denn?

    PS: RPM Package Manager hat aber nichts mit der Datenbank zu tun...



  • Ich würde, wenn es Windows und LInux ist, postgresql empfehlen. Ist open Source und hat sogar ein High-Level-Interface ala exec sql select... into :feld1, :feld2... end-exec.