Announcement

Collapse
No announcement yet.

DBLookupComboBox + DBComboBox

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

  • DBLookupComboBox + DBComboBox

    Hallo,
    ich habe in einem Formular die im Titel genannten Komponenten eingefügt und entsprechend mit meinen
    in Access 97 erstellten Tabellen verknüpft. In den beiden Boxen wird aber nur jeweils der erste mögliche
    Datensatz angezeigt, auch wenn ich per Drop Down die Auswahl anzeigen lassen will. Verbinde ich jedoch
    die Boxen mit einer Naviagtionskomponente, kann ich die explizit ausgewählten Möglichkeiten durchblättern.
    Wie schaffe ich es, daß ich beim "Aufklappen" der Boxen alle möglichen Datensätze zur Auswahl habe?
    Für Lösungsvorschläge bin ich jetzt schon sehr dankbar!

  • #2
    Hallo,

    in diesem Fall ist die DBLookupComboBox nicht richtig konfiguriert, d.h. die eingetragenen Werte für <b>ListSource</b> und <b>ListField</b> beziehungsweise <b>KeyField</b> verweisen nicht auf die Nachschlagetabelle.

    Das folgende Beispiel demonstriert die Konfiguration anhand der Delphi-Beispieldatenbank DBDEMOS:
    <pre>
    object Form1: TForm1
    Left = 192
    Top = 107
    Width = 696
    Height = 480
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object DBGrid1: TDBGrid
    Left = 16
    Top = 72
    Width = 417
    Height = 120
    DataSource = DataSource1
    TabOrder = 0
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'MS Sans Serif'
    TitleFont.Style = []
    end
    object DBNavigator1: TDBNavigator
    Left = 96
    Top = 32
    Width = 240
    Height = 25
    DataSource = DataSource1
    TabOrder = 1
    end
    object TableOrder: TTable
    Active = True
    DatabaseName = 'DBDEMOS'
    TableName = 'orders.db'
    Left = 16
    Top = 32
    object TableOrderOrderNo: TFloatField
    FieldName = 'OrderNo'
    DisplayFormat = #39'#'#39'0000'
    end
    object TableOrderCustNo: TFloatField
    Alignment = taLeftJustify
    CustomConstraint = 'CustNo IS NOT NULL'
    ConstraintErrorMessage = 'CustNo cannot be blank'
    FieldName = 'CustNo'
    Required = True
    DisplayFormat = 'CN 0000'
    MaxValue = 9999
    MinValue = 1000
    end
    object TableOrderLookupCUSTOMER: TStringField
    FieldKind = fkLookup
    FieldName = 'LookupCUSTOMER'
    LookupDataSet = TableLookup
    LookupKeyFields = 'CustNo'
    LookupResultField = 'Company'
    KeyFields = 'CustNo'
    Size = 30
    Lookup = True
    end
    end
    object DataSource1: TDataSource
    DataSet = TableOrder
    Left = 48
    Top = 32
    end
    object TableLookup: TTable
    Active = True
    DatabaseName = 'DBDEMOS'
    TableName = 'customer.db'
    Left = 24
    Top = 200
    object TableLookupCustNo: TFloatField
    Alignment = taLeftJustify
    CustomConstraint = 'CustNo IS NOT NULL'
    ConstraintErrorMessage = 'CustNo cannot be blank'
    FieldName = 'CustNo'
    DisplayFormat = 'CN 0000'
    MaxValue = 9999
    MinValue = 1000
    end
    object TableLookupCompany: TStringField
    CustomConstraint = 'X IS NOT NULL'
    ConstraintErrorMessage = 'Company Field has to have a value'
    FieldName = 'Company'
    Size = 30
    end
    end
    end
    </pre>
    Von dieser Konfiguration ist vor allem der Abschnitt zu <b>TableOrderLookupCUSTOMER</b> wichtig - hier erfolgt die Zuordnung des Lookup-Feldes zu den beiden beteiligten Tabellen.
    &#10

    Comment

    Working...
    X