patRRick900RR
Gebruiker
- Lid geworden
- 24 jun 2013
- Berichten
- 27
Hallo, ik heb toch weer even hulp nodig bij de laatste loodjes van mijn db.
Ik heb een formulier [frm_locatiebeheer] met daarop een subform [tbl_onderhoudscycli subform]. Het subform is gebaseerd op [tbl_onderhoudscycli].
Van het formulier gebruik ik de velden [Locatienaam] en [Onderhoudsjaar].
De bedoeling is dat op het moment dat ik via een inputbox een jaartal ingeef, de code eerst controleert of dat onderhoudsjaar aanwezig is voor de betreffende onderhoudslocatie. Zo niet dan wordt deze aangemaakt.
In de tabel [tbl_onderhoudscycli] wordt deze aangemaakt en met een autonummer wordt tevens het veld [ROLnummer] aangemaakt. Het ROL nummer is de unieke code voor een locatie en onderhoudsjaar. Eerst was dit een gecombineerde sleutel, echter om referentiële integriteit af te dwingen heb ik ROLnummer ingevoerd.
Als het onderhoudsjaar is aangemaakt in het subform [tbl_onderhoudscycli subform], worden de onderhoudsregels geschreven naar de [qry_onderhoudsregels].
In de query wordt het veld [Onderhoudsjaar] gelijksgesteld aan de waarde van de inputbox, het veld [Locatienaam] = komt van het hoofdformulier. Tot zover werkt het.
Het veld [ROLnummer] moet komen van het subformulier [tbl_onderhoudscycli subform], echter dat krijg ik niet voor elkaar. Ook als ik test d.m.v. een messagebox krijg ik foutmeldingen. Varierent van oneigenlijk gebruik van NULL, microsoft can't find the referenced form.....
Hieronder staat mijn code. Wie oh wie heeft er suggesties?
Alvast hartelijk dank! Patrick
Ik heb een formulier [frm_locatiebeheer] met daarop een subform [tbl_onderhoudscycli subform]. Het subform is gebaseerd op [tbl_onderhoudscycli].
Van het formulier gebruik ik de velden [Locatienaam] en [Onderhoudsjaar].
De bedoeling is dat op het moment dat ik via een inputbox een jaartal ingeef, de code eerst controleert of dat onderhoudsjaar aanwezig is voor de betreffende onderhoudslocatie. Zo niet dan wordt deze aangemaakt.
In de tabel [tbl_onderhoudscycli] wordt deze aangemaakt en met een autonummer wordt tevens het veld [ROLnummer] aangemaakt. Het ROL nummer is de unieke code voor een locatie en onderhoudsjaar. Eerst was dit een gecombineerde sleutel, echter om referentiële integriteit af te dwingen heb ik ROLnummer ingevoerd.
Als het onderhoudsjaar is aangemaakt in het subform [tbl_onderhoudscycli subform], worden de onderhoudsregels geschreven naar de [qry_onderhoudsregels].
In de query wordt het veld [Onderhoudsjaar] gelijksgesteld aan de waarde van de inputbox, het veld [Locatienaam] = komt van het hoofdformulier. Tot zover werkt het.
Het veld [ROLnummer] moet komen van het subformulier [tbl_onderhoudscycli subform], echter dat krijg ik niet voor elkaar. Ook als ik test d.m.v. een messagebox krijg ik foutmeldingen. Varierent van oneigenlijk gebruik van NULL, microsoft can't find the referenced form.....
Hieronder staat mijn code. Wie oh wie heeft er suggesties?
Code:
'Maakt onderhoudsjaar aan in locatiedetails, na gecontroleerd te hebben of dit jaar reeds bestaat.
Dim iPFX As DAO.Database
Set iPFX = CurrentDb
Dim strSQL As String
Dim strSQL2 As String
Dim intOnderhoudsjaar As Long
Dim rst As DAO.Recordset, rst2 As DAO.Recordset, rst3 As DAO.Recordset
intOnderhoudsjaar = InputBox("Van welk jaar wilt u het onderhoud invoeren?")
strSQL2 = "SELECT * FROM tbl_onderhoudscycli WHERE [Locatienaam] ='" & Me.Locatienaam & "' And [Onderhoudsjaar] = " & intOnderhoudsjaar & ""
Set rst3 = iPFX.OpenRecordset(strSQL2)
If rst3.RecordCount = 0 Then
MsgBox ("invullen rst3")
With rst3
.AddNew
![Locatienaam] = Forms![frm_Locatiebeheer]![Locatienaam]
![Onderhoudsjaar] = intOnderhoudsjaar
.Update
.Close
End With
Else
MsgBox "Onderhoudsjaar reeds aanwezig voor deze locatie.", vbInformation, "Invoer Onderhoudsjaar."
End If
'Schrijft onderhoudsregels voor betreffende onderhoudsjaar & locatie
strSQL = "SELECT * FROM qry_onderhoudsregels WHERE [Locatienaam] ='" & Me.Locatienaam & "' And [Onderhoudsjaar] = " & intOnderhoudsjaar & ""
Set rst = iPFX.OpenRecordset(strSQL, dbOpenDynaset)
If rst.RecordCount > 0 Then
MsgBox "Er zijn al onderhoudsregels aanwezig voor deze locatie en dit jaar."
Else
Set rst2 = iPFX.OpenRecordset("qry_onderhoudsregels")
With rst2
.AddNew
![Onderhoudsjaar] = intOnderhoudsjaar
![Locatienaam] = Forms![frm_Locatiebeheer]![Locatienaam]
![ROLnummer] = Forms![frm_Locatiebeheer]![tbl_onderhoudscycli subform].Form![ROLnummer]
![Regelnummer] = "10"
![Aantal] = Eenheden
Select Case Eenheden
Case 0 To 5
![Artikelnummers] = 10 'Staffel 0 - 5
Case 5 To 10
![Artikelnummers] = 20 'Staffel 6 - 10
Case Is > 10
![Artikelnummers] = 30 'Staffel 10 - 20
End Select
.Update
.Close
End With
MsgBox ("aan het eind van rst2 aangekomen")
End If
DoCmd.Requery (qry_onderhoudsdetails)
rst.Close
End Sub
Alvast hartelijk dank! Patrick