Avatar billede plato Juniormester
02. marts 2014 - 20:10 Der 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

        End If
End If
Avatar billede mugs Novice
02. marts 2014 - 20:25 #1
du kan finde posten i form2, hvis post i felt1 matcher posten i form1.

DoCmd.OpenForm "Form2"
Forms!Form2!Felt1.SetFocus
DoCmd.FindRecord Me!Felt1
Avatar billede plato Juniormester
02. marts 2014 - 20:32 #2
Der tabte du mig? :)
Avatar billede plato Juniormester
02. marts 2014 - 20:34 #3
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.
Avatar billede mugs Novice
02. marts 2014 - 20:48 #4
Du har denne linie, og det må vl være den der skal finde den tilsvarende post i formen frmEmployEdit2.

DoCmd.OpenForm "frmEmployEdit2", , , "TrainingId = " & TrainingId

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.
Avatar billede plato Juniormester
02. marts 2014 - 20:58 #5
frmEmployEdit redigere data fra

tblTraining Men.........

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

DateE
DateB

Ved ikke om jeg får det forklaret rigtigt?
Avatar billede claes57 Ekspert
02. marts 2014 - 21:18 #6
du kunne lave en forespørgelse på EmpId, JobId med TrainingId med i data. Så har du let det, du søger.
Avatar billede plato Juniormester
02. marts 2014 - 21:20 #7
Alt den overstående kode er forøvrigt tilknyttet en click_Event - knap på oprettelsesformen.
Avatar billede plato Juniormester
02. marts 2014 - 21:20 #8
claes... Er det noget du kan specificere lidt mere. ;) Jeg er en vba-copy-paste-tilret-bruger. :D
Avatar billede plato Juniormester
02. marts 2014 - 21:36 #9
Prøver lige at forklare til "visuelt"

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
Avatar billede plato Juniormester
03. marts 2014 - 09:53 #10
Løst med:
DoCmd.OpenForm "frmEmployEdit2", , , "EmpId = " & EmpId & " AND JobId = " & JobId & ""

Og så har jeg sat criteria i min query til =[EmpId] og =[JobId]
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester