tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
9486
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    marcel_t marcel_t ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    15
    hallo,

    habe in einem fenster ne combobox in der alle daten aus einer spalte aus einer access datenbank alphabetisch angezeigt werden. nun soll man auf die datensaätze zugreifen können. wie kann ich das machen? beim anklicken die einzelne spalte auslesen lassen?
    die datenbank ist ms access und benutze 'ole db'.. die sprache ist c++ und die IDE Visual Studio 2005 Express..

    gruß
    Geändert von marcel_t (14.09.06 um 17:40 Uhr)
     

  2. #2
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    1.) Halte dich bitte an die Netiquette.

    Du kannst bei der Combobox das Ereignis SelectedIndexChanged() behandeln.
    Zugriff auf die Ereignisse bekommt du zum Beispiel, in dem du auf deine Combobox im Formulardesigner klickst und im Eigenschaftenfenster auf Ereignisse umschaltest. Das ist das Symbol mit dem Blitz.
    Dort kannst du das Ereignis auswählen VS sollte dann in die Codeansicht springen und die den Rumpf der Behandlungsfunktion generieren.

    Dort kannst du dann per ComboBoxName1.SelectedItem erhälst du das Listitem.
    Wenn du Datenbindung verwendest ist das Ereignis SelectedValueChanged und die Eigenschaft ComboBoxName1.SelectedValue besser.
     
    Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)

  3. #3
    marcel_t marcel_t ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    15
    Dort kannst du dann per ComboBoxName1.SelectedItem erhälst du das Listitem.
    Kann damit leider nichts anfangen?! hab jetzt das Ereignis SelectedValueChanged verwendet du die Funktion generieren lassen. Nur wie bekomme ich jetzt den ausgewählten Eintrag? Der Methodenrumps ist leer! Bin ziemlich neu in dem Thema..

    Nochmal kurz vielleicht zur Erklärung. Habe eine Access Tabelle.. Zu jeder Zeile gehören 5 Spalten, Spalte 1 ist der Name und die anderen 4 Spalten enthalten Informationen darüber. So füllt sich die Tabelle mit vielen Namen in jeder Zeile und seinen Informationen in den zugehörigen Spalte.
    In der Combobox steht immer nur der Name, also immer nur die Spalte 1 jeder Zeile.
    Klickt man nun auf einen dieser Namen, soll in einer TextArea die komplette Zeile ausgegeben werden (also der Name + Informationen).
    Wie komme ich an die komplette Zeile wenn man in der Combobox den Namen anklickt?
    Hoffe konnte es halbwegs erklären, die Methode ist soweit generiert nur wie gehts weiter?

    1.) Halte dich bitte an die Netiquette.
    Habs später über editieren versucht nur lies sich der Titel nicht mehr ändern, sorry..
     

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Das hängt davon ab, wie du deine Daten ausliest und an die ComboBox hängst. Hierzu gibt es mehrere Wege:

    1. Du hängst die Daten via DataSet an die ComboBox, dann hängst du die ID und den anzuzeigenden Wert an die Box. Das DataSet verwendest du hier global, damit du mittles ID nachschlafen kannst und somit alle Daten bekommst.

    2. Du generierst dir aus deinem DataSet oder was auch immer du hast einzelne Objekte. Darin überschreibst du die ToString() Methode, damit diese den Wert zurückgibt, der in der ComboBox angezeigt werden soll und hängst die einzelnen Objekte an die ComboBox. Damit hast du ebenfalls immer alle Werte.

    3. Du hängst nur ID und anzuzeigenden Wert an die ComboBox und liest bei jeder neuen Auswahl die Daten frisch aus der Datenbank.
     

  5. #5
    blotte blotte ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Beiträge
    39
    Hallo ...!
    Ich habe fast identisches Problem, wie marcel_t ... Ich habe es auch schon hier gepostet.

    Vll kann mir jemand dabei hefen...ich arbeite mit Dataset.

    Vielen Dank im Voraus
    Caro
     

  6. #6
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    Die Combobox muss ungefähr so gefüllt werden:
    Code vb:
    1
    2
    3
    4
    5
    
        With comboboxName
            .DataSource = meineDataSource
            .ValueMember = "Spaltenname_Schlüssel"
            .DisplayMember = "Spaltenname_Anzeige"
        End With
     
    Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)

  7. #7
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    Zugreifen kann man dann über die .SelectedValue Eigenschaft der Combobox, diese Funktion liefert den Schlüssel des ausgewählten Eintrages.
     
    Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)

  8. #8
    blotte blotte ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Beiträge
    39
    Hey...!
    Kann man bei ValueMember auch mehr als nur eine Spalte angeben?

    Ist das möglich?
     

  9. #9
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    Nicht das ich jetzt wüsste.
    Die Eigenschaft heisst ja Value und nicht Values.

    Aber wenn du den Schlüssel für den Datensatz hast, kannst du ja die gesamte Zeile identifzieren.
     
    Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)

  10. #10
    blotte blotte ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Beiträge
    39
    Ok...!
    Wenn ich also den ValueMember auf meinen Primärschlüssel anordne...also auf die ID
    wie kann ich dann eine andere Spalte auswählen?

    Um es genauer zu sagen , habe ich im moment mit folgender Anweisung die von mir SelectedValue ausgelesen und in eine TextBox geschrieben.
    Code :
    1
    2
    3
    4
    
     if ( comboBox1->SelectedValue != nullptr ) {
                        
             textBox1->Text = comboBox1->SelectedValue->ToString();
    }
    Kann ich zusäzlich auch noch andere Spalten in einer anderen TextBox auslesen/schreien?
    Ich möchte nämlich in der einen Box die "Zutaten" haben und in einer anderen Box das "Rezept".

    Oder habe ich das fasch verstanden und man kann nicht auf die anderen Spalten zugreifen ?! (benutze-dataSet)

    MfG Caro
    Geändert von blotte (19.09.06 um 16:45 Uhr)
     

  11. #11
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wenn du dein DataSet in der Zwischenzeit nicht verworfen hast, kannst du dir dort die Daten zu der entsprechenden ID rauskitzeln.

    Ansonsten könntest du noch den Punkt 2 meiner vorigen Post überlegen. Dabei würdest du mit Objekten arbeiten und könntest das Objekt dann einfach an die entsprechenden TextBoxen whatever binden.
     

  12. #12
    blotte blotte ist offline Mitglied Bronze
    Registriert seit
    Mar 2006
    Beiträge
    39
    Bis hier hin schon mal danke....

    Mein DataSet existiert momentan mit einer dazu gehörigen SQL abfrage.
    Wobei ValueMember auf meiner "Rezeptbeschreibung" steht, weil diese in der meiner TextBox ausgegeben werden soll.
    Das DisplayMember steht momentan auf "Rezeptname", weil man ja in der ComboBox auswählen soll, welches Rezept vom dazugehörigen Cocktail angezeigt werden soll.
    Code :
    1
    
    textBox1->Text = comboBox1->SelectedValue->ToString();
    So weit so gut...

    Wie schon gesagt ist mit aber EIN ValueMember zu wenig.

    Wie kann ich jetzt einzelne Objekte AUS meiner Datenbank GENERIEREN?
    Kann ich dafür dann meine SQL-Abfrage fallen lassen?

    Meine Datenbank heißt Cocktails...
    Kann ich es so oder so ähnlich machen?
    Code :
    1
    2
    
    String ^sZutat = cocktails->zutaten->ToString();
    textBox1->Text = sZutat;
    So stelle ich mir das ungefähr vor, aber der Zugriff auf die Datenbank wird sich so nicht realisieren können...
    Kannst mir jemand oder vll auch der gute Norbert ein wenig weiterhelfen?

    Tut mir leid wenn momentan nicht selbst drauf komme...aber ich lerne auch erst seit 3 Monaten C++

    PS: Ich arbeite mit Stored Procedure

    Gruß


    -----
    Edit: Ich habe es einfach mal so ausprobiert wie ich es mir vorgestellt habe.
    Dabei kamen folgende Fehlermeldungen:
    Code :
    1
    2
    3
    4
    
    error C2065: 'cocktails': nichtdeklarierter Bezeichner
    c:\...\frmEdit.h(236) : error C2227: Links von "->zutaten" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
    Typ ist ''unknown-type''
    c:\...\frmEdit.h(236) : error C2227: Links von "->ToString" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
    Geändert von blotte (20.09.06 um 13:43 Uhr)
     

Ähnliche Themen

  1. daten in combobox
    Von deen_90 im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 13.09.07, 07:21
  2. Daten aus ComboBox auslesen
    Von raccoon im Forum PHP
    Antworten: 1
    Letzter Beitrag: 06.09.07, 15:08
  3. ComboBox mit Daten aus SQLDatenbank füllen
    Von christine82 im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 09.05.05, 12:33
  4. Zusätzliche Daten in Combobox
    Von desmoloch im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 10.12.04, 10:55
  5. Combobox mit daten aus db füllen
    Von Luda im Forum ASP
    Antworten: 6
    Letzter Beitrag: 14.09.03, 18:20