PDA

Vollständige Version anzeigen : Left, Right, InStr etc.


Goki
22.09.2001, 22:06
Hallo alle,

aus Text-Strings ziehe ich mir mit left, right, InStr die Zeichen, die ich benötige.

So aber ich hab jetzt folgendes Problem und hab schon einige Sachen ausprobiert:

Ich hab ein Feld, welche die Summe der Stunden ausgibt (als Dezimale) - beispielsweise 25,715.

Mit einer Funktion will ich aus dem Feld GesamtStunden immer links vom Komma alle Zahlen ausziehen lassen und im Formular in ein separates Feld setzten lassen. Mit den Minuten (nach dem Komma) soll das gleiche geschehen, die werden jedoch vor dem einsetzen in das Formular mit 60 multipliziert und auf die nächste volle Zahl ab- oder aufgerundet.

Mit Left([GesamtStunden], 2) hab ich es probiert. Was blöd ist, wenn nur 1,5 Stunden summiert sind oder 280,3 Stunden. Da fehlt dann immer Teil oder es ist zuviel übergeben.

Weiß jemand weiter!?


------------------
cu
Goki

Ikke
22.09.2001, 22:39
Hallo Goki,
du mußt erst mit InStr die Position des Kommas ermitteln!
Die Zeile müßte dann wie folgt aussehen:
Left([GesamtStunden],Instr(1,[GesamtStunden],"."))
Ich bin mir allerdings nicht ganz sicher, daß Du nach einem "." suchen mußt. Es kann auch sein, daß Access das Komma als Komma sieht. Da mußt Du halt mal ein bischen rumprobieren.

MarkusW
22.09.2001, 23:01
Hallo Goki,

kannst Du nicht mit der Funktion Int() die Zahl ohne Kommastellen ermitteln?
(Und später diese Zahl von der Gesamtzahl abziehen, um an die Nachkommastellen zu kommen.)

Einen Code kann ich leider nicht nennen, da ich äh, wie soll ich sagen, davon keine Ahnung habe.

Gruß
Markus

Goki
22.09.2001, 23:29
@Ikke
Also ersteinmal ganz arg lieben HERZLICHEN DANK!!!

Also den Punkt mußte ich durch ein Komma ersetzen. Da hab ich rumgespielt und was ich noch machen mußte war etwas umzubauen. Beim rumspielen, bin ich auf die endgültige Codierung gekommen, mit der es super klappt.

@MarkusW
Dir auch Danke Markus für deinen Vorschlag. Aber ich hab schon eine Lösung erarbeitet. Mir hätte es nicht viel gebracht den ganzen String auszulesen.

Nachfolgend den endgültigen Code ...

:-)) :-))

Private Sub Form_Current()
On Error GoTo runderr

Dim GeSumStun As Single, voll As Byte, rest As Single, rest1 As Variant

GeSumStun = DSum("SumStunRE", "Zeiten", "[ReID]=" & Forms![Re_anfang]![ReID])

voll = Left([GeSumStun], (InStr(1, [GeSumStun], ",") - 1))
rest = MID([GeSumStun], (InStr(1, [GeSumStun], ",") + 1), 2)
rest1 = rest * 60


GeSumStunForm = voll & ":" & Left([rest1], 2)
GeDMSum = DSum("GesamtDEM", "Stundenberechnung", "[ReID]=" & Forms![Re_anfang]![ReID])
GeEURSum = DSum("GesamtEUR", "Stundenberechnung", "[ReID]=" & Forms![Re_anfang]![ReID])
Exit Sub

runderr:
voll = GeSumStun
rest1 = "00"

GeSumStunForm = voll & ":" & Left([rest1], 2)
GeDMSum = DSum("GesamtDEM", "Stundenberechnung", "[ReID]=" & Forms![Re_anfang]![ReID])
GeEURSum = DSum("GesamtEUR", "Stundenberechnung", "[ReID]=" & Forms![Re_anfang]![ReID])

End Sub

Sicher, der ein oder andere schlägt sich sicher die Händer über dem Kopf zusammen, aber ich bin nicht perfekt ;-)

In diesem Formular wird eine Rechnung für einen Kunden angezeigt. Dabei werden die einzelnen Zeit-Datensätze nach leistungsarten ausgelesen und anhand des Stundensatzes wird dann der DM-Betrag errechnet, aus diesem dann der EUR-Betrag konvertiert. Und den Code hab ich gebraucht um in einer Fusszeile die Gesamtsummen von Stunden und der Geld-Beträge auszuweisen.

Jetzt muss ich "nur" noch das Ding auch als Bericht zum laufen bekommen, um dann die Rechnungen auch wirklich ausdrucken zu können :-))

Danke nochmals euch beiden.


------------------
cu
Goki