Multiselect listbox

Status
Niet open voor verdere reacties.

snj2804

Gebruiker
Lid geworden
12 okt 2007
Berichten
14
In mijn database worden dagelijks orders ingevoerd.
Aan het einde van het traject moet aangegeven worden welke orders zijn goedgekeurd en welke niet.
Gezien de grote hoeveelheid gebruik ik een listbox die ik op multiselect heb gezet.
Het is mijn eerder gelukt om meerdere orders te selecteren en daar een rapport van te maken.
Nu wil ik met hetzelfde principe een update query maken.
Het lukt mij om de update te maken met vba.
Alleen gaat hij alle orders updaten en niet degene die ik geselecteerd heb.

Heb op internet gezocht en kon niet echt iets vinden wat voor mij van toepassing was dus vandaar mijn vraag.

Weet iemand hoe ik dit aan moet pakken?
DoCmd.RunSQL "select * into TempTbl from Tabelnaam where (((Tabelnaam.Week)=" & Me.Text6 & "))"
DoCmd.OutputTo acOutputTable, "TempTbl", acFormatXLS, "H:\Tabelnaam.xls", True
DoCmd.RunSQL "UPDATE [ORDER ENTRY] LEFT JOIN TempTbl ON [ORDER ENTRY].Kolom = TempTbl.[NEEC REF] SET [ORDER ENTRY].Goedkeuring = Yes WHERE ((([ORDER ENTRY].Rapport)=Yes) AND ((TempTbl.[NEEC REF]) Is Not Null))"

Ik heb de code aangepast vanwege geheimen.
Ter extra info: ik heb tevens een filterfunctie inzitten waarmee ik de week kan uitfilteren zodat het zoeken iets makkelijker maakt (text6).
Per week kunnen tussen de 100 en 500 orders zitten.

Het handigste lijkt mij om alles eerst te selecteren (heb ik werkend) en degene die niet goedzijn te deselecteren en dan de update draaien.
 
Je listitems kan je doorlopen door gebruik te maken van de property itemsselected van je listbox.
Code:
Private Sub cmdSave_Click()
    'Instellingen opslaan
    Dim ctl As Control
    Dim varItm As Variant
    Dim strForm As Variant    
        
    ' Multiselect afvangen.
    Set ctl = Me.lstForms
    For Each varItm In ctl.ItemsSelected
        strForm = ctl.ItemData(varItm)
        debug.print "Selected : " & strform
    Next varItm

Exit_cmdSave_Click:
    Exit Sub
Err_cmdSave_Click:
    Resume Exit_cmdSave_Click
End Sub
Enjoy!
 
Bedankt voor de code.
Heb hem erin gezet en dat is wat ik zoek.
(Had wel debug.print veranderd in msgbox zodat ik zag wat er uit voort kwam).
Heb vervolgens geprobeerd om een deel van mijn code erbij te doen maar hij werkt alle orders bij die in de listbox zitten.
Zal morgenochtend een frisse nieuwe blik erop werpen en dan kijken wat eruit voort komt.
 
Ik ben inmiddels al wat verder.
Ik krijg nu een popup te zien waar ik iets moet invullen.
Ik weet alleen niet wat of hoe ik die uit kan zetten.
Op het moment dat ik op Ok klik gaat de code verder maar werkt niets bij.
Bijgaand een voorbeeld over de situatie die ik op dit moment heb.
Heb 2 knoppen waarvan de code bijna gelijk is alleen 1 werkt goed(Msgbox) en de ander bijna(update).
In de tekstveld kan je de week invullen.
 

Bijlagen

Pas je code een beetje aan:
Code:
Private Sub Update_Click()
    Dim ctl As Control
    Dim varItm As Variant
    Dim strForm As Variant
    ' Multiselect afvangen.
    Set ctl = Me.List0
    For Each varItm In ctl.ItemsSelected
        strForm = ctl.ItemData(varItm)
        DoCmd.RunSQL "select * into TempTbl from Table1 where (((Table1.Week)= [COLOR="Red"]" & strForm & "[/COLOR]))"
        DoCmd.RunSQL "UPDATE [Table1] LEFT JOIN TempTbl ON [Table1].Order = TempTbl.Order SET [Table1].Appr = Yes WHERE (((TempTbl.[Order]) Is Not Null))"
    Next varItm
End Sub
 
Heb hem aangepast en had in het begin ene klein foutje inzitten

Had de week moeten veranderen in Order en dan werkt hij echt super.
Bedankt voor de hulp :thumb:.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan