Laatst toegevoegde record (DAO) selecteren

Status
Niet open voor verdere reacties.

patRRick900RR

Gebruiker
Lid geworden
24 jun 2013
Berichten
27
Hallo, ben ik weer...

Ik loop tegen het volgende aan. D.m.v. DAO maak ik een record aan in de tabel tbl_onderhoudscycli.
Een van de velden [ROLnummer] gebruik ik later in de code om onderhoudsregels aan te maken.
Als deze regels echter aangemaakt worden, blijft het ROLnummer gelijk. Ik heb dit getest en kwam erachter dat dit komt omdat de eerdere record van de tabel tbl_onderhoudscycli actief blijft. Ook het toevoegen van de code .bookmark = .lastmodified helpt niet, waarschijnlijk omdat ik hierna een requery doe van deze tabel.

Een tweede manier die ik heb geprobeerd was om door middel van een sql statement het ROLnummer te selecteren op basis van de inputbox en de locatienaam, dan krijg ik de foutmelding Error 13, type mismatch.

Ik doe klaarblijkelijk wat fout....maar wat? Wie heeft er suggesties? Alvast Dank!
Patrick

Code:
Private Sub Jaarplanning_DblClick(Cancel As Integer)

'Bepaal het aantal eenheden van de locatie.
Dim Eenheden As Integer
Eenheden = DSum("[Eenheden]", "[tbl_eenheden]", "[Locatienaam] = Forms![frm_locatiebeheer]![Locatienaam]")


'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
            With rst3
            .AddNew
            ![Locatienaam] = Forms![frm_Locatiebeheer]![Locatienaam]
            ![Onderhoudsjaar] = intOnderhoudsjaar
            .Update
            .Bookmark = .LastModified
            .Close
            End With
    
    Else
            MsgBox "Onderhoudsjaar reeds aanwezig voor deze locatie.", vbInformation, "Invoer Onderhoudsjaar."
    End If
    
Forms![frm_Locatiebeheer]![tbl_onderhoudscycli subform].Requery 'update het subform na het toevoegen van een onderhoudsjaar
     
'Selecteer juiste ROLnummer
Dim intROLnummer As Integer
intROLnummer = "SELECT ROLnummer.tbl_onderhoudscycli FROM tbl_onderhoudscycli WHERE [Locatienaam] ='" & Me.Locatienaam & "' And [Onderhoudsjaar] = " & intOnderhoudsjaar & ""
MsgBox (intROLnummer)


'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.", vbInformation, "Controleer Onderhoudsregels."
    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
        
                     
End If
          
DoCmd.Requery (qry_onderhoudsdetails)
rst.Close


End Sub
 
Laatst bewerkt:
Patrrick900RR,

Het valt me op dat je na de SQL kijkt of een record aanwezig is, is dat niet het geval voeg je een record toe met AddNew.
Je update hem en stelt de bookmark in waarna je de recordset sluit en dus weggooit!!
Je hebt dus niets vastgelegd in de tabel onderhoudscycli, waarom doe je de addnew niet op deze tabel?

In het tweede deel met rst2 open je een recordset "qry_onderhoudsregels" is dit een tabel of een query zoals uit de naam blijkt?
In een query kun je geen records toevoegen, hiervoor moet je in een tabel zijn.

Waarom gebruik je niet ![Rolnummer] = intROLnummer als je deze nodig hebt?

Veel Succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan