Selectie control

Status
Niet open voor verdere reacties.
Ik zie geen control. Leg eens uit wat je bedoelt.
 
In een Access-formulier kan ik een pull-down element 'Keuzelijst met invoervak' (combobox) plaatsen. Een soortgelijke keuzemogelijkheid, maar dan uitgebreidermet sortering en bijv. 'begint met' of 'bevat' heb je in een Access-tabel of in een Excel-tabel. Is er een dergelijke combobox ook in het formulier te plaatsen (misschien Active-X)?
 
Je vindt alle sorteer en filtreer opties in de menu onder de rechtermuisknop. Dus heb je een extra active X niet echt nodig.
 
En als antwoord op de vraag: nee, ze bestaan niet.
 
Oke. jammer.
Dan moet ik zelf maar aan de slag en proberen zoiets te maken. ;-)
 
Moet te doen zijn; ik giet ook altijd mijn eigen broodmessen. :D. Ik zou eerder zeggen: werk met de mogelijkheden die binnen het programma vallen, en ga niet zelf lopen ontwikkelen. Wat je wél zou kunnen doen: gebruik die andere mogelijkheden om het gewenste effect te bereiken, want die zijn er uiteraard best wel. Zo heb je het over:
uitgebreider met sortering en bijv. 'begint met' of 'bevat'
kun je prima maken met tekstveldfilters. Zet in de koptekst van een formulier een paar tekstvakken (van/boven de velden waarop je wilt filteren) en gebruik VBA om op basis van de ingevoerde tekst het (liefst doorlopende) formulier te filteren. Dat is vermoedelijk ook nog eens veel makkelijker (want duidelijker) voor de gebruiker.
 
Zelf activeX controls is zeker te doen, en ik zou me niet laten ontmoedigen om het te proberen. Octafish heeft wel gelijk op het punt dat als je Access wil gebruiken je misschien best bij de mogelijkheden blijft die Access biedt. Om ActiveX te maken gebruik je technologieën zoals .net of C# en eens dat je die onder de knie hebt, kan je de complete UI via deze technieken opbouwen. Dan heb je veel meer mogelijkheden, zeker naar het web en mobiele apps toe. Het hangt ervan af welk doel je wil bereiken en hoeveel tijd je daarin wil investeren.
 
Dank je wel NoellaG.
Als ik het even wat rustiger heb en er tijd voor vrij maak, wil ik daar mee aan de slag. Het is wel dot.net. Daar heb ik nog maar heel weinig ervaring mee.
 
Pas maar op; bij de volgende vraag krijg je als antwoord dat je best een eigen databasetaal kan ontwikkelen voor je probleem :D. Tenzij het nuttig/noodzakelijk voor je is om eigen controls te ontwikkelen (je zou voor mij de eerste zijn waar dat nodig is) zou ik je aanraden met de bestaande mogelijkheden te werken. Dat gaat je bergen tijd schelen. Maar als je die hebt: ik hou je uiteraard niet tegen :D.
 
Tijd besteed aan het leren van nieuwe dingen en zichzelf ontwikkelen is de best bestede tijd van al.
 
Dank OctaFish en Noella. Ik heb de suggestie gevolgd om de selectie aan te passen met een click op het selectiecontrol en een dubbelclick op het tekstcontrol. Ik vind het wel leuk om het hier te laten zien.
Code:
Private Sub cbo01_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo02_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo03_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo04_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo05_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo06_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo07_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo08_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo09_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
'Private Sub cbo10_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo11_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub
Private Sub cbo12_AfterUpdate(): meZoek Me.ActiveControl.Name: End Sub

Private Sub ctr01_DblClick(Cancel As Integer): Me.cbo01.Value = Me.ActiveControl.Value: cbo01_AfterUpdate: End Sub
Private Sub ctr02_DblClick(Cancel As Integer): Me.cbo02.Value = Me.ActiveControl.Value: cbo02_AfterUpdate: End Sub
Private Sub ctr03_DblClick(Cancel As Integer): Me.cbo03.Value = Me.ActiveControl.Value: cbo03_AfterUpdate: End Sub
Private Sub ctr04_DblClick(Cancel As Integer): Me.cbo04.Value = Me.ActiveControl.Value: cbo04_AfterUpdate: End Sub
Private Sub ctr05_DblClick(Cancel As Integer): Me.cbo05.Value = Me.ActiveControl.Value: cbo05_AfterUpdate: End Sub
Private Sub ctr06_DblClick(Cancel As Integer): Me.cbo06.Value = Me.ActiveControl.Value: cbo06_AfterUpdate: End Sub
Private Sub ctr07_DblClick(Cancel As Integer): Me.cbo07.Value = Me.ActiveControl.Value: cbo07_AfterUpdate: End Sub
Private Sub ctr08_DblClick(Cancel As Integer): Me.cbo08.Value = Me.ActiveControl.Value: cbo08_AfterUpdate: End Sub
Private Sub ctr09_DblClick(Cancel As Integer): Me.cbo09.Value = Me.ActiveControl.Value: cbo09_AfterUpdate: End Sub
'Private Sub ctr10_DblClick(Cancel As Integer): Me.cbo10.Value = Me.ActiveControl.Value: cbo10_AfterUpdate: End Sub
Private Sub ctr11_DblClick(Cancel As Integer): Me.cbo11.Value = Me.ActiveControl.Value: cbo11_AfterUpdate: End Sub
Private Sub ctr12_DblClick(Cancel As Integer): Me.cbo12.Value = Me.ActiveControl.Value: cbo12_AfterUpdate: End Sub

Function meZoek( _
    cboName As String _
    )
    Dim strWhere            As String
    Dim lngLen              As Long
    Const conJetDate = "\#mm\/dd\/yyyy\#"   'The format expected for dates in a JET query string.
        
    If Not IsNull(Me("cbo01")) Then
        strWhere = strWhere & "([bsb_dteDatum] = " & Format(Me("cbo01"), conJetDate) & ") AND "
    End If
    If Not IsNull(Me("cbo02")) Then
        strWhere = strWhere & "([ord_intKlant] = " & Me("cbo02") & ") AND "
    End If
    If Not IsNull(Me("cbo03")) Then
        strWhere = strWhere & "([bsb_strOnderdeel] LIKE '*" & Me("cbo03") & "*') AND "
    End If
    If Not IsNull(Me("cbo04")) Then
        strWhere = strWhere & "([ord_intConsultant] = " & Me("cbo04") & ") AND "
    End If
    If Not IsNull(Me("cbo05")) Then
        strWhere = strWhere & "([ord_intPlanner] = " & Me("cbo05") & ") AND "
    End If
    If Not IsNull(Me("cbo06")) Then
        strWhere = strWhere & "([bsb_strStatus] = '" & Me("cbo06") & "') AND "
    End If
    If Not IsNull(Me("cbo07")) Then
        strWhere = strWhere & "([ord_strTypeAnders] = '" & Me("cbo07") & "') AND "
    End If
    If Not IsNull(Me("cbo08")) Then
        strWhere = strWhere & "([bsb_strBeschikbaar] = '" & Me("cbo08") & "') AND "
    End If
    If Not IsNull(Me("cbo09")) Then
        strWhere = strWhere & "([bsb_intTrainer] = " & Me("cbo09") & ") AND "
    End If
    If Not IsNull(Me("cbo10")) Then
        strWhere = strWhere & "([bsb_intActeur] = " & Me("cbo10") & ") AND "
    End If
    If Not IsNull(Me("cbo11")) Then
        strWhere = strWhere & "([bsb_memOpmerkingen]LIKE '*" & Me("cbo11") & "*') AND "
    End If
    If Not IsNull(Me("cbo12")) Then
        strWhere = strWhere & "([mrg_strOrderMaand] = '" & Me("cbo12") & "') AND "
    End If
    If Not cboGeannuleerd Then
        strWhere = strWhere & "([bsb_strStatus] <> 'AN' AND [bsb_strStatus] <> 'BT') AND "
    End If
    
    lngLen = Len(strWhere) - 5
    If lngLen <= 0 Then 'Laat alle records zien
        Me.FilterOn = False
    Else
        strWhere = Left(strWhere, lngLen) 'Verwijder AND.
        Me.Filter = strWhere
        Me.FilterOn = True
    End If
    
    Me.OrderBy = "[tblOrderDagen].[bsb_dteDatum] " & Me.cbo01.Tag
    On Error Resume Next
    Me.ctr01.SetFocus
End Function
 
Kan wel een heel stuk simpeler, maar als het werkt, werkt het :)
 
Ja, het werkt uitstekend en we zijn er ook heel tevreden mee.
Je schrijft 'een heel stuk simpeler. Dat maakt me wel nieuwsgierig. Misschien met me.activecontrol ?
 
Me.ActiveControl gebruik je al, dus dat is niet het antwoord :). Ik heb zo geen direct voorbeeld om mee te testen; als jij een voorbeeld levert, maak ik de code wel.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan