25. februar 2014 - 11:36Der er
20 kommentarer og 1 løsning
Vba, DCount 2 værdier problem
Hej Alle
Jeg vil gerne "BeforeUpdate - i form, undersøge om 2 betingelser allerede findes i tabellen EmpId JobId
Jeg ved ikke helt hvad Me. gør. Men det er en oprettelsesform hvor jeg havde forstillet mig at Me.EmpId og Me.JobId var = de værdier jeg vælger i en dropdownboks.
Jeg har prøver med følgende kode: If DCount("*", "tblProces", "EmpId=" & Me.EmpId And "JobId=" & Me.JobId) > 0 Then
Men denne giver fejl.
Hele koden: Private Sub Form_BeforeUpdate(Cancel As Integer) If DCount("*", "tblProces", "EmpId=" & Me.EmpId And "JobId=" & Me.JobId) > 0 Then MsgBox "Du er allerede oprettet i dette træningsforløb.", vbInformation, "Ingen Data" Cancel = True End If End Sub
Jeg har nu fået følgende kode til at virke: Private Sub Opret_forløb_Click() If DCount("*", "tblProces", "EmpId=" & Me.EmpId.Value) > 0 Then Cancel = True MsgBox "Du er allerede oprettet i dette træningsforløb!" Me.Undo DoCmd.Close Else DoCmd.RunMacro "OpretJobTræning" End If End Sub
Nu mangler jeg bare nr. 2 check. Altså at den også checker JobId=JobId Men jeg kan ikke hitte ud af at sætte det ind.
Håber snart der er en eller anden der har guldkornet. :)
Det er KUN hvis BEGGE Dcount er >0 at den IKKE må oprette. Som koden er nu oprettet den ikke hvis man én af dem er True.
Private Sub Opret_Click() If DCount("*", "tblProces", "EmpId=" & EmpId) > 0 And DCount("*", "tblProces", "JobId=" & JobId) > 0 Then Cancel = True Me.Undo MsgBox "Duplicate data" DoCmd.Close Else DoCmd.RunMacro "OpretJobTræning" End If End Sub
Hej Terry - Jeg gik på pension for 3½ år siden. Der er nu ikke fordi det passede mig, men som ansat i forsvaret, er vi tvunget på pension som 60-årig. Jeg beskæftiger mig heller ikke ret meget med Access mere, så min viden er blevet noget rustent med tiden, men jeg hænger dog stadig fast her på siden, for i det mindste at vedligeholde min viden lidt endnu
Jeg er ikke på efterløn, det fravalgte jeg for en del år siden. Dengang måtter man kun arbejde 200 timer om året for ikke at blive trukket i efterlønnen. Siden blev reglerne lempet, og det var meningen, at jeg ville fortsætte med et deltidsjob som vægter i G4S. Men der er ingen ledige stillinger.
Men jeg får fuld tjenestemandspension + en pæn opsparing i værdipapirer i banken, så jeg har intet har intet klage over.
I cant say what the problem was, but with this code it works: Dim sWhere As String sWhere = "EmpId = " & Me.EmpId & " And JobId = " & Me.JobId If DCount("*", "tblProces", sWhere) > 0 Then Cancel = True Me.Undo MsgBox "Du har allerede oprettet et træningsforløb for den specifikke opgave." DoCmd.Close Else DoCmd.RunMacro "OpretJobTræning" End If
Whats important is that its working, and thanks for the points
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.