Announcement

Collapse
No announcement yet.

ADT-Felder in Interbase

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

  • ADT-Felder in Interbase

    Hallo,

    In Delphi 5 (Enterprise) kann man angeblich ADT-Felder, wie

    Adress<br>
    Street<br>
    City<br>
    usw.<br>

    verwenden. Street ist ein untergeordnetes Feld zum Feld Adress. Das Ansprechen der Felder ist im Delphi-Handbuch beschrieben, z.B. FieldByName('Adress.City').AsString usw.

    Ich kann jedoch derartige (abstrakte) Strukturen, nicht mittels einer TQuery mit SQL in Interbase (5.6) anlegen.

    Wer kennt eine Lösung ?

    Gruss
    Helmut

  • #2
    Hallo,

    beim InterBase wird es darauf hinauslaufen, wie gewohnt getrennte Tabellen zu verwenden. Das Zusammenfassen in <i>Nested Tables</i> erfolgt dann nur auf der Clientseite. Das Ganze macht jedoch in den meisten Fällen nur ein einer verteilten Anwendung (Three-tier) Sinn, da hier eine vollständige Master-Detail-Datenmenge in "einem Stück" vom Application Server zum Client transportiert werden kann.

    Echte Nested Tables werden von ORACLE-Datenbanken unterstützt (das war auch der Grund, warum Delphi dies implementiert hat)

    Comment


    • #3
      Hallo,

      ich sehe hier keine Möglichkeiten getrennte Tabellen zu verwenden. Oder soll man eine Tabelle mit allen Strassennamen machen, eine andere mit den Orten usw. ? Dies würde meinem Verständnis widersprechen.

      Ich denke an die gute alte Borland-Pascal Zeit, wo man mit Record-Typen (eigene Datenstrukturen) viel anfangen konnte. Daher mein Wunsch, eine Recordstruktur mit SQL nachzubilden.

      Warum hat Borland, den ADT-Feldern in seinem Handbuch zum Compiler soviel Aufmerksamkeit gewidmet, wenn diese praktisch nicht anwendbar sind.

      Die DBGrids besitzen ja hervorragende Möglichkeiten ADT-Felder (und auch Arrays) anzuzeigen.

      Gruss

      Helmu

      Comment


      • #4
        Hallo,

        nein, getrennte Tabellen für Strassen und Orte sind beim InterBase nicht notwendig. Angenommen, eine Kundentabelle verwendet einen Fremdschlüssel auf die Tabelle Adresse mit den Detail-Daten zu den Adressen:
        <pre>
        CREATE TABLE Kunden (
        ID INTEGER....,
        ADR_ID INTEGER)
        </pre>
        Und die Adressen-Tabelle enthält die Angaben über Strasse, Hausnummer, PLZ und Ort:
        <pre>
        CREATE TABLE Adressen (
        ADR_ID INTEGER...,
        STR VARCHAR...,
        HNR VARCHAR...,
        PLZ CHAR(5),
        ORT VARCHAR...)
        </pre>
        Wenn über Delphi beide Tabellen als <i>Nested Tables</i> verbunden werden, zeigt das DBGrid für die Tabellen <i>Kunden</i> die Spalte ADR_ID als Button mit der Beschriftung "..." an. Klickt man bei einem bestimmten Datensatz auf diesen Button, geht ohne eigenes Zutun ein Detailfenster mit dem Datensatzinhalt des zugehörigen Datensatzes aus Adressen auf. Somit führen <i>Nested Tables</i> dazu, das es in der Benutzerschnittstelle (Programmoberfläche) so aussieht, als ob das ein Strukturfeld ist, aber in der Datenbank ist alles beim alten.

        Borland muss ADT-Felder in der Hilfe berücksichtigen, da ja ein nativer Treiber für ORACLE ausgeliefert wird und die Hilfe somit für diese spezielle Datenbank ausgelegt werden muss. Über <b>TClientDataset</b> kann man das Verhalten von Nested Tables auch für alle anderen Datenbanken simulieren

        Comment

        Working...
        X