tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
1919
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    KingOfMetropole KingOfMetropole ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    11
    Hallo

    ich habe folgendes Problem:

    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Pfad & ";Persist Security Info=False"
    strSQL = "SELECT FKurz & FName & FStraße & FPLZ & FOrt FROM Adressdatenbank"

    diesen inhalt zeigt er in der ComboBox an ! ist es möglich sich auf FKurz zu beschränken aber er trotzdem alle ausliest ? ( Ich möchte also nur FKurz angezeigt bekommen )

    Vielen Dank im voraus
     

  2. #2
    KingOfMetropole KingOfMetropole ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    11
    hat keiner einen Ratschlag ?
     

  3. #3
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Ich versteh das Problem nicht! Was zeigt er an? Wie lässt du es in der Combo anzeigen?
     

  4. #4
    KingOfMetropole KingOfMetropole ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    11
    oke ich probiere das mal genauer zu erläutern:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    Private Sub UserForm_Activate()
    'Variablen deklarieren
      Dim oConn As ADODB.Connection
      Dim oRS As ADODB.Recordset
      Dim x As Variant
      Dim y() As Variant
    'Verbindung zur Datenbank wird aufgebaut
      Set oConn = CreateObject("ADODB.Connection")
      oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Pfad & _
      ";Persist Security Info=False"
    'Füllen des Recordsets
         strSQL = "SELECT FName FROM Adressdatenbank order by FName"
      Set oRS = oConn.Execute(strSQL)
      x = oRS.GetRows()
      If IsArray(x) Then
        ReDim y(UBound(x, 2))
        For i = 0 To UBound(x, 2)
          y(i) = x(0, i)
        Next i
    'Ausgabe des Recordsets in eine ComboBox
        ComboBox1.List = y()
      End If
    'Verbindungsabbau
      Set oConn = Nothing
      Set oRS = Nothing
    End Sub

    Also bisher lesen wir dadurch nur die Spalte "FName" aus. Allerdings wollen wir noch die Adressspalten auslesen. Ist es möglich diese gleichzeitig mit auszulesen, aber in der ComboBox zu verstecken. ?

    Also soll in der Combobox nur der Name stehen und sich daraus in dem Feld die Adresse der Firma komplett wiederspiegeln

    Hier ein Ausschnitt wie es bisher aussieht:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    'Text wird aus ComboBox1 in das TextFeld2 übernommen
    Private Sub ComboBox1_Click()
    TextBox2.Text = ComboBox1.Value
    End Sub
    'Anzeigen der Adressdaten der Firma in TextFeld2
    Private Sub TextBox2_Change()
    Me.TextBox2 = "FName" & vbCrLf & "FStraße" & vbCrLf & "FPLZ" & vbCrLf & "FOrt"
    End Sub
    Private Sub UserForm_Activate()
    'Variablen deklarieren
      Dim oConn As ADODB.Connection
      Dim oRS As ADODB.Recordset
      Dim x As Variant
      Dim y() As Variant
    'Verbindung zur Datenbank wird aufgebaut
      Set oConn = CreateObject("ADODB.Connection")
      oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Pfad & _
      ";Persist Security Info=False"
    'Füllen des Recordsets
         strSQL = "SELECT FName FROM Adressdatenbank order by FName"
      Set oRS = oConn.Execute(strSQL)
      x = oRS.GetRows()
      If IsArray(x) Then
        ReDim y(UBound(x, 2))
        For i = 0 To UBound(x, 2)
          y(i) = x(0, i)
        Next i
    'Ausgabe des Recordsets in eine ComboBox
        ComboBox1.List = y()
      End If
    'Verbindungsabbau
      Set oConn = Nothing
      Set oRS = Nothing
    End Sub
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken VBA ! Combobox-screen.jpg  
     

  5. #5
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Schonmal versucht das Recordset mit ner While-Schleife zu durchlaufen und die Combo so zu füllen:

    Code :
    1
    2
    3
    4
    5
    
     oRS.MoveFirst
       Do While Not oRS.EOF
        Combo1.AddItem oRS.Fields("Feldname").Value
        oRS.MoveNext
       Wend
     

  6. #6
    KingOfMetropole KingOfMetropole ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    11
    joa ist bestimmt ein guter Ansatz aber wo genau im Code gehört das hin ? )

    sind halt noch net so fit in VBA *g*

    aber danke schonmal
     

  7. #7
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Statt

    Code :
    1
    2
    3
    4
    5
    6
    7
    
          x = oRS.GetRows()
          If IsArray(x) Then
        ReDim y(UBound(x, 2))
        For i = 0 To UBound(x, 2)
          y(i) = x(0, i)
         Next i
       end if

    mal

    Code :
    1
    2
    3
    4
    5
    
       oRS.MoveFirst
         While Not oRS.EOF
        Combo1.AddItem oRS.Fields("Feldname").Value
        oRS.MoveNext
         Wend

    versuchen - nur noch Combo1 gegen den Namen deiner Combo austauschen
    Geändert von M4st3r (14.02.05 um 11:30 Uhr)
     

  8. #8
    KingOfMetropole KingOfMetropole ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    11
    Sorry aber es wird dann beim Kompilieren eine Fehlermeldung angezeigt:

    "Wend ohne While"

    Woran kann das liegen?
     

  9. #9
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Oh, Sorry, das "DO" vor dem "WHILE" muss weg...
     

  10. #10
    KingOfMetropole KingOfMetropole ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    11
    mhhh gut also die combobox wird jetzt auch weiterhin mit den Daten gefüllt.
    nur wie bekommen wir jetzt in der untersten textbox die anderen daten zu der dazugehörigen firma angezeigt ?
     

  11. #11
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Indem du im Click-Event der Textbox eine neue Abfrage auf FName machst und die ermittelten Daten in das Textfeld einfügst!
     

  12. #12
    KingOfMetropole KingOfMetropole ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    11
    sorry sind wir gerade total mit überfordert *g*

    click_event bei der textbox ?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    'Text wird aus ComboBox1 in das TextFeld2 übernommen
    Private Sub ComboBox1_Click()
    TextBox2.Text = ComboBox1.Value
    End Sub
    'Anzeigen der Adressdaten der Firma in TextFeld2
    Private Sub TextBox2_Change()
    Me.TextBox2 = "FName" & vbCrLf & "FStraße" & vbCrLf & "FPLZ" & vbCrLf & "FOrt"
    End Sub

    das haben wir bisher.... aber funktioniert nicht wirklich
     

  13. #13
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Wenn sich das Textfeld bei der Änderung der Combp ändern soll dann muss der Combo_Click Event das verarbeiten. In dem steht dann eine SQL die die entsprechenden Daten aus der Datenbank holt. dann kannst du wieder über oRS.field("Feldname").value die entsprechenden Daten in das Textfeld einfügen
     

  14. #14
    MareikeRemmel MareikeRemmel ist offline Rookie
    Registriert seit
    Aug 2004
    Beiträge
    9
    Ich habe eine Idee wie man es in VB6 machen könnte, keine Ahnung ob es auch mit VBA geht. Schau einmal ob es die Eigenschaft "Tag" gibt.
    Dann könntest du die Daten, welche in der Combobox nicht angezeigt werden sollen in dem Tag der Combobox speicher.
    Z.B. so:
    combo1.Tag=Starße|Ort|PLZ
    Und dann könntest du dir die Datenbankabfrage bei jedem Klick sparen.
     

  15. #15
    thekorn thekorn ist offline Mitglied Brokat
    Registriert seit
    Apr 2002
    Ort
    Hannover
    Beiträge
    250
    Naja, einfach die Daten in ein 2-dimensionales Array (Datenfeld) einlesen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        oRS.MoveFirst
        i = 0
        While Not oRS.EOF
            daten(i, 0) = oRS.Fields("Feldname0").Value
            daten(i, 1) = oRS.Fields("Feldname1").Value
            daten(i, 2) = oRS.Fields("Feldname2").Value
            daten(i, 3) = oRS.Fields("Feldname3").Value
            Combo1.AddItem daten(i, 0)
            oRS.MoveNext
        Wend

    Wird nun die Auswahl im Combofeld geändert, so kann man über ".ListIndex" den aktiven Eintrag auslesen:
    Code :
    1
    2
    3
    
    Private Sub ComboBox1_Change()
    TextBox2.Text = daten(ComboBox1.ListIndex, 1) & vbCrLf & daten(ComboBox1.ListIndex, 2) & vbCrLf & daten(ComboBox1.ListIndex, 3) & vbCrLf & daten(ComboBox1.ListIndex, 4)
    End Sub

    (Es gibt evtl. einen Fehler wenn nichts ausgewählt wird, ".ListIndex" ist dann -1)

    So sollte es relativ einfach gehen.

    gruß
    thekorn
     

Ähnliche Themen

  1. Access, ComboBox gemäß ComboBox füllen?
    Von pglw im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 17.09.06, 22:08
  2. ini in Combobox
    Von crashkid-design im Forum Visual Basic 6.0
    Antworten: 8
    Letzter Beitrag: 02.04.05, 18:07
  3. ComboBox mit DB
    Von fablio im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 04.02.05, 14:10
  4. ComboBox
    Von c-hilgert im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 07.06.04, 10:58
  5. VB 6.0 - ComboBox
    Von Rudolph im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 21.01.04, 11:27