02. marts 2014 - 20:10Der er
9 kommentarer og 1 løsning
Find det eksisterende ID
Hej alle
Nedenstående kode bruges til at indsætte ny data. Den tjekker først om JobId + EmpId allerede eksisterer. Nu har jeg så valgt at hvis JobId+EmpId allerede eksisterer så kommer der en meddelsesboks frem.
Nu vil jeg så gerne at når man klikker "Ja" til QuestionToMessageBox = Me.ComboJob.Column(1) & " eksisterer allerede som en sekundær kompentence, vil du redigere i den nuværende? - så skal den åbne formen: DoCmd.OpenForm "frmEmployEdit2", , , "TrainingId = " & TrainingId
Men hvordan finder jeg det TrainingId som allerede eksisterer? Som koden er nu: DoCmd.OpenForm "frmEmployEdit2", , , "TrainingId = " & TrainingId Skriver den TrainingId="Det nye ID i tabellen" og så bliver min Edit-form jo bare tom.
Kan I hjælpe mig med løsningen?
Dim YesOrNoAnswerToMessageBox As String Dim QuestionToMessageBox As String Dim YesOrNoAnswerToMessageBox2 As String Dim QuestionToMessageBox2 As String Dim sWhere As String sWhere = "EmpId = " & Me.EmpId & " And JobId = " & Me.JobId If IsNull(Me.ComboAfd.Value) Then MsgBox "Du skal vælge en afdeling." Cancel = True ElseIf IsNull(Me.JobId.Value) Then MsgBox "Du skal vælge en opgave." Cancel = True ElseIf IsNull(Me.ComboTrained.Value) Then MsgBox "Du skal angive en træner." Cancel = True ElseIf IsNull(Me.DateB.Value) Then MsgBox "Du skal angive en startdato." Cancel = True Else
If DCount("*", "tblTraining", sWhere) > 0 Then QuestionToMessageBox = Me.ComboJob.Column(1) & " eksisterer allerede som en sekundær kompentence, vil du redigere i den nuværende? " YesOrNoAnswerToMessageBox = MsgBox(QuestionToMessageBox, vbYesNo, "Kompentence konflikt")
If YesOrNoAnswerToMessageBox = vbNo Then Cancel = True Me.Undo DoCmd.Close acForm, "frmTrainingAdd", acSaveNo Else DoCmd.OpenForm "frmEmployEdit2", , , "TrainingId = " & TrainingId Cancel = True Me.Undo DoCmd.Close acForm, "frmTrainingAdd", acSaveNo End If Else QuestionToMessageBox2 = "Sekundære forløb er oprettet. Ønsker du at oprette et nyt?" YesOrNoAnswerToMessageBox2 = MsgBox(QuestionToMessageBox2, vbYesNo, "Succes")
If YesOrNoAnswerToMessageBox2 = vbNo Then DoCmd.Close acForm, "frmTrainingAdd", acSaveYes Else DoCmd.Close acForm, "frmTrainingAdd", acSaveYes DoCmd.OpenForm "frmTrainingAdd" End If Forms!frmProfileData.Requery
Hvis posten i ovenstående eksisterer vil jeg gerne redigere denne og har derfor brug for det eksisterende ID. Og den første form er en "Opret ny"-form. Så jeg har derfor ikke det eksisterende ID. Men kun det "kommende" nye ID.
Og min kode finder den korrekte post. Men jeg er alvorlig bange for, ar der er noget galt i den grundlæggende konstruktion i din db. Hvis du vil finde en matchende post i frmEmployEdit2, bør de have samme id.
Ovenstående kode tjekker om der er dubletter for EmpId og Jobid i min oprettelsesform. EmpId må gerne være der mange gange og det samme med JobId. Bare ikke de to kombineret. Men da koden er i en "oprettelses"-form er der jo ikke noget eksisterende ID (Altså TrainingID). Jeg har en normal formliste der lister TrainingId, JobId, EmpId, DateE, DateB osv. - og kan sagtens lave en knap der vises ud for hver og henter ID. Men som sagt. Ovenstående kode er i en "Opret ny"-post-form og TrainingId vil derfor ikke være der.
TrainingId (Prinmær nøgle)
Vil gerne have det eksisternde TrainingId for: EmpId (Number) - Denne checker Dcount JobId (Number) - Denne checker Dcount
Som jeg så kan smide ned i: DoCmd.OpenForm "frmEmployEdit2", , , "TrainingId = " & TrainingId
En bruger går ind på sin profil. I dette vindue er der en "Opret nyt job" Når han klikker på "Opret nyt job" åbnes nyt vindue i add-mode.
Han vælger afdeling, job og angiver startdato. Så trykker han på "Opret"-knappen. Når han trykker på "Opret"-knappen sparker koden øverst oppe i gang. Den checker altså om denne person allerede har oprettet samme job. (EmployId+Job-han-opretter-ID). Istedet for en msxbox der så bare siger "Jobbet findes allerede for denne person" ville jeg gerne at hvis msgbox = ja, så finder den, det eksisterende job ud fra TrainingId
Data bliver gemt i tblTraining TrainingId (Primary - autonumber) EmpId JobId DateB DateE
Og så har jeg sat criteria i min query til =[EmpId] og =[JobId]
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.