automatische selectie in combobox 2 en 3 na selectie van 1e combobox

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
528
Goede middag ontwikkelaars,

Ik heb in mijn database een formulier met 3 comboboxen om de gebruiker de mogelijkheid te geven 1, 2, 3 te selecteren

Ik wil dit automatiseren. Door de keuze te maken in 1 en de andere automatisch te laten aanvullen.

Als in 1 : A wordt gekozen dan zou in 2 B moeten komen en in 3 C

Als in 1 : B wordt gekozen dan zou in 2 C moeten komen en in 3 "-" of blanco

Als in 1 : C wordt gekozen dan zou in 2 & 3 "-" moeten komen of blanco

Wanneer de keuze gemaakt is zou ook hun respectievelijk email adres in de textbox moeten verschijnen voor verder gebruik.

Ik heb al van alles geprobeerd met autovalue maar het wil maar niet lukken.

Kan mij iemand helpen?


Het formulier in bijlage is beperkt met de 3 comboboxen en de nodige tabel.


Bekijk bijlage Database1.zip


Thanks

Greetz

Pascal
 
Er zaten wel een paar dingetjes in die je in ieder geval moet veranderen, zoals de naam van de keuzelijsten. (nooit alleen cijfers gebruiken :)). Dus dat heb ik in het voorbeeldje aangepast.

Als in 1 : C wordt gekozen dan zou in 2 & 3 "-" moeten komen of blanco
Verder heb ik hier voor de blanco optie gekozen, omdat die makkelijker is te maken.
 

Bijlagen

  • Database1.zip
    35,2 KB · Weergaven: 24
OctaFish,

Bedankt voor de aangeboden oplossing. Werkt super! :thumb:

Ik heb gezien dat je het Email veld in de Tabel veranderd hebt naar "Short Text" ipv Hyperlink. Moet er dan telkens een "#" gezet worden achter het emailadres of mag dat weggelaten worden?

klein probleempje nog :

Zolang er 3 email adressen te zien zijn in de Form kan de email, met een nieuwe code, gecreëerd worden en worden de emailadressen op de juiste plaats ingevuld.

Dit is het onderdeel om de adressen in te vullen met de verwijzingen naar de velden uit mijn Form.

Code:
     With myMail
        ' setting the recipient
            .To = Mid(Me.Email1, 1, InStr(1, Me.Email1, "#") - 1)
            .CC = Mid(Me.Email2, 1, InStr(1, Me.Email2, "#") - 1) & ";" & Mid(Me.Email3, 1, InStr(1, Me.Email3, "#") - 1)

Van zodra een van de emailvelden in het Form leeg zijn geeft dit een error. Vermoedelijk omdat ze dus effectief "leeg" zijn neem ik aan. (Dit is mogelijk als in cbo1 de 2de persoon wordt gekozen, dan is het 3de vak leeg, enz...)

Kan dit opgevangen worden?

Thanks

Greetz

Pascal
 
Email adressen, met hyperlink als gegevenstype, is nogal onhandig in het gebruik, is mijn ervaring. Ik gebruik dus nooit hyperlinks als gegevens type, altijd tekst. De simpele reden: je tekst is gelijk klaar voor gebruik. Als ik al een tekst als hyperlink nodig heb (webpagina bijvoorbeeld) dan gebruik ik de opdracht FollowHyperlink, en dan kan ik de 'kale' tekst gewoon gebruiken als link. Dat werkt ook prima om bestanden te openen. En voor email adressen heb je toch alleen maar het tekstgedeelte nodig, dus jouw code om de # te verwijderen is met mijn werkwijze overbodig. Dus dan volstaat dit:
Code:
With myMail
        ' setting the recipient
            .To = Me.Email1
            .CC = Me.Email2 & ";" & Me.Email3
En zeg nou zelf: dat is toch veel mooier?

Hyperlinks zijn alleen nuttig''(totaal niet dus) als je vanuit een tabelveld gelijk een link wil openen, of een mail wil maken. En dat gaat dus vanuit een formulier (en daar moet je toch mee werken) dus vele malen mooier met FollowHyperlink.
 
OctaFish,

Die code voor mijn mails was een oplossing van #NoellaG om het emailadres (als Hyperlink) juist in te voeren. Voordien kreeg ik : "pascal.vandeputte@mil.be#mailto:pascal.vandeputte@mil.be#"

Jouw manier is dus inderdaad eenvoudiger... :eek: en veel mooier :cool:

In de DB die je aangepast hebt staat in de tabel achter ieder emailadres een #. Moet dat?

Greetz

Pascal
 
Die is blijven staan bij het handmatig aanpassen van de email adressen. Die moeten dus weg :).
 
Goede morgen OctaFish,

U hebt mij deze oplossing gegeven en dit werkt (bijna) perfect.:confused:


Code:
Private Sub cbo1_Click()
Dim s As String, i As Integer, j As Integer, iC As Integer

Dim rs As DAO.Recordset
    s = "SELECT [BeslisserID], [Beslisser], [Email] FROM TabelBeslisser WHERE [BeslisserID]> " & Me.cbo1.Value & " ORDER BY [BeslisserID]"
    Set rs = CurrentDb.OpenRecordset(s, dbOpenSnapshot)
    With rs
        On Error Resume Next
        iC = .RecordCount
        If iC = 0 Then Exit Sub
        i = Me.cbo1.Value + 1: j = 1
        .MoveLast
        .MoveFirst
        Do Until .EOF
            j = j + 1
            Me("cbo" & j).Value = .Fields(0).Value
            Me("Email" & j).Value = .Fields(2).Value
            If iC < 4 Then
                .MoveNext
            Else
                Exit Do
            End If
            i = i + 1
            iC = iC + 1
        Loop
    End With
    Me.cbo2.SetFocus
End Sub

Code:
Private Sub cbo1_GotFocus()
Dim i As Integer
    For i = 2 To 3
        Me("cbo" & i).Value = Null
        Me("Email" & i).Value = ""
    Next i
End Sub

X = 1ste persoon
Y = 2de persoon
Z = 3de persoon

A : Wanneer ik X kies wordt in het tweede en derde veld de naam & email van Y en Z automatisch ingevuld. :thumb:
B : Wanneer ik Y kies wordt in het tweede veld de naam & email van Z automatisch ingevuld en blijft het derde leeg. :thumb:
C : Wanneer ik Z kies blijft het tweede en derde leeg. :thumb:

probleempje bij verandering van keuze :

Wanneer ik A heb gekozen en ik verander dit nadien naar B dan staat in het derde veld de gegevens van Z. Dit zou leeg moeten zijn.
Wanneer ik A heb gekozen en ik verander dit nadien naar C dan staat in het tweede veld de gegevens van Y en in het derde veld de gegevens van Z. Dit zouden leeg moeten zijn.
Wanneer ik B heb gekozen en ik verander dit nadien naar C dan staat in het tweede veld de gegevens van Y en is het derde veld leeg. het tweede veld zou ook leeg moeten zijn.

vb :

probleem.JPG probleem 2.JPG

Het komt er eigenlijk op neer dat de velden die leeg moeten zijn, afhankelijk van mijn 2de keuze, leeg moeten blijven. wat niet het geval is.

Kan dit opgelost worden?

Thanks

Greetz

Pascal
 
Met de GotFocus kun je acties uitvoeren die eerdere acties ongedaan maken, zoals het leegmaken van andere velden. Ik heb daar een voorbeeldje van gegeven, wat prima werkt volgens mij. Ik zou zeggen: pas deze techniek ook toe op de andere keuzelijsten, en breid hem eventueel uit met de velden die je óók leeg wilt hebben :).
 
Octafish,

Het probleem is dat de 2de en 3de cbo geen focus krijgen. Ik heb ze in "Locked" geplaatst vanwege de automatische invulling na de keuze in cbo1.

Na wat zoeken, de logica proberen te vinden en uitproberen heb ik dezelfde code uit cbo1_GotFocus() (die ik na uw uitleg begrepen heb wat ze doet) ook in de cbo1_AfterUpdate() geplaats en het werkt.

Ik neem aan dat dit een goede oplossing is? :confused:



Thanks

Greetz

Pascal
 
Ik gebruik liever de <Bij Klikken> gebeurtenis, die hetzelfde effect heeft, maar dan direct gekoppeld aan de klikactie. Het is dan niet nodig om de focus eerst op een ander object te zetten, wat wel nodig is bij de gebeurtenis <Na bijwerken>.
 
OctaFish,

op de <Bij Klikken> gebeurtenis staat toch het eerste gedeelte van de code...

Ik heb de code er op het einde bijgezet, i vervangen door k, een Dim k as Integer bijgezet maar het werkt niet. Of is het niet zo simpel:rolleyes:
 
Ik snap ook niet helemaal wat je wilt; de eerste keuzelijst is wat mij betreft de trigger voor de overige twee. Dus als je in de eerste wat verandert, moeten de andere twee leeggemaakt worden. Dat gebeurt ook. De tweede en derde vul je vanuit de eerste. Dus wat gaat er dan nog fout? Hooguit door in de tweede keuzelijst een keuze te maken die anders is als uit de eerste volgt. In dat geval moet de tweede ook een GotFocus krijgen die de derde leeg maakt. En een Click natuurlijk. Maar dat verandert aan het proces niks.
 
Octafish,

Ik begrijp nu het idee achter de twee codes en ik weet wat me te doen staat.

Thanks

Greetz

Pascal
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan