Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: robsonlele am September 18, 2012, 10:41:48

Titel: Feld rundet, obwohl es das nicht soll
Beitrag von: robsonlele am September 18, 2012, 10:41:48
Hallo an alle,

ich habe das problem, dass ich sich ein Wert in einem Formular selbst rundet, obwohl er dass nicht soll.

Schreibe ich die Formel:

proz = ([E_Aufknöpfprobe] / (((([Baulänge] / 100) * 3) - strsick) * stranzp))*100
[Prozente] = proz

berechnet er mir einen Wert z.b. 125,00 als Standardzahl

ändere ich über Eigenschaften das Standardzahlfeld in ein Prozentfeld, werden daraus 12500,00%
soweit ist das für mich ja noch nachzuvollziehen.

Ändere ich aber jetzt die Formel und streiche hinten die *100
kommt er auf einmal auf 100,00% also völlig andere Werte. Das merkwürdige daran ist, wenn ich die Werte in der Formel ändere. Zum Beispiel E_Aufknöpfprobe, gibt er mir für Werte von 0 bis 49 pauschal 0% für 50 bis 119 100% für 120 bis 200 200% und so weiter. Ich hab keinen Plan was da falsch läuft.

Danke schonmal im Voraus für eure Hilfe,

Mfg Robby

Titel: Re: Feld rundet, obwohl es das nicht soll
Beitrag von: DF6GL am September 18, 2012, 11:30:07
Hallo,

welche Datentyypen haben die einzelnen Variablen/Felder?


Der "str"-Prefix der Varibalennamen läßt Ungutes vermuten....

Zeig mal den Deklarationsteil der Prozedur...
Titel: Re: Feld rundet, obwohl es das nicht soll
Beitrag von: robsonlele am September 18, 2012, 11:47:26
Hallo,

zunächst einmal danke für die schnelle Antwort.
Datentyp ist bei jedem Feld auf die die Formel zugreift Zahl.

Die Prozedur sieht folgendermaßen aus:

Private Sub prozenterrechnen()
Dim proz As Variant

If [gem BL rund].Value > 0 Then
Select Case [Bauhöhe]
    Case 280 To 320
        stranzp = 6
        If [Lagigkeit] Like 22 Or [Lagigkeit] Like 33 Then
        strsick = 0
        Else
        strsick = 2
        End If
    Case 380 To 420
        stranzp = 8
        If [Lagigkeit] Like 22 Or [Lagigkeit] Like 33 Then
        strsick = 0
        Else
        strsick = 2
        End If
    Case 480 To 520
        strsick = 2
        stranzp = 12
    Case 530 To 570
        strsick = 2
        stranzp = 14
    Case 580 To 620
        strsick = 2
        stranzp = 14
    Case 680 To 720
        strsick = 2
        stranzp = 18
    Case 880 To 920
        strsick = 2
        stranzp = 22
End Select

proz = ([E_Aufknöpfprobe] / (((([Baulänge] / 100) * 3) - strsick) * stranzp))
[Prozente] = (proz)
End If
End Sub

Mfg
Robby
Titel: Re: Feld rundet, obwohl es das nicht soll
Beitrag von: DF6GL am September 18, 2012, 14:28:26
Hallo,

der Code sieht stellenweise sehr "mysteriös" aus, was die Datentypen betrifft...

Voraussetzung: alle betroffenen Tabellenfelder haben Datentyp Zahl, Long,   außer  "Prozente" hat Zahl,Double
Private Sub prozenterrechnen()
Dim dblproz As Double, lnganzp as Long, lngsick  as Long

If Me![gem BL rund] > 0 Then
Select Case Me![Bauhöhe]
    Case 280 To 320
        lnganzp = 6
        If Me![Lagigkeit] = 22 Or Me![Lagigkeit] = 33 Then
        lngsick = 0
        Else
        lngsick = 2
        End If
    Case 380 To 420
        lnganzp = 8
        If Me![Lagigkeit] = 22 Or Me![Lagigkeit] = 33 Then
        lngsick = 0
        Else
        lngsick = 2
        End If
    Case 480 To 520
        lngsick = 2
        lnganzp = 12
    Case 530 To 570
        lngsick = 2
        lnganzp = 14
    Case 580 To 620
        lngsick = 2
        lnganzp = 14
    Case 680 To 720
        lngsick = 2
        lnganzp = 18
    Case 880 To 920
        lngsick = 2
        lnganzp = 22
End Select

dblproz = Me![E_Aufknöpfprobe] / ((((Me![Baulänge] / 100#) * 3#) - lngsick) * lnganzp)   'ob diese Formel mathematisch stimmt, kann ich nicht beurteilen.
Me![Prozente] = dblproz

End If
End Sub