melding dat een record al aanwezig is

Status
Niet open voor verdere reacties.

john614

Gebruiker
Lid geworden
20 aug 2012
Berichten
32
beste forumleden
Ik ben bezig met een database en heb een gegevensblad gemaakt met gegevens over een aantal medewerkers. De personen haal ik via een keuzemenu uit een andere tabel met alle medewerkers.
Het kan nu gebeuren dat ik een medewerker per ongeluk 2x toevoeg. Is het mogelijk dat ik een waarschuwing krijg wanneer de medewerker al in mijn gegevensblad voorkomt.
Alvast bedankt.
John
 
Zet in de tabel waar je gegevensblad op gebaseerd is bij het veld 'Medewerker' (of hoe je het ook genoemd heb) de eigenschap 'Geïndexeerd' op 'Ja, geen duplicaten'.
 
Hoi PFL,
Heb ik gedaan en het werkt maar het is wel heel onhandig voor de gebruiker omdat er al een record wordt toegevoegd en je daarna heel wat moet doen om het weer te herstellen.
Het zou handiger zijn als er een melding komt die de actie annuleert.
 
Het enige wat de gebruiker hoeft te doen is (een paar keer) op Ctrl-Z drukken. Eventueel kun je een knop toevoegen met een macro erachter die dat doet. Die knop is echter niet zichtbaar in de gegevensbladweergave van het formulier maar alleen in de formulierweergave.
 
Je zult, als je wilt voorkomen dat een persoon dubbel wordt ingevoerd, een niet-gebonden formulier moeten gebruiken waar je dan ook nog een fuzzy zoekfunctie op moet gebruiken. Want je zult toch een check moeten hebben op één of meer velden. Daarbij kunnen wij niet in jouw proces kijken, dus hoe streng die zoekfunctie moet zijn kunnen wij niet bepalen.
Je kunt een hoop ellende voorkomen als je de juiste instellingen gebruikt op je dataformulieren. Een formulier waarin je de personen kiest met een keuzeljst met invoervak laat alle noodzakelijke velden zien waarop je een persoon selecteert. En typ je een naam in die niet bestaat, kun je met de gebeurtenis <Bij niet in lijst> de persoon toevoegen.
Kortom: personen toevoegen blijft mensenwerk.
Ik zou het proces overigens ook dichttimmeren; een werkwijze met <Ctrl>+<z> zou mijn eer te na zijn :).
 
I.p.v. (weer) eens een sneer uit te delen en een heel verhaal op te hangen hoe je dubbele invoer kunt proberen te voorkómen, zou je ook de oplossing kunnen geven. Want hoe goed je het ook dichttimmert allemaal, het is onvermijdelijk dat een gebruiker wel eens iets dubbel invoert. Access geeft dan standaard de melding dat de invoer ongeldig is omdat het 'dubbele waarden in de index of het sleutelveld oplevert' (of woorden van gelijke strekking) maar verwijdert helaas niet automatisch het reeds aangemaakte record en geeft ook niet aan hoe je dat zelf kunt doen. Dat een paar keer op Ctrl+Z drukken werkt, zal niet iedereen weten.
Jij weet vast wel hoe je dat met VBA kunt oplossen dus geef die oplossing dan ook gewoon.
 
Een sneer uitdelen? Ach, als je dat er in wil lezen, ga je je gang maar... Ik heb alleen maar gezegd dat ik het niet zo zou oplossen. Gek genoeg lees je níet dat ik de door jou gevraagde oplossing in hetzelfde berichtje heb gezet: niet-afhankelijke formulieren gebruiken! En ook heb ik gezegd dat het proces te complex is om zo maar een antwoord te geven.
Dus ik wacht nog steeds op reactie van TS, als je dat niet erg vindt.
 
Hoi,
Ik heb een oplossing gevonden door achter het keuzemenu een query te maken waarin aan de rechterkant alle medewerkers zitten en aan de linkerkant alleen de reeds geselecteerde (d.m.v. IsNull). Hierdoor kun je
dus nooit een reeds geselecteerde medewerker kiezen. Ik weet niet of dat de meest Chique oplossing is maar het werkt perfect.
Bedankt voor het meedenkenvoorbeeld.jpg
 
Het is chique als het werkt, en als het snel werkt, en als het makkelijk te onderhouden is :). Volgens mij voldoe je wel aan die eisen :D.
 
hallo, ik zie in je query nogal wat spaties, die zitten dus waarschijnlijk ook in je benamingen van je tabellen en velden? Beste die spaties wegwerken en uw DB normaliseren.

Je kunt ook achter dat keuzelijstje "NaamVanJeVeld" in de gebeurtenis "voor_bijwerken" een vb code hangen met een DCount die zoekt of je naam al voorkomt in die bewuste kolom van de medewerkers; je krijgt dan een berichtje dat je medewerker al toegevoegd is zonder dat er daadwerkelijk iets gebeurd
Code:
If Not IsNull(NaamVanJeVeld) Then voorwaarde = " NaamVanJeVeldInTabel= '" & Forms!NaamVanJeFormulier!NaamVanJeVeld& "'"
    Aantal = DCount("NaamVanJeVeldInTabel", "NaamVanJeTabel", voorwaarde)
If Aantal > 0 Then
    MsgBox "Er bestaat al een eerdere registratie voor deze persoon met naam: " & NaamVanJeVeld & " bij de medewerkers!"
    Cancel = True
    Exit Sub
End If


Of je gebruikt het aan de hand van een recordset "bij_verlaten" van een bv een veld "names" in een formulier (in onderstaand voorbeeld checken of een ingevoerde "Name" reeds bestaat in een Tbl_users
Code:
Private Sub Names_Exit(Cancel As Integer)
    Me.Names = StrConv(Me.Names, vbProperCase)

        Dim db As Database
        Dim rs As Recordset
    
        Set db = CurrentDb
        Set rs = db.OpenRecordset("SELECT * FROM Tbl_users ORDER BY Name")
    
        rs.FindFirst ("Name = """ & Forms!Frm_users1!Name & """")
        If (rs.NoMatch) Then
            Exit Sub
        Else
            MsgBox "Login komt al voor in bestand, ga terug en kies een ander", vbCritical + vbYesNo, "Bevestiging gevraagd!"
            Me!Name = ""
        End If
        Names.SetFocus
    
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan