ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
1919
1919
EMPFEHLEN
-
11.02.05 10:52 #1
- 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
-
14.02.05 09:51 #2
- Registriert seit
- Feb 2005
- Beiträge
- 11
hat keiner einen Ratschlag ?
-
14.02.05 10:39 #3
- 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?
-
14.02.05 11:02 #4
- 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
-
14.02.05 11:12 #5
- 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
-
14.02.05 11:19 #6
- 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
-
14.02.05 11:25 #7
- 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 austauschenGeändert von M4st3r (14.02.05 um 11:30 Uhr)
-
14.02.05 11:28 #8
- Registriert seit
- Feb 2005
- Beiträge
- 11
Sorry aber es wird dann beim Kompilieren eine Fehlermeldung angezeigt:
"Wend ohne While"
Woran kann das liegen?
-
14.02.05 11:30 #9
- Registriert seit
- Jan 2005
- Ort
- Frankfurt am Main
- Beiträge
- 297
Oh, Sorry, das "DO" vor dem "WHILE" muss weg...
-
14.02.05 12:04 #10
- 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 ?
-
14.02.05 12:13 #11
- 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!
-
14.02.05 12:18 #12
- 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
-
14.02.05 12:21 #13
- 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
-
18.02.05 15:07 #14
- 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.
-
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
-
Access, ComboBox gemäß ComboBox füllen?
Von pglw im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 17.09.06, 22:08 -
ini in Combobox
Von crashkid-design im Forum Visual Basic 6.0Antworten: 8Letzter Beitrag: 02.04.05, 18:07 -
ComboBox mit DB
Von fablio im Forum .NET ArchivAntworten: 1Letzter Beitrag: 04.02.05, 14:10 -
ComboBox
Von c-hilgert im Forum C/C++Antworten: 6Letzter Beitrag: 07.06.04, 10:58 -
VB 6.0 - ComboBox
Von Rudolph im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 21.01.04, 11:27





Zitieren
Login





