Avatar billede jgni Nybegynder
21. september 2002 - 13:00 Der 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.

Forståeligt ?
Muligt ?
Avatar billede tubber Juniormester
21. september 2002 - 15:48 #1
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

er der spg så bare spørg løs :O)

/Tubber
Avatar billede jgni Nybegynder
21. september 2002 - 16:22 #2
Hej Tubber
Uha, der kunne godt komme mange spørgsmål når man er grøn på VB !

Men nu kigger jeg lige på det og så spørger jeg sikkert om en hel masse ting :)
Avatar billede jgni Nybegynder
21. september 2002 - 16:31 #3
Den øverste halvdel af koden, altså følgende :

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 ?
Avatar billede tubber Juniormester
21. september 2002 - 16:41 #4
Ahhh sorry....

Brugte noget jeg havde lavet med textboxe......

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)

/Tubber
Avatar billede jgni Nybegynder
21. september 2002 - 16:44 #5
Lad mig se, lad mig se...okay så tilgiver jeg dig *GG*

Jeg arbejder videre med det så. Jeg får nogen småfejl, men nu prøver jeg med det nye her :)
Avatar billede tubber Juniormester
21. september 2002 - 16:50 #6
Set ws = Workspaces(0)
Set db = ws.OpenDatabase(App.Path & "\data.mdb")
Set rs = db.OpenRecordset("SELECT * FROM data1")

Lige en forklaring til det her:
App.Path er det dir dit program ligger i.
data.mdb er databasens navn.
data1 er det tabelnavn du vil hente ind fra.

har du flere tabeller skal du lave hele den smørre en gang mere.

/Tubber
Avatar billede jgni Nybegynder
21. september 2002 - 16:51 #7
Nu får jeg så en kompileringsfejl der hedder "Compile error : Argument not optional" på linien List1.AddItem = rs!dbNavn ?
Avatar billede tubber Juniormester
21. september 2002 - 16:52 #8
Har du husket at lave en reference til programmet ?
Avatar billede jgni Nybegynder
21. september 2002 - 16:53 #9
Hmm...Det tror jeg ikke ?
Noget at gøre med :
> Du skal tilføje den reference der hedder DAO 3.51 eller DAO 3.6

??
Avatar billede tubber Juniormester
21. september 2002 - 16:56 #10
ja du har en menu der hedder : project der kan du vælger references og der skal du markere den DAO du har med det højeste nummer :O)
Avatar billede jgni Nybegynder
21. september 2002 - 16:59 #11
Jo, det har jeg gjort allerede, så det kan ikke være det.
Jeg skal ikke trække noget ud på formen ?
Avatar billede tubber Juniormester
21. september 2002 - 17:00 #12
Nej det er ikke datagrid til access det er SQL

hmmm.....har du omdøbt de der dbNavn osv. til dem der passer på posterne i din tabel ?

Måske du vil maile mig den kode du har ?

smolf@venner.dk

/Tubber
Avatar billede jgni Nybegynder
21. september 2002 - 17:29 #13
Jo da, kommer på din mail om et par minutter :)
Avatar billede tubber Juniormester
21. september 2002 - 17:35 #14
ok :O)
Avatar billede tubber Juniormester
21. september 2002 - 17:54 #15
Fandt fejlen :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
Avatar billede tubber Juniormester
21. september 2002 - 17:54 #16
Håber du selv lige kan rette resten til :)
Avatar billede tubber Juniormester
21. september 2002 - 18:03 #17
hov der behøver ikke være () omkring dit recordset
Avatar billede jgni Nybegynder
21. september 2002 - 18:09 #18
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 hvordan vil det komme til at se ud ?
Avatar billede jgni Nybegynder
21. september 2002 - 18:18 #19
Takker for hjælpen 'so far' :)
Avatar billede tubber Juniormester
21. september 2002 - 18:21 #20
Nej det er dine tabeller, altså henter du data fra 2 tabeller skal du gentage.....henter du kun fra en tabel er det nok med en gang :O)

Np du :O)
Avatar billede jgni Nybegynder
21. september 2002 - 18:24 #21
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 ?
Avatar billede jgni Nybegynder
21. september 2002 - 18:25 #22
Lige en detalje : jeg er nød til at udkommentere rs.MoveNext i Form_Load for at det virker ??
Avatar billede tubber Juniormester
21. september 2002 - 18:26 #23
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)
Avatar billede jgni Nybegynder
21. september 2002 - 18:29 #24
Ja, det lyder jo meget nemt :|
Avatar billede tubber Juniormester
21. september 2002 - 18:54 #25
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester