05. oktober 2004 - 21:35Der er
13 kommentarer og 1 løsning
Hvordan gemmer jeg værdier fra en listbox når man vælger flere
Hejsa
Jeg har en listbox, hvorfra man kan vælge flere værdier, men værdierne bliver ikke gemt når jeg vælger flere.
Jeg har selv fundet frem til at man på en eller anden måde skal sætte access til at gemme værdien i en anden tabel, men kan ikke finde ud af hvordan jeg skal gøre det.
Jeg har en tabel der hedder COMPANY hvori der i kollonnen SERVICES kan vælges flere muligheder i en listbox. Skal jeg så oprette en ny tabel til relationerne, og hvordan "skriver" jeg formen så den gemmer værdierne der?
i den event du ønsker skal starte overførslen af valgte data fra list kontrollen, indsætter du følgende kode:
Private Sub Kommandoknap2_Click() Dim ctl As Control Dim varItm As Variant
Set ctl = Me.Liste0
For Each varItm In ctl.ItemsSelected DoCmd.RunSQL "insert into tblSelectedCompany VALUES ('" & ctl.ItemData(varItm) & "')" Next varItm End Sub
koden løber gennem alle valgte data og indsætter de valgte i en tabel, som hedder tblSelectedCompany. I det valgte eksempel har jeg brugt en knap kontrol.
sætter de valgte ind efter hunanden i samme felt med ; imellem
Private Sub Kommandoknap2_Click() For intCurrentRow = 0 To Liste0.ListCount - 1 If Liste0.Selected(intCurrentRow) Then strItems = strItems & Liste0.Column(0, _ intCurrentRow) & ";" ' ";" kan udskiftes med "," eller andet End If Next intCurrentRow DoCmd.RunSQL "INSERT INTO COMPANY (SERVICES) VALUES ('" & Left(strItems, Len(strItems) - 1) & "')"
Jeg fandt ud af at sætte kabbak's kode ind, og det virker ikke helt efter hensigten, for hver gang jeg vælger noget, kommer der en dialogboks frem der spørger om jeg vil udføre det jeg har gang i, for så virker undo ikke mere... Derudover oprettes der en ny række i tabellen hver gang jeg laver en ændring, hvilket heller ikke er meningen....
Men det virker med at den indsætter flere værdier i samme felt :-)
Private Sub Form_Current() Dim TempStr As Variant, I As Integer For intCurrentRow = 0 To ServiceList.ListCount ' fravælger alle i listen ServiceList.Selected(intCurrentRow) = False Next
If Me.services <> "" Then TempStr = Split(Me.services, ";") For intCurrentRow = 0 To ServiceList.ListCount For I = 0 To UBound(TempStr) If ServiceList.Column(0, intCurrentRow) = Val(TempStr(I)) Then ServiceList.Selected(intCurrentRow) = True ' vælger dem der er brugt End If Next Next End If End Sub
Private Sub ServiceList_DblClick(Cancel As Integer) For intCurrentRow = 0 To ServiceList.ListCount - 1 If ServiceList.Selected(intCurrentRow) Then strItems = strItems & ServiceList.Column(0, intCurrentRow) & ";" ' ";" kan udskiftes med "," eller andet, men så skal den også skiftes i Form_Current() End If Next intCurrentRow
If strItems <> "" Then Me.services.SetFocus Me.services.Text = Left(strItems, Len(strItems) - 1) Me.ServiceList.SetFocus Call Form_Current Me.Refresh End If End Sub
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.