*

Help!

Problemen met uw pc? De vrijwilligers van oplossing.be zoeken gratis met u mee! 8)

Meer weten over Oplossing.be?

Hoe stel ik een vraag?

Recent

Auteur Topic: Dubbele invoer via formulier vermijden  (gelezen 683 keer)

Offline Hraoul

  • Lid
  • *
  • Berichten: 11
  • Geslacht: Man
  • Oplossing.be
Dubbele invoer via formulier vermijden
« Gepost op: 19 augustus 2017, 15:13:05 »
Ik heb een tabel Klanten met daarin het veld Nederlandse_Naam. Hierop is een formulier gebaseerd. Ik zou willen bekomen dat bij het verlaten van het veld Nederlandse_Naam in het formulier  Planteninvoerformulier ik onmiddellijk een bericht krijg dat het ingevoerde al in de tabel Klanten voorkomt. Deze tabel Klanten is voor dat veld ingesteld op Geen Duplicaten. Kreeg reeds het volgende van iemand maar het werkt niet, ik krijg telkens enkel een foutmelding Wie helpt deze VBA-leek? Bedankt!
Dit is de foutmelding:
De expressie Na bijwerken die u hebt opgegeven als instelling voor de gebeurteniseigenschap, heeft de volgende fout veroorzaakt: Verwacht: Text of Binary.
 * Er is een fout opgetreden bij het evalueren van een functie, gebeurtenis of macro.


Eerste methode:

Sub Nederlandse_Naam_AfterUpdate()
Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT [Nederlanse_Naam] FROM [Planten] WHERE [Nederlanse_Naam] = """ & Me.Nederlanse_Naam & """")
    With rs
        If .RecordCount > 0 Then
            MsgBox "'" & Me.Nederlanse_Naam & "' komt al voor", vbOKOnly, "Dubbele naamcheck"
            Me.Nederlanse_Naam = Null
        End If
    End With

Tweede methode:
Private Sub Nederlandse _naam_AfterUpdate()
    If fZoekOp(Me!Nederlandse_Naam ) Then
        MsgBox "die waarde komt al voor"
    Else
        MsgBox "invoer niet gevonden"
    End If
End Sub

Function fZoekOp(s As String) As Boolean
    Dim fld                      As Object
    With CurrentDb.OpenRecordset("Klanten")
        While Not .EOF And Not fZoekOp
            For Each fld In .Fields
                If fld.Value = s Then
                    fZoekOp = True
                    Exit For
                End If
            Next
            .MoveNext
        Wend
    End With
End Function

« Laatst bewerkt op: 20 augustus 2017, 11:13:18 door SoftAid »

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.210
  • I've Upped my standards,now,up yours!
Re: Dubbele invoer via formulier vermijden
« Reactie #1 Gepost op: 19 augustus 2017, 18:52:04 »
Dag Hraoul,

Allicht werkt dit wel met een recordset en dan een count.
Je kan ook zoiets doen als
Dim aantal as integer
aantal = dcount("Nederlanse_Naam", "Planten", "Nederlanse_Naam='"  &  Me.Nederlanse_Naam & "'")
if aantal> 0 then
   msgbox "Naam bestaat al"
   exit sub
end if

Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Hraoul

  • Lid
  • *
  • Berichten: 11
  • Geslacht: Man
  • Oplossing.be
Re: Dubbele invoer via formulier vermijden
« Reactie #2 Gepost op: 20 augustus 2017, 10:03:14 »
Bedankt voor je advies. Jammer genoeg leidt het weer tot de zelfde foutmelding en komt het berichtje "naam bestaat al " niet te voorschijn. :)

Offline lommer

  • Excel-Expert
  • Lid
  • *****
  • Berichten: 70
  • Geslacht: Man
Re: Dubbele invoer via formulier vermijden
« Reactie #3 Gepost op: 20 augustus 2017, 10:51:18 »
Ik vermoed dat je een tabel Planten hebt en niet Klanten.
Probeer deze eens

Private Sub Nederlandse_Naam_BeforeUpdate(Cancel As Integer)
    If(Not IsNull(DLookup("[Nederlandse_Naam]", "Planten", "[Nederlandse_Naam] ='" &; Me!Nederlandse_Naam &; "'"))) Then
        MsgBox "Naam komt al voor."
        Cancel = True
        Me!Nederlandse_Naam.Undo
    End If
End Sub
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 6

Offline Hraoul

  • Lid
  • *
  • Berichten: 11
  • Geslacht: Man
  • Oplossing.be
Re: Dubbele invoer via formulier vermijden
« Reactie #4 Gepost op: 21 augustus 2017, 12:01:54 »
Moet dit geplaatst worden bij de eigenschap before of after update van het veld Wetensschappelijke_Naam,

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.210
  • I've Upped my standards,now,up yours!
Re: Dubbele invoer via formulier vermijden
« Reactie #5 Gepost op: 21 augustus 2017, 19:24:50 »
Voor zo'n formulieren maak ik geen gekoppelde formulieren.
Als alles ok is doe ik de insert. In bijlage een vb.

Als je form gekoppeld is, zou je een rollback moeten moeten doen.
Mss dat dat ook lukt met een Cancel zoals lommer doet?
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

 


www.combell.com