Automatische selectie in een combo box afhankelijk van logingegevens netwerk

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
528
Beste ontwikkelaars,

Ik heb een database ontwikkeld voor het maken van standaardbrieven aan onze klanten.

De database werkt prima (mede dank zij de hulp van Helpmij.nl :thumb:)


Mijn database werkt als volgt : de klant word opgezocht, de specifieke problemen voor het dossier worden geselecteerd met de daarbij horende standaardtekst voor op de brief.

bij een volgende stap gaat er een formulier open waar de correspondent (medewerker op onze dienst) moet worden geselecteerd uit een combo box.

en bij de laatste stap wordt de brief (rapport) geselecteerd en daar komen dan alle gegevens op : de geselecteerde problemen met hun tekst, alle gegevens van de correspondent.

Mijn vraag :

Is het mogelijk (met vba) om bij de selectie van de correspondent automatisch de correspondent in te vullen in de combo box afhankelijk van de login-gegevens van de gebruiker op het netwerk?

vb : mijn Login op het netwerk = vanpimperzeel.p - wanneer het formulier voor de correspondent open gaat zou ik automatisch al mijn naam (login) willen geselecteerd zien in de combo box.

Is dit mogelijk? :confused:


Thanks

Greetz

Pascal
 
Dat is zeker mogelijk, en niet eens lastig :). Als de gekoppelde waarde van je keuzelijst tenminste hetzelfde is als de inlognaam. In dat geval kun je die waarde zo toewijzen aan de keuzelijst:
Code:
Me.cboCorrespondent.Value = VBA.Environ("UserName")
 
OctaFish,

Thanks :thumb:

Waar zet ik deze code? In een event van de Combo box zelf? Welke dan?


Greetz

Pascal
 
Ik heb je db niet, dus daarom heb ik dat even opengelaten :) Maar op basis van deze opmerking:
bij een volgende stap gaat er een formulier open waar de correspondent (medewerker op onze dienst) moet worden geselecteerd uit een combo box.
zou ik zeggen: in de gebeurtenis <Bij laden> of <Bij aanwijzen> van het formulier.
 
Octafish,

Ik dacht zowel iets maar wou zeker zijn. :thumb:

Ik zal het even testen :)

Greetz
 
OctaFish,

Werkt perfect, heb het getest op PC van collega's :thumb:

Een probleempje : normaal gezien heeft de combo box de functie om een record te zoeken op basis van de geselecteerde waarde uit de combo box.

dit gebeurt met de macro : SearchForRecord met de criteria : ="[TarifeerderID] = " & Str(Nz([Screen].[ActiveControl];0)) in die staat in de event "After Update"

Nu gebeurt dit niet.

Zou dit op te lossen zijn om de macro in een ander event te plaatsen? Zo ja welke? of met VBA code?

Thanks

Greetz
 
Brrr. Lees ik daar het woord 'macro'? Dan ben ik weg :). Weet ik niks van, en wil ik ook niks van weten.
 
Octafish,

Dit is wel een macro die automatisch gecreerd wordt door de "Use control wizard" te gebuiken :confused:

Ik klik de Combo box (uit controls), creeer die in mijn formulier en selecteer de nodige critera. oa "zoek een record op basis van de geselecteerde waarde..." Eens alles gedaan zie ik in het Event menu dat de macro aangemaakt is in "After Update"


Is het met VBA op te lossen? :confused:


Greetz

Pascal
 
Tuurlijk, en m.i. een stuk makkelijker :). Je geeft de rest van de macro niet, maar dat maakt niet zoveel uit:
Code:
Private Sub cboZoekPersoon_Click()
Dim rs As DAO.Recordset

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[TarifeerderID] = " & Me.cboZoekPersoon
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Nou heb ik wél enige twijfel over het veld TarifeerderID. Dat riekt naar een numeriek veld, en eerder wilde je de keuzelijst standaard op de naam van de gebruiker zetten. En dat is tekst. En dat klopt dan dus niet. ALs TariefeerderID een tekstveld is, met de naam van de gebruiker, dan moet het zo:

Code:
Private Sub cboZoekPersoon_Click()
Dim rs As DAO.Recordset

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[TarifeerderID] = """ & Me.cboZoekPersoon & """"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
 
OctaFish,

[TarifeerderID] is inderdaad een autonummer-veld (Sleutelveld) (Had het misschien ook beter [CorrespondentID] genoemd)

En dan zijn er de velden met de gegevens van de correspondent, zoals login, naam, enz...

Het is op basis van die login (= dezelfde als login network) dat er een record wordt gezocht in het formulier. De Combobox werkt op basis van een query met de link naar [TarifeerderID] en [Login].

Maar dat zal je weten vermoed ik zo :rolleyes:


Ik zal straks even proberen als ik thuis ben.

Ik hou je op de hoogte.

Greetz

Pascal
 
Octafish,

Of kan is het beter dat ik het veld [Login] als sleutelveld instel? en het veld [TarifeerderID] weglaat.

Greetz
 
Laatst bewerkt:
Als de logins uniek zijn (en meestal is dat zo) kun je die ook gebruiken als sleutelveld. Maakt op zich niet zo heel veel uit wat je gebruikt. Het wordt wat lastiger als je op basis van een loginnaam (met Environ("Username") bijvoorbeeld) iets wilt doen, en je hebt dan de ID nodig. Maar met een DLookup kun je altijd de ID wel ophalen, als je matcht op de naam. En dan ben je ook waar je wezen wilt. Is wel een extra handeling.
 
OctaFish,

Ik heb in de tabel Correspondenten het veld [TarifeerderID] weggedaan en een veld [Username] aangemaakt als sleutelveld = textveld

Mijn combobox wordt automatisch ingevuld door de code
Code:
Me.cboCorrespondent.Value = VBA.Environ("UserName")
in de "bij open" v/h formulier te plaatsten. So far so good.

Ik heb dus uw tweede code (en [tarifeerderID] vervangen door [Username]) in "bij klikken" van de cboZoekPersoon geplaatst maar het formulier geeft nog steeds de gegevens van het eerste record weer en niet de gegevens van de username in mijn combobox. (zijnde mijn username - ik heb hier thuis wel mijn tabel dus mijn username aangepast)

Waarom moet uw code bij "bij klikken" geplaatst worden? Eigenlijk zou ik niet meer hoeven te klikken omdat de combobox automatisch wordt ingevuld bij openen van het formulier. De bedoeling is dan dat het record wordt weergegeven van de geselecteerde username.


Als ik dan de combobox aanklik en mijn Username selecteer krijg een compileerfout : een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd

private sub cboZoekPersoon_Click() wordt geel en "rs As DAO.Recordset" wordt geselecteerd.

Greetz
 
Maar wat wil je nu? De code werkt: de keuzelijst laat de correcte persoon zien, en het formulier opent met de juiste persoon. Wat er verder moet gebeuren: geen idee :).
 
OctaFish,

Uiteraard klopt alles nu, er stond maar 1 naam in de tabel :p

Ik heb er nu een naam bijgevoegd en je zal zien dat de dat de juiste Username in de combobox staat maar dat het eerste record zichtbaar is en niet het record van de naam in de combobox.

Bekijk bijlage Brief naar klant - kopie.zip

Greetz

pascal
 
Ik heb mezelf toegevoegd, en het werkt prima. Er staan dus wel degelijk dan meer records in de tabel. Ik snap de aanvulling dus niet helemaal. Maar ik kijk wel weer naar de nieuwe variant.
 
OctaFish,

Als je het formulier aanklikt zie je in de combobox jouw Username en in de andere velden jouw gegevens zonder iets aan te klikken?

Bij mij is dit niet het geval, sorry hoor :confused:


Greetz
 
In je laatste variant moet je wat aanpassen.
Code:
Private Sub Form_Load()
Dim rs As DAO.Recordset
    Me.cboZoekPersoon.Value = VBA.Environ("UserName")
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Username] = """ & Me.cboZoekPersoon & """"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan