Avatar billede tma_oksboel Nybegynder
17. maj 2002 - 14:37 Der er 13 kommentarer og
1 løsning

Listbox.add Det må da være muligt

Hej
Hvordan tilføjer jeg via visual basic elementer til en liste. Jeg har gjort det i xp uden problem. Selv om jeg bruger deployment wizard, genkendes metoden ikke i -97 eller 2000. Det må da være muligt at føje elementer til. Der er et eksempel i solutions.mdb, men tilsyneladende virker det ikke. Hvordan gøres det? Jeg har faktisk set et par punkter i hjælp om emnet, men det skyldes formentlig bare at det er muligt i ren visual basic og ikke access.

Torben
17. maj 2002 - 14:42 #1
Der er forskel på listboksen i Access og VB, ja.

Listbokse skal enten være knyttet til en tabel, en værdiliste (tekststreng adskilt med semicolon) eller en funktion (sidstnævnte er lidt kompliceret)

Så du kan enten lave en tmp-tabel, som du kan tilføje og fjerne fra eller du kan sætte listboksens rækkekildetype til "Værdiliste" og derefter opbygge Rækkekilden vha VBA.

Det er vist gangske rigtigt lavet lidt om i XP...men har ikke haft mulighed for at kigge på det.
Avatar billede tma_oksboel Nybegynder
17. maj 2002 - 15:23 #2
Jeg har allerede af nød lavet en tmptabel og peger så på den, det undrer mig bare at det ikke er muligt. Jeg venter lige og ser om der kommer forslag til løsning uden tmp. DB-størrelsen vokser uhensigsmæssigt.

Torben
Avatar billede nih Novice
17. maj 2002 - 16:44 #3
du kan indsætte en 'rigtig' list box ved at vælge 'flere kontrolementer' i værktøjskassen og indsætte det element der hedder 'mikrosoft forms 2.0'

Niels
Avatar billede nih Novice
17. maj 2002 - 16:45 #4
'microsoft forms 2.0 listbox'
Avatar billede terry Ekspert
17. maj 2002 - 17:42 #5
If you use a value list you can use the following, this example adds 3 rows with 3 columns

Me.List0.AddItem Item:="A1;A2;A3"
Me.List0.AddItem Item:="B1;B2;B3"
Me.List0.AddItem Item:="C1;C2;C3"
Avatar billede terry Ekspert
17. maj 2002 - 17:44 #6
then you could add a new row at the strart of the list
Me.List0.AddItem Item:="a1;a2;a3", Index:=0
Avatar billede nih Novice
17. maj 2002 - 17:57 #7
er AddItem en ny metode i Access, den er ikke i min 'Gamle' version.

Niels
Avatar billede terry Ekspert
17. maj 2002 - 18:02 #8
XP
17. maj 2002 - 18:08 #9
thats what tma_oksboel said in his question: it works in XP but not in '97 and '2000
Avatar billede nih Novice
17. maj 2002 - 18:22 #10
Ved at indsætte en fra msForms kan man bruge kode ala det her:

  Dim i As Integer
  Dim CtlList As MSForms.ListBox
  Set CtlList = ActiveXKtl3.Object
  CtlList.ColumnCount = 2
    For i = 0 To 10
      CtlList.AddItem
      CtlList.Column(0, i) = i
      CtlList.Column(1, i) = i * 10
    Next i

Niels
Avatar billede tma_oksboel Nybegynder
17. maj 2002 - 21:54 #11
til Niels
Din 3. linie, skal den pege på det objekt jeg har på formen (når jeg har valgt den type du angav) Jeg omdøber mit kontrolelement på formen til at hedde MyList, men min linie:
set CtlList = Minform.MyList
giver fejl.

Til Terry:
Jeg har også prøvet dine eksempler på både traditionel listbox og den fra microsoft forms listbox, men kan ikke få dem til at køre.

Hjælp udbedes.
Avatar billede tma_oksboel Nybegynder
17. maj 2002 - 22:13 #12
Til Niels
Så har jeg fået det skruet rigtigt sammen. Ændrede på erklæringen af objektet, da jeg ikke havde held til at angive den via ActiveX... Forklar gerne nærmere om syntaksen.

Att. Terry
Is it correct that the examples you mentioned, only apply to XP?

Tak for hjælpen til alle
Point til Niels

Torben
Avatar billede nih Novice
17. maj 2002 - 22:46 #13
Takker for pts :o)

Her er et eks på brugen, med kommentarer, efter bedste evne:
Option Compare Database
Option Explicit
'erklære ctllist som listboxobjekt - global
Private CtlList As MSForms.ListBox

Private Sub Form_Close()
'Frigør memory hvis ikke formen selv gør det
Set CtlList = Nothing
End Sub
Private Sub Form_Load()
  Dim i As Integer
  'en gang for alle erklæres objectet ctlList
  'HUSK der er forskel på objektet ctlList og
  'ActiveX Mylist
  Set CtlList = Me.MyList__.Object
  'listen fyldes
    CtlList.ColumnCount = 2
    For i = 0 To 10
      CtlList.AddItem
      CtlList.Column(0, i) = i
      CtlList.Column(1, i) = i * 10
    Next i
End Sub
Private Sub MyList___Click()
  'Listen bruges
  'Vælg objekt øverst til venstre og
  'hændelse øverst til højre i
  'dette vindue
  MsgBox CtlList.Value
End Sub

Hvis du stiller dig på en metode (eks addItem) og trykker F1 får du hjælpen til msforms og ikke Access listebox.
Det er interressant at sætte nogle stop i koden og følge variablerne i 'locals window' her kan du se både værdier og objekttyper af bl.a. ctlList.

Helt sjovt at tage pts fra Thomas og Terry - he he

Niels
Avatar billede terry Ekspert
18. maj 2002 - 13:03 #14
We let you Niels :o))
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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