naar specifiek record gaan

Status
Niet open voor verdere reacties.

jwaque

Verenigingslid
Lid geworden
16 aug 2006
Berichten
443
als ik in het veld [opiaatkaartnr] een dubbel nr invoer komt de melding: "Opiaatkaartnummer is al ingevoerd". Nu wil ik dat de database vervolgens naar dit record toe springt.
Ik heb nu onderstaande code. Maar die werkt helaas niet volledig.

Ik denk dat het afsluiten van het formulier en opnieuw openen wat overdreven is maar heb nog geen andere optie gevonden. Iemand een idee?

De code staat bij het veld op de gebeurtenis: voor bijwerken. ik dacht dat 'Cancel = True' genoeg zou zijn maar dat is het niet.


Code:
Private Sub Opiaatkaartnr_BeforeUpdate(Cancel As Integer)
Dim d As DAO.Database
Dim r As DAO.Recordset
Dim p As String

Set d = CurrentDb
Set r = d.OpenRecordset("opiaatkaarten")

p = Me.Opiaatkaartnr


Do Until r.EOF

If r("Opiaatkaartnr") = p Then
    MsgBox "Opiaatkaartnummer is al ingevoerd"
    DoCmd.Close
   ' Cancel = True
    DoCmd.OpenForm "opiaatkaart"
    DoCmd.GoToControl "Opiaatkaartnr"
    DoCmd.FindRecord "Opiaatkaartnr=" & p
    
    
End If
r.MoveNext

Loop
'rowsourse
End Sub
 
Dat je een tabel opent en met een lus vervolgens alle records afloopt tot je het Opiaatnummer vindt (of niet) vind ik al een beetje vreemd; je kunt uiteraard veel beter de recordset openen met een filter op het Opiaatnr. Dan heb je maar één record in de dynaset of 0, en dat loopt toch een stuk sneller. Maar dat helpt verder natuurlijk niet met het vinden van het record op het formulier. Dit misschien wel (niet getest verder; dat mag jij doen ;) )

Code:
Private Sub Opiaatkaartnr_BeforeUpdate(Cancel As Integer)
Dim rs As DAO.Recordset
Dim p As String, s as String

    p = Me.Opiaatkaartnr
    s = "SELECT DISTINCT [Opiaatkaartnr] FROM opiaatkaarten WHERE [Opiaatkaartnr]=" & p
    With CurrentDb.OpenRecordset(s)
        If .RecordCount = 1 Then
            MsgBox "Opiaatkaartnummer is al ingevoerd"
            DoCmd.Close acForm, Me.Form.Name
            DoCmd.OpenForm "opiaatkaart"
        End If
    End With

End Sub
 
Laatst bewerkt:
het werkte niet direct maar met een kleine aanpassing wel. bedankt.
Code:
Dim rs As DAO.Recordset
Dim p As String, s As String

    p = Me.Patientnr
    s = "SELECT DISTINCT [patientnr] FROM TblSondePatienten WHERE [patientnr]=" & p
    With CurrentDb.OpenRecordset(s)
        If .RecordCount = 1 Then
            MsgBox "Patient is al ingevoerd"
            DoCmd.Close acForm, Me.Form.Name
            DoCmd.OpenForm "FrmSondePatienten"
            Set rs = Forms!FrmSondePatienten.Recordset.Clone
[COLOR="#FF0000"]'            rs.FindFirst "[Patientnr] = '" & p & "'"
 'rs.FindFirst(Patientnr) = p[/COLOR]  [COLOR="#00FF00"]DoCmd.FindRecord p [/COLOR] 
'            [COLOR="#FF0000"]If Not rs.EOF Then Me.Bookmark = rs.Bookmark[/COLOR]        End If
    End With
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan