Thema: Delphi Smallint

Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Smallint

  Alt 14. Dez 2004, 15:41
Zitat von LOMBI:
wer kann mir bitte helfen, für eine Adressen.db ein SmallInt herzustellen?
I= Interessent
IA=Interessent m. Angebot
NK=Neukunde (1xgekauft)
SK=Stammkunde
AK=Altkunde (über ein Jahr nichts mehr gekauft)
Nach langem Nachdenken, glaube ich zu wissen was Du haben willst.

Kann es sein, dass Du eine Nachschlage Tabelle (Lookup Table) möchtest.

Du hast eine Haupttabelle (Master) mit z.B. folgenden Feldern:

Adressen.db

Adr_ID: Integer
Name: string(40)
Vorname: string(40)
Status_ID: Integer
Adresse: string(200)
...


Nun gibt es eine Nachschlagetabelle (Slave) mit folgenden Feldern:

Status.db

Status_ID: Integer
Status: string(2)
Status_Text: string(20)


In der Status Tabelle steht folgendes drin:
Code:
Status_ID Status  Status_Text
1          I       Interessent
2          IA      Interessent m. Angebot
3          NK      Neukunde (1xgekauft)
4          SK      Stammkunde
5          AK      Altkunde (über ein Jahr nichts mehr gekauft)
Es gibt nun die Möglichkeit in Delphi 2 Tabellen (TTable) so miteinander zu verknüpfen, dass automatisch der Status und der Status_Text statt der Status_ID (also des Integers) angezeigt wird.

Es gibt unzählige Möglichkeiten solch eine Verknüpfung herzustellen.

Eine Möglichkeit zur Anzeige in Grids (z.B. TDBGrid) ist:
  • 2 TTable auf das Formular
  • ein TDataSource auf das Formular
  • ein TDBGrid auf das Formular
  • die 2 Tables mit den Tabellen verbinden z.B.:
    Table1.Database := 'DBDEMOS'; Table1.TableName := 'Orders.db'; Table1.Active := True;
    Table2.Database := 'DBDEMOS'; Table1.TableName := 'Customers.db'; Table2.Active := True;
  • TDataSource mit Table1 verbinden z.B.:
    DataSource1.DataSet := Table1;
  • TDBGrid mit TDataSource verbinden z.B.:
    DBGrid1.DataSource := DataSource1;
  • Table1 (TTable) doppelklicken -> FeldEditor geht auf
  • Rechtsklick in Feldeditor und "Felder hinzufügen" auswählen
  • Anzuzeigende Felder auswählen z.B.:
    OrderNo, CustNo und SaleDate
  • nun wieder Rechtsklick in den FeldEditor und "Neues Feld" auswählen
  • Im "Neues Feld" Dialog das anzuzeigende Feld definieren z.B.:
    Feldeigenschaften.Name := Kunde; // Komponente wird automatisch zu Table1Kunde
    Feldeigenschaften.Typ := string;
    Feldeigenschaften.Größe := 20;
    Feldtyp := Nachschlagen;
    Nachschlage Definition.Schlüsselfelder := CustNo; // Index der Mastertabelle auf nachzuschlagendes Feld
    Nachschlage Definition.Datenmenge := Table2; // die Nachschlagetabelle
    Nachschlage Definition.Schlüssel := CustNo; // das Feld der Nachschlagetabelle was dem Schlüsselfeld in Table1 entspricht
    Nachschlage Definition.Ergebnis := Company; // Das Feld was Angezeigt werden soll
  • Fertig -> Im Grid werden nun die Felder OrderNo, CustNo, SaleDate und Kunde angezeigt.
    Das Feld Kunde entspricht dem Kunden der unter CustNo in Tabelle Customers.db abgelegt ist.

Das bringt aber nur etwas bei der Anzeige.

Zum Eingeben verwenden Sie am besten die TDBLookupComboBox.
Das ist eine ComboBox, die in die mit DataSource verbundene Tabelle einen Integer abspeichert.
Aber aus der mit ListSource verbundenen Tabelle das unter ListField anzeigt.
Einfach mal F1 drücken und die Hilfe zu der Komponente lesen

Ich hoffe dieser Artikel hilft weiter
Viel Spaß
Dr. MaBuSE
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat