Toon posts:

[Access] Listbox en gecombineerde keys *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zal mijn probleem even kort proberen te omschrijven.

Ik heb een tabel:
METERSTANDEN (Maanplaatsnummer, Maandcode, Jaar, EL_stand, WA_stand)

Maandplaatsnummer -> Integer (1 t/m x) ...
Maandcode -> Tekst -> (jan / feb / maa) ...
Jaar -> Integer -> (xxxx) ...
EL_Stand -> Integer -> (xxxxxx) ...
WA_Stand -> Tekst -> (xxx,xxx) ...

Nu heb een listbox die alle gegevens dus uit deze tabel haalt. Dat werkt op zich allemaal goed, beetje sleep en pleur werk van access :P

Nu heb ik daar zeg maar een AfterUpdate functie aan gekoppeld die de invul
velden moet vullen met de aangeklikte gegevens, zodat deze direct gewijzigd kunnen worden. De listbox is dus voor overzicht, daar op klikken en de invulvelden worden gevuld met de aangeklikte gegevens.

code:
1
2
3
4
5
6
7
8
Private Sub lstStanden_AfterUpdate()
    ' De record zoeken die overeenkomt met het besturingselement
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Maandplaats] = " & Str(Nz(Me![lstStanden], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub


Nu is het zo dat er een gecombineerde primary key is, de eerste drie kolommen zijn dus de primary key. Het is dus zo dat er meerdere nr's voor kunnen komen met een andere maand en jaartal.

Nu is het zo dat de bovenstaande functie zijn werk wel goed doet, maar ik wil het nog iets uitbreiden. Als er nl. meer dan één maal hetzelfde maandplaatsnummer voorkomt pakt de functie altijd het eerste record. Dan heeft mijn listbox weinig nut.

Is het mogelijk om deze functie snel en eenvoudig uit te breiden? Zodat ik zeg maar de selectie maak op de eerste drie kolommen en dus de aanklik actie wel uniek kan maken en vervolgens de velden automatisch kan laten vullen met de juiste gegevens.

Let wel, ik kan geen wijzigingen aan de database c.q. tabellen meer aanbrengen, daar heb ik op dit punt té weinig tijd voor.

[ Voor 3% gewijzigd door Verwijderd op 05-06-2003 23:22 ]


Verwijderd

Topicstarter
^ schop ^

edit:

Sorry voor de early kick, maar zit nogal omhoog. Tevens is het zo dat de post vroeg is geplaatst.

[ Voor 87% gewijzigd door Verwijderd op 06-06-2003 19:01 ]


  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 04-08 15:18
Het wordt hier niet op prijs gesteld als je binnen 24 uur je bericht al omhoog kickt.
zie regels

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


Verwijderd

Ik weet niet of ik je helemaal begrijp, maar ik geloof dat je vraag eigenlijk is:

"Hoe detecteer ik welke rij (met de afzonderlijke column items) in de listbox is geselecteerd?".

Onderstaande code geeft de items van de geselecteerde rij.

Private Sub lstStanden_Click()

For Each varItem In lstStanden.ItemsSelected
MsgBox lstStanden.Column(0, varItem)
MsgBox lstStanden.Column(1, varItem)
MsgBox lstStanden.Column(2, varItem)
MsgBox lstStanden.Column(3, varItem)
MsgBox lstStanden.Column(4, varItem)
Next varItem

End Sub

Zo kan je dus zeggen:

Private Sub lstStanden_AfterUpdate()
' De record zoeken die overeenkomt met het besturingselement
Dim rs As Object

Set rs = Me.Recordset.Clone

For Each varItem In lstStanden.ItemsSelected
rs.FindFirst "[Maandplaats] = " & Str(Nz(lstStanden.Column(1, varItem)))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Next varItem

End Sub


Pieter.

Verwijderd

Verwijderd schreef op 06 juni 2003 @ 19:15:
Ik weet niet of ik je helemaal begrijp, maar ik geloof dat je vraag eigenlijk is:

"Hoe detecteer ik welke rij (met de afzonderlijke column items) in de listbox is geselecteerd?".

Onderstaande code geeft de items van de geselecteerde rij.

code:
1
2
3
4
5
6
7
8
9
10
11
Private Sub lstStanden_Click()

    For Each varItem In lstStanden.ItemsSelected
        MsgBox lstStanden.Column(0, varItem)
        MsgBox lstStanden.Column(1, varItem)
        MsgBox lstStanden.Column(2, varItem)
        MsgBox lstStanden.Column(3, varItem)
        MsgBox lstStanden.Column(4, varItem)
    Next varItem

End Sub


Zo kan je dus zeggen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub lstStanden_AfterUpdate()
    ' De record zoeken die overeenkomt met het besturingselement
    Dim rs As Object

    Set rs = Me.Recordset.Clone

    For Each varItem In lstStanden.ItemsSelected
        rs.FindFirst "[Maandplaats] = " & Str(Nz(lstStanden.Column(1, varItem)))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    Next varItem

End Sub


Pieter.

Verwijderd

Topicstarter
Thanks a million! Problem solved. :*)
Pagina: 1