Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 20:21 Der er 18 kommentarer og
1 løsning

Gemme data fra ComboBox

Et, forhåbentligt, simpelt spørgsmål.

Jeg har en AccessDB, med 2 tabeller: Employee og Category.
Employee tilhører altid 1 af 3 mulige kategorier.
Jeg har en form, lavet i VB 5.0 (jeg arbejder med 6.0) hvor man indtaster alle "stamdata" om hver employee. Men jeg skal tilføje en combobox, hvor man skal vælge en kategori. Jeg kender kun til VB fra Access, og har aldrig arbejdet med "rigtig" VB før. Regner med at jeg skal kode mig ud af det. Any ideas?
Avatar billede mikker Nybegynder
18. oktober 2002 - 21:05 #1
Private Sub Form_Load()
Combo1.AddItem "Kategori1"
Combo1.AddItem "Kategori2"
Combo1.AddItem "Kategori3"
Combo1.ListIndex = 0
Text1 = Combo1.Text
End Sub


Private Sub Command1_Click()
Text1 = Combo1.Text
End Sub

Sådan lidt hurtigt fortalt...

- Mikker
Avatar billede tubber Juniormester
18. oktober 2002 - 21:10 #2
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset

Private Sub Command1_Click()
If Text1.Text = "" Then
    MsgBox "Der er et tomt felt, det må der ikke være."
ElseIf Combo1.Text = "" Then
    MsgBox "Der er et tomt felt, det må der ikke være."
Else
    Set ws = Workspaces(0)
    Set db = ws.OpenDatabase(App.Path & "\data.mdb")
    db.Execute "INSERT INTO table1 ('" & Combo1.Text & "') VALUES ('" & Text1.Text & "');"
End If
End Sub

Combo1.Text er den værdi som feltet hedder i din db, og Text1.Text er den værdi der sættes ind i feltet med navnet i combo1.text....

Du skal også bruge referencen Microsoft DAO 3.51 eller 3.6....

/Tubber
Avatar billede tubber Juniormester
18. oktober 2002 - 21:11 #3
mikker: hvad gør listindex i det du har skrevet.....
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 21:12 #4
Yes... Det var hurtigt...
Hvad skal Text1 defineres som?
Er det feltet i Employee-tabellen, som skal lagre "kategori1, 2 el.3"?

Og i så fald, hvorledes gøres det?
Avatar billede tubber Juniormester
18. oktober 2002 - 21:17 #5
Hvis det er mit du spørger til så....:

Text1.Text er den text der står skrevet i det tekstfelt i din form.
Combo1.Text er der hvor de 3 kategorier skal stå, så kan man ikke selv skrive dem....

det min if sætning gør er den chekker om der er tomme felter, hvis der ikke er tager den texten fra Text1 og sætter ind i det felt som passer til kategorien...
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 21:25 #6
Skal vist have tingene skåret ud i pap:
Min Combobox hedder ComboCategory i en form der hedder Employee.
Kategorivalgene ligger i en tabel, der hedder Category med 1 felt i, der hedder Category.
Hvis man vælger en værdi i Categorytabellen, skal denne lagres i feltet Category i Employee-tabellen.

Jeg har forsøgt med begge løsningsforslag, men uden held :o(
Kan I uddybe udfra det jeg har skrevet?
Avatar billede tubber Juniormester
18. oktober 2002 - 21:28 #7
Altså det du vil det er at hente data ind fra en database ?

I din database er der en tabel og der i et felt der hedder catgory......

og det er de poster der er under category du vil have ind i en combobox ?
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 21:32 #8
>>tubber
Præcis!
Og de værdier, som findes i comboboxen, skal så kunne bruges til hver employee (emp.1 tilhører kat.1; emp.2 tilhører kat.3, osv..)
Avatar billede tubber Juniormester
18. oktober 2002 - 21:35 #9
Hvad mener du med at emp1 tilhører kat1 og emp2 tilhører kat3 ?
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 21:38 #10
Der findes en form, hvor man taster al data om hver employee.. Bl.a. skal man kunne vælge om den pågældende tilhører kategori1, 2 eller 3 fra en Combobox.
Navnene på kategorierne f.eks. "leder", "sekretær", "andet" ligger i en tabel "Category". Dette skal, ligesom navn, adresse, osv. lagres i Employee-tabellen i feltet Category.

Make sense?
Avatar billede tubber Juniormester
18. oktober 2002 - 21:38 #11
Her er i hvertfald for at hente data ind i din combobox.....

Dim ws As Workspace
Dim db As Database
Dim rs As Recordset

Set ws = Workspaces(0)
Set db = ws.OpenDatabase(App.Path & "\data.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tabel")
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        Combo1.AddItem rs!Category
        rs.MoveNext
    Loop
End If

Data.mdb er dit databasenavn
Tabel er tabelnavn
rs!category er de recordsets der er i den tabel under det feltnavn der hedder category

og stadig den reference
Avatar billede tubber Juniormester
18. oktober 2002 - 21:40 #12
nu er jeg forvirret skal data ud af database eller ind i en database ?

eller hvad skal de ?
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 21:40 #13
Skal ovenstående ligge i Form_Load() eller hva?
Avatar billede tubber Juniormester
18. oktober 2002 - 21:41 #14
Nå jeg er lige away lidt skriver lige noget svar senere.....
Avatar billede tubber Juniormester
18. oktober 2002 - 21:41 #15
ja skal det
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 21:42 #16
Jeg taster manuelt de tre kategorier i Category-tabellen, men de skal IND i den samme DB, bare i en anden tabel (Employee)
Er det nemmere at droppe Category-tabellen og blot skrive hvad der skal være i Comboboxen i VB og herefter lagre det i Employee-tabellen?

Category-tabellen mente jeg bare gjorde det lettere, hvis man senerehen skal tilføje en kategori?
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 22:28 #17
Nu har jeg fikset ComboBoxen så den kan vise de tre kategorier - det blev løst ved at skrive det i Form_Load() i stedet for at bruge Category-tabellen. Men hvordan lagrer jeg så den valgte kategori med hver Employee?
Avatar billede tubber Juniormester
18. oktober 2002 - 23:04 #18
Private Sub Command1_Click()
If Combo1.Text = "" Then
    MsgBox "Der er et tomt felt, det må der ikke være."
Else
    Set ws = Workspaces(0)
    Set db = ws.OpenDatabase(App.Path & "\data.mdb")
    db.Execute "INSERT INTO table1 (Employe) VALUES ('" & Combo1.Text & "');"
End If
End Sub

Det skal være i en knap
Avatar billede ugotabe_kidding Nybegynder
18. oktober 2002 - 23:07 #19
Takker...
Håber det virker.. Jeg vil se på det i morgen formiddag.

/U.K.
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