Avatar billede jensen363 Forsker
15. februar 2006 - 12:37 Der er 7 kommentarer og
1 løsning

Lineær nedskrivning af saldo

I ene periodetabel, angives ved periodens start en startsaldo, eksempelvis 26.000 kr.

Tabellens perioder ( uger ) er angivet 01,03,05 ... 51

De 26.000 skal nedskrives lineært, dvs.

01  26.000
03  25.000
03  24.000
...
51  1.000

men hvordan gøres dette smartest ???
Avatar billede fdata Forsker
15. februar 2006 - 15:38 #1
Sub Nedskrivning()
  Dim B As Single
  Dim P As Integer
  Dim N As Single
 
  Debug.Print "---------"
  B = 26000
  N = B
  For P = 1 To 26
    Debug.Print Format((P * 2 - 1), "00"), N
    DoCmd.RunSQL "INSERT INTO MinTabel (Periode, Beløb) SELECT " & Format((P * 2 - 1), "00"), N
    N = B - (B / 26 * P)
  Next P
End Sub
Avatar billede jensen363 Forsker
15. februar 2006 - 15:56 #2
Det virker ikke :o(

Number of query values and destination fields are not the same
Avatar billede fdata Forsker
15. februar 2006 - 16:11 #3
My mistake. Her er den korrekte:

Sub Nedskrivning()
  Dim B As Single
  Dim P As Integer
  Dim N As Single
 
  Debug.Print "---------"
  B = 26000
  N = B
  DoCmd.SetWarnings False
  For P = 1 To 26
    Debug.Print Format((P * 2 - 1), "00"), N
    DoCmd.RunSQL "INSERT INTO PeriodeTabel (Periode, Beløb) SELECT '" & Format((P * 2 - 1), "00") & "', " & N
    N = B - (B / 26 * P)
  Next P
  DoCmd.SetWarnings True
End Sub
Avatar billede jensen363 Forsker
15. februar 2006 - 17:46 #4
Øhhhh er det kun 26.000 kr. den virker med ... dette fejler også ?

Function Nedskrivning()
Dim Message, Title, Default, MyValue

  Dim B As Single
  Dim P As Integer
  Dim N As Single
 
  Message = "Indtast primosaldo for budgetkunden"    ' Set prompt.
  Title = "Generer budgetkunde"    ' Set title.
  Default = "100.000"    ' Set default.

  MyValue = InputBox(Message, Title, Default)
 
 
  Debug.Print "---------"
  B = MyValue
  N = B
  DoCmd.SetWarnings False
  For P = 1 To 26
    Debug.Print Format((P * 2 - 1), "00"), N
    DoCmd.RunSQL "INSERT INTO tmpTabel (Periode, Beløb) SELECT '" & Format((P * 2 - 1), "00") & "', " & N
    N = B - (B / 26 * P)
  Next P
  DoCmd.SetWarnings True

End Function
Avatar billede jensen363 Forsker
15. februar 2006 - 17:54 #5
Den accepterer alle værdier som er delelige med 26 !!!!
Avatar billede fdata Forsker
15. februar 2006 - 18:13 #6
Det er jo det sædvanige format-fnidder. Her er en testet version (nu har jeg startet Access):

Function Nedskrivning()
  Dim Message, Title, Default, MyValue

  Dim B As Single
  Dim P As Integer
  Dim n As Single
 
  Message = "Indtast primosaldo for budgetkunden"    ' Set prompt.
  Title = "Generer budgetkunde"    ' Set title.
  Default = "100.000"    ' Set default.

  MyValue = InputBox(Message, Title, Default)
 
 
  Debug.Print "---------"
  B = MyValue
  n = B
  DoCmd.SetWarnings False
  For P = 1 To 26
    Debug.Print Format((P * 2 - 1), "00"), n
    DoCmd.RunSQL "INSERT INTO tmpTabel (Periode, Beløb) SELECT '" & Format((P * 2 - 1), "00") & "', " & Replace(Str(Format(n, "Standard")), ",", ".")
    n = B - (B / 26 * P)
  Next P
  DoCmd.SetWarnings True

End Function
Avatar billede jensen363 Forsker
15. februar 2006 - 18:46 #7
Det virker ... tak for indsatsen
Avatar billede fdata Forsker
15. februar 2006 - 19:54 #8
Velbekomme. Tak for point  ;o)
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