21. september 2002 - 13:00Der er
24 kommentarer og 1 løsning
Comboliste
Jeg sidder og arbejder med en combo-box Jeg forestiller mig følgende :
Øverst i min form er der en combo-box. Neden under en listbox. Når jeg dropper ned i min combo og vælger et felt, skal det jeg vælger komme i listbox'en Det jeg meget gerne vil vælge er så nogen datafield-ting hvis det er muligt ?
Altså så resultatet af en forespørgsel kan vælges direkte i min combo og resultatet vises i min listbox.
Du skal tilføje den reference der hedder DAO 3.51 eller DAO 3.6
Dim ws As Workspace Dim db As Database Dim rs As Recordset
'I din form_load vælger den det der skal stå i din combobox fra en access 'database, rs!dbId er primær nøgle som bare er et autonummer Set ws = Workspaces(0) Set db = ws.OpenDatabase(App.Path & "\data.mdb") Set rs = db.OpenRecordset("SELECT * FROM data1") If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF comNavn.AddItem rs!dbNavn comNavn.ItemData(comNavn.NewIndex) = rs!dbId comNavn.Text = rs!dbNavn rs.MoveNext Loop End If End Sub
'Her er så koden for at hente data ind fra db når du vælger i din combobox. Private Sub comNavn_Click() Set ws = Workspaces(0) Set db = ws.OpenDatabase(App.Path & "\data.mdb") Set rs = db.OpenRecordset("SELECT * FROM data1") rs.MoveFirst Do While rs.EOF = False If rs!dbId = comNavn.ItemData(comNavn.ListIndex) Then txtAdresse.Text = rs!dbAdresse txtPostOgBy.Text = rs!dbPostnummer + " " + rs!dbBy txtLand.Text = rs!dbLand txtTelefonnummer.Text = rs!dbTelefonnummer txtMobilnummer.Text = rs!dbMobilnummer txtEmail.Text = rs!dbEmail txtHjemmeside.Text = rs!dbHjemmeside txtFoedselsdag.Text = rs!dbFoedselsdag End If rs.MoveNext Loop End Sub
Dim ws As Workspace Dim db As Database Dim rs As Recordset
'I din form_load vælger den det der skal stå i din combobox fra en access 'database, rs!dbId er primær nøgle som bare er et autonummer Set ws = Workspaces(0) Set db = ws.OpenDatabase(App.Path & "\data.mdb") Set rs = db.OpenRecordset("SELECT * FROM data1") If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF comNavn.AddItem rs!dbNavn comNavn.ItemData(comNavn.NewIndex) = rs!dbId comNavn.Text = rs!dbNavn rs.MoveNext Loop End If End Sub
skal stå i Form_Load() ? Og den nederste på Combo_Click'en ? Hvad så med listbox'en ?
Går ud fra at du vil have forskellige poster i en bestemt rækkefølge :O) kører lige vidre med mit adressebogs eks.
Ja det er rigtigt, det øverste form_load og det nederste i combo_click...... Jeg laver lige det der skal i combo_click igen :O)
'Her er så koden for at hente data ind fra db når du vælger i din combobox. Private Sub comNavn_Click() Set ws = Workspaces(0) Set db = ws.OpenDatabase(App.Path & "\data.mdb") Set rs = db.OpenRecordset("SELECT * FROM data1") rs.MoveFirst Do While rs.EOF = False If rs!dbId = comNavn.ItemData(comNavn.ListIndex) Then List1.AddItem = rs!dbNavn List1.AddItem = rs!dbAdresse List1.AddItem = rs!dbPostnummer + " " + rs!dbBy List1.AddItem = rs!dbLand List1.AddItem = rs!dbTelefonnummer List1.AddItem = rs!dbMobilnummer List1.AddItem = rs!dbEmail List1.AddItem = rs!dbHjemmeside List1.AddItem = rs!dbFoedselsdag End If rs.MoveNext Loop End Sub
rs! er for at hente et recordset rs!dbNavn - dbNavn er det recorden hedder i min accessdatabase :O)
Private Sub comNavn_Click() Set ws = Workspaces(0) Set db = ws.OpenDatabase(App.Path & "\dataopsamling.mdb") Set rs = db.OpenRecordset("SELECT * FROM Hardware") rs.MoveFirst Do While rs.EOF = False If rs!dbId = comNavn.ItemData(comNavn.ListIndex) Then List1.AddItem (rs!Netkort) ' Skal den hedde det ?? I min DB hedder tabellen Hardware og den lodrette 'søjle' hedder F.eks Netkort List1.AddItem (rs!RAM) End If rs.MoveNext Loop End Sub
Hvis jeg nu vil have flere linier (valgmuligheder) ind i min combo så kan jeg forstå på dig at det er de her linier der skal gentages :
Set ws = Workspaces(0) Set db = ws.OpenDatabase(App.Path & "\dataopsamling.mdb") Set rs = db.OpenRecordset("SELECT * FROM Hardware") rs.MoveFirst Do While rs.EOF = False If rs!Id = comNavn.ItemData(comNavn.ListIndex) Then List1.AddItem (rs!Netkort) List1.AddItem (rs!RAM) End If rs.MoveNext Loop
Men er det ikke muligt at få de forskellige tabel- og forespørgslesnavne i combo'en og afhængig af hvilken en 'entry' man vælger, kommer resultatet i list'en ?
jo du kan selv oprette data i comboboxen....det jeg har gjort er det den henter din entry i databasen, men du fylder bare selv comboboxen...og så laver din forbindelser med databasen ud fra det :O)
Havde lige en på 6 mdr. der skulle have mad :O) Mailer du din DB og så laver jeg lige et lille eksempel :O)
/Tubber
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.