Berekening som en verschil meerdere velden

Status
Niet open voor verdere reacties.
Ik zie het probleem niet; als ik jouw (zowel de nieuwe als de oude) open, kan ik wél records toevoegen.
 
Bedankt OctaFish om er naar te kijken.
Bij jou lukt het wel, maar bij mij niet.
Als ik de database hier open kan er echter geen record toegevoegd worden.
Het sterretje om nieuw record toe te voegen zoals in de subform Bodyscan staat er niet.

Screen Shot 10-27-16 at 09.50 PM.jpg

Ik snap het echt niet.
Kan het soms iets te maken hebben met Verwijzingen?
Deze eens gecompileerd maar geen foutmelding gekregen.
Dit is wat bij mij staat aangevinkt:

Screen Shot 10-27-16 at 10.00 PM.jpg
 
Als compileren geen fout oplevert, ligt het daar niet aan. Is de versie die je gepost hebt wel dezelfde als die jij gebruikt?
 
OctaFish, ik heb in "Opvolging2" toegepast wat je me aangeraden had en deze nieuwe versie "Opvolging3" dan als bijlage hier gepost.

De functie en variabelen aangepast van Integer naar Double

SQL gekopieerd en geplakt in qCM:

SELECT tblCm.KlantID, tblCm.CmID, tblCm.Datum, tblCm.Uur, tblCm.Borst, tblCm.Taille, tblCm.Buikomtrek, tblCm.Heup, tblCm.ArmR, tblCm.ArmL, tblCm.DijR, tblCm.DijL, tblCm.KuitR, tblCm.KuitL, (Nz([Borst],0)+Nz([Taille],0)+Nz([Buikomtrek],0)+Nz([Heup],0)+Nz([ArmR],0)+Nz([ArmL],0)+Nz([DijR],0)+Nz([DijL],0)+Nz([KuitR],0)+Nz([KuitL],0)) AS Totaal, (SELECT TOP 1 ([Borst]+[Taille]+[Buikomtrek]+[Heup]+[ArmR]+[ArmL]+[DijR]+[DijL]+[KuitR]+[KuitL])
FROM tblCm AS Tdl WHERE (Tdl.Datum < tblCm.Datum AND Tdl.KlantID = tblCm.KlantID)
ORDER BY Tdl.Datum DESC) AS VorigTotaal, IIf([VorigTotaal] Is Null,0,[Totaal]-[VorigTotaal]) AS Verschil
FROM tblCm;


Eerst de tabellen leeggemaakt om opnieuw eens uit te testen met andere waarden.
Dit verliep allemaal perfect behalve dan dat ik geen nieuwe records in subfrmCM kan toevoegen.

Omdat ik dacht dat het mogelijk iets te maken had met het programma Access zelf, heb ik de database ook eens geopend op mijn laptop.
Helaas, zelfde probleem.
En omdat ik de versie Access 2013 heb, deze geïnstalleerd en hier ook de database geopend. Tevergeefs.

Daarom wil ik je vragen of het mogelijk is om jouw werkende versie eens door te sturen.
Als deze bij mij ook niet werkt, tja, dan zal er niks anders opzitten dan het verschil handmatig uit te rekenen en dit dan intikken.

Sorry dat ik je zolang ophoud ...
 
Je hoeft je niet te verontschuldigen hoor, dat ligt eerder bij ons omdat we je niet aan een antwoord kunnen helpen :). Ik zal er vanavond even naar kijken.
 
In je laatste voorbeeld db heb je het subformulier gebaseerd op de query oplossing, niet op de functie. Ik had al gezegd dat die laatste oplossing niet bruikbaar is als je records wilt toevoegen; dan moet je de functie variant gebruiken.
Die query ziet er dan zo uit, op basis van een aangepaste en verbeterde functie:

PHP:
SELECT tblCm.CmID, tblCm.KlantID, tblCm.Datum, tblCm.Uur, tblCm.Borst, tblCm.Taille, tblCm.Buikomtrek, tblCm.Heup, tblCm.ArmR, tblCm.ArmL, tblCm.DijL, tblCm.DijR, 
tblCm.KuitR, tblCm.KuitL, (Nz([Borst],0)+Nz([Taille],0)+Nz([Buikomtrek],0)+Nz([Heup],0)+Nz([ArmR],0)+Nz([ArmL],0)+Nz([DijR],0)+Nz([DijL],0)+Nz([KuitR],0)+Nz([KuitL],0)) AS Totaal, 
VorigeWaarde([KlantID],[Datum]) AS VorigTotaal, IIf([VorigTotaal] Is Null Or [VorigTotaal]=0,0,[Totaal]-[VorigTotaal]) AS Verschil
FROM tblCm ORDER BY tblCm.KlantID, tblCm.Datum;
En dit is de nieuwe functie:

Code:
Function VorigeWaarde(k_ID As Long, k_Datum As Date) As Double
Dim strSQL As String
Dim iW As Double
Dim rs As DAO.Recordset
On Error GoTo Hell

    strSQL = "SELECT Nz((SELECT TOP 1 (Nz([Borst],0)+Nz([Taille],0)+Nz([Buikomtrek],0)+Nz([Heup],0) +Nz([ArmR],0)" _
        & "+Nz([ArmL],0) +Nz([DijR],0)+Nz([DijL],0)+Nz([KuitR],0)+Nz([KuitL],0)) FROM tblCm AS Dupe  " _
        & "WHERE CDbl(Dupe.Datum) < " & CDbl(k_Datum) & " AND Dupe.KlantID = " & k_ID & " " _
        & "ORDER BY Dupe.Datum DESC),0) AS VorigTotaal FROM tblCm;"
    Set rs = CurrentDb.OpenRecordset(strSQL)
    With rs
        iW = rs.Fields(0).Value
        .Close
    End With
    VorigeWaarde = iW
    Exit Function

Hell:
    VorigeWaarde = 0
End Function
 
OctaFish je bent een engel! :thumb:
Alles werkt nu pico bello!
Blij dat het is opgelost :)

Ik ben je heel erg dankbaar
Astra
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan