Announcement

Collapse
No announcement yet.

Zur Laufzeit DBLookupComboBox mit DataSource verbinden

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

  • Zur Laufzeit DBLookupComboBox mit DataSource verbinden

    Hi,
    Ich sollte zur Laufzeit eine DBLookupComboBox mit einer DataSource verbinden.<br>
    <br>
    <br>
    DBLookupComboBox->ListSource = PcsDataSource;<br>
    DBLookupComboBox->KeyField = PcsDataSource->DataSet->FieldByName("PC_NAME")->AsString;<br>
    DBLookupComboBox->ListField = PcsDataSource->DataSet->FieldByName("PC_NAME")->AsString;<br>
    <br>
    Beim ausführen diesen Codes bekomme ich einen Fehler.<br>
    Bitte um Hilfe<br>
    Gruß Michael<br>

  • #2
    Erklär mal die Datenbankstruktur von PcsDataSource und gib ein Beispiel an, welchen Inhalt die relevanten Felder haben.

    Ist "PC_NAME" der Primärindex, Teil des Primärindexes, oder hat das Feld einen Sekundärindex ? Was wllst Du überhaupt erreichen ?

    Welche Fehlermeldung bekommst Du ?

    Gruß - Günthe
    Günther

    Comment


    • #3
      Hallo Günter!<br>
      Folgendes Problem:<br>
      In einer ComboBox in den Strings steht eine auswahl zB: Rechner, drucker usw.<br>
      Je nach dem welcher eintrag augewählt wird soll die LookupCombo mit der entsprechenden Tabelle, bzw DataSource verbunden werden.
      Also je nach dem welcher eintrag in der Combo ausgewählt ist muß ein anderer inhalt in der LookUp sein.<br><br>
      PcsDataSource ist mit einer ADODataSet verbunden die wiederum mit einer ACCESS Tabelle <br>
      PC_NAME hat keinen Index, Ich will das Feld nur auslesen.<br>
      Es sind String Felder<br>
      Fehler:"DBLookUpComboBox Das Feld PC60 wurde nicht gefunden"<br&gt

      Comment


      • #4
        Hallo Michael,

        ADO und ACCESS sind mir momentan noch fremd. Es wird aber sicherlich genau so sein wie bei Paradox-Tabellen:

        Du brauchst eine zweite Tabelle mit allen für PC_NAME zulässigen Werten. Das gleichwertige Feld nenne ich mal PC_NAME2. Die Tabelle kann weitere Felder enthalten, mit Daten die diesen Begriffen direkt zugeordnet sind, zum Beispiel Übersetzungen in andere Sprachen.

        Bei der DBLookupComboBox wird DataSource mit PcsDataSource und ListSource mit PcNameDataSource verbunden. DataField ist PC_NAME, ListField und KeyField sind PC_NAME2. Bei dieser Variante hat PC_NAME2 einen Primärschlüssel in der Hilfstabelle.

        Du kannst in der ersten Tabelle auch PC_NAME als Integer definieren und gibst der zweiten Tabelle einen Integerwert als Primärschlüssel. DataField und ListField bleiben dann wie gehabt, KeyField wird dann Int_PC_NAME aus der zweiten Tabelle. Das spart Speicherplatz, dürfte schneller sein, und Du kannst den Wert "Rechner" beliebig verändern ohne einen Rattenschwanz mitändern zu müssen. In einem DBGrid würde aber standardmäßig der nichtssagende Integerwert angezeigt, da wird es dann etwas aufwendiger wenn "Rechner" angezeigt werden soll.

        Die Einstellungen kannst Du alle im Objektinspektor vornehmen. Bei einer Festlegung im Quelltext bin ich mir nicht ganz sicher, wie man die Feldnamen übergibt. Du hattest den Feldinhalt übergeben, das ist auf jeden Fall falsch.

        Gruß - Günthe
        Günther

        Comment


        • #5
          Hi Günther,<br>
          Die vorgehensweise eine LookUp zu verbinden ist mir schon klar, es geht ja drum zur laufzeit die Inhalte der LookUp zu ändern.<br>
          Das mit dem Feldinhalt ist falsch, da hast du recht aber da ist ja das Problem,<br>

          Gruß Michae

          Comment


          • #6
            Ich habs über Fields[] geht es.<br>
            Trotzdem Danke<br>
            Gruß Michael<br&gt

            Comment

            Working...
            X