Supportnet / Forum / Datenbanken
Feld automatisch ausfüllen lassen
Frage
Hallo Ihrdadraussen!
kann ich (wie?!?) Accesxp dazu bringen, mir ein Feld automatisch als die Summe aus vorangegangenen Feldern auszufüllen? Es handelt sich um DM-Beträge, dieses Feld soll einfach nur die Gesamtsumme der Einträge in den Vorangehenden Feldern ausrechnen und eintragen.
DANKE!!
Antwort 1 von PotzBlitz
Hallo Wilma,
das ist schon machbar. Wenn du das Feld in einem Formular brauchst, dann füge ein neues, ungebundenes Feld hinzu und lege die Steuerelementinhalt-Eigenschaft wie folgt fest:
Die Bedingung wird benötigt, um nur die Datensätze zu berücksichtigen, die vor dem aktuellen Datensatz liegen. Dafür eignet sich z.B. ein Datumsfeld o.ä. Um das Feld als Währung anzeigen zu lassen, musst du nur die Format-Eigenschaft des Feldes auf "Währung" stellen. Bei diesem Beispiel schleicht sich aber ein kleines Anzeigeproblem ein. Wenn das Feld <Bedingungsfeld> leer ist wie bei einem neuen Datensatz, dann wird in dem Textfeld "#Fehler" angezeigt. Um das zu unterdrücken, kann vor der Summenbildung erstmal geprüft werden, ob dieses Feld überhaupt gefüllt ist:
<Ausgabefeld> = Das Feld, über das die Summe gebildet werden soll.
<Tabellenname> = Die gleiche Tabelle, die auch dem Formular zugrunde liegt.
<Bedingung> = Feld in der Tabelle, anhand dessen vorhergehende Datensätze erkannt werden können.
<Bedingungsfeld> = Feld im Formular, das an <Bedingung> gebunden ist.
Gruss
PotzBlitz
das ist schon machbar. Wenn du das Feld in einem Formular brauchst, dann füge ein neues, ungebundenes Feld hinzu und lege die Steuerelementinhalt-Eigenschaft wie folgt fest:
= DomSumme("<Ausgabefeld>";"<Tabellenname>";"<Bedingung> <=" & [<Bedingungsfeld>]) Die Bedingung wird benötigt, um nur die Datensätze zu berücksichtigen, die vor dem aktuellen Datensatz liegen. Dafür eignet sich z.B. ein Datumsfeld o.ä. Um das Feld als Währung anzeigen zu lassen, musst du nur die Format-Eigenschaft des Feldes auf "Währung" stellen. Bei diesem Beispiel schleicht sich aber ein kleines Anzeigeproblem ein. Wenn das Feld <Bedingungsfeld> leer ist wie bei einem neuen Datensatz, dann wird in dem Textfeld "#Fehler" angezeigt. Um das zu unterdrücken, kann vor der Summenbildung erstmal geprüft werden, ob dieses Feld überhaupt gefüllt ist:
= Wenn(Nicht IstNull([<Bedingungsfeld>]);DomSumme("<Ausgabefeld>";"<Tabellenname>";"<Bedingung> <=" & [<Bedingungsfeld>];"") <Ausgabefeld> = Das Feld, über das die Summe gebildet werden soll.
<Tabellenname> = Die gleiche Tabelle, die auch dem Formular zugrunde liegt.
<Bedingung> = Feld in der Tabelle, anhand dessen vorhergehende Datensätze erkannt werden können.
<Bedingungsfeld> = Feld im Formular, das an <Bedingung> gebunden ist.
Gruss
PotzBlitz
Antwort 2 von Wilma
Hallo PotzBlitz,
Danke erstmal, werde das in den nächsten Tagen mal ausprobieren, obwohl ich´s noch nicht richtig "geschnallt" habe. Bin auf dem Gebiet absoluter Neueinsteiger...
Beim Lesen habe ich allerdings das Gefühl, daß Du das was ich vorhabe viel komplizierter ansiehst, als es gemeint war. Ich beabsichtige nur die Summe der Beträge in (mehreren)vorher ausgefüllten (oder zum Teil auch frei gelassenen)Feldern des GLEICHEN Datensatzes automatisch ausrechnen zu lassen. Die Tabelle (bzw das Formular) dient dazu, Rechnungen zu erfassen. Pro Datensatz eine Rechnung, und hier einzelne Positionen mit eben automatischer Summenbildung des Endbetrages (Was wiederum zur Kontrolle dienen soll, ob die eingegebenen Einzelpositionen richtig eingetippt wurden, sprich der berechnete Endbetrag der gleiche ist, wie er auf der rechnung steht..)
Grüße!
Wilma
Danke erstmal, werde das in den nächsten Tagen mal ausprobieren, obwohl ich´s noch nicht richtig "geschnallt" habe. Bin auf dem Gebiet absoluter Neueinsteiger...
Beim Lesen habe ich allerdings das Gefühl, daß Du das was ich vorhabe viel komplizierter ansiehst, als es gemeint war. Ich beabsichtige nur die Summe der Beträge in (mehreren)vorher ausgefüllten (oder zum Teil auch frei gelassenen)Feldern des GLEICHEN Datensatzes automatisch ausrechnen zu lassen. Die Tabelle (bzw das Formular) dient dazu, Rechnungen zu erfassen. Pro Datensatz eine Rechnung, und hier einzelne Positionen mit eben automatischer Summenbildung des Endbetrages (Was wiederum zur Kontrolle dienen soll, ob die eingegebenen Einzelpositionen richtig eingetippt wurden, sprich der berechnete Endbetrag der gleiche ist, wie er auf der rechnung steht..)
Grüße!
Wilma
Antwort 3 von Teddy7
Hallo Wilma !
Da bietet es sich an, die Summe vom ersten zu summierenden Feld an anzuzeigen.
Dazu müßtest Du bei jedem zu summierenden Feld beim lostfocus-Ereignis hinterlegen:
ErgebnisFeld = FeldA + FeldB + FeldC
ErgebnisFeld.requery
Durch die zweite Anweisung wird das ErgebnisFeld mit neuem Wert angezeigt.
Wenn Du das nicht willst reicht es auch nur bei einem (dem letzten) Feld diese Befehle zu hinterlegen.
Gruß
Teddy
Da bietet es sich an, die Summe vom ersten zu summierenden Feld an anzuzeigen.
Dazu müßtest Du bei jedem zu summierenden Feld beim lostfocus-Ereignis hinterlegen:
ErgebnisFeld = FeldA + FeldB + FeldC
ErgebnisFeld.requery
Durch die zweite Anweisung wird das ErgebnisFeld mit neuem Wert angezeigt.
Wenn Du das nicht willst reicht es auch nur bei einem (dem letzten) Feld diese Befehle zu hinterlegen.
Gruß
Teddy
Antwort 4 von PotzBlitz
Hallo Wilma,
wenn das so ist, dann habe ich dich wirklich falsch verstanden. Mein Vorschlag berücksichtigt alle vorhergehenden Datensätze und ist somit bei deinem Vorhaben ungeeignet. Nun ja, isch hatt halt gemeint, gell? :-)
Gruss
PotzBlitz
wenn das so ist, dann habe ich dich wirklich falsch verstanden. Mein Vorschlag berücksichtigt alle vorhergehenden Datensätze und ist somit bei deinem Vorhaben ungeeignet. Nun ja, isch hatt halt gemeint, gell? :-)
Gruss
PotzBlitz
Antwort 5 von Knubbel
Hallo Wilma,
ich habe DEine Nachrivht erst heute gelesen, aber ich denke ich habe eine brauchbare Lösung:
Zunächst unterstelleich, dass die Eingabefelder [Eingabe1], [Eingebe2]...[EingabeN] und das Ergebnisfeld [Summe] in Deiner Datenbank vorhanden sind.
Nun brauchst Du nur noch das Makro "SetzenWert" kreieren. Dieses ist relativ einfach:
Feld: [Formulare]![Name des Formulars]![Summe]
Ausdruck: [Eingabe1]+ [Eingabe2] + .... + [EingabeN]
Hierdurch wird bei jeder Eingabe im Summenfeld das gewünschte Ergebnis dargestellt. Voraussetzung ist jedoch, dass beim Anlegen der Tabelle bei der Option der Eingabefelder für "Standardwert" der Wert "0" vorgegeben wird. Hierdurch ist das Feld nicht leer, und die Addition kann durchgeführt werden.
Nun brauchst Du nur noch bei den Eingabefeldern in der Funktion "Beim Verlassen" diese Makro eintragen.
Versuch es einmal! :-)
Gruss Knubbel
ich habe DEine Nachrivht erst heute gelesen, aber ich denke ich habe eine brauchbare Lösung:
Zunächst unterstelleich, dass die Eingabefelder [Eingabe1], [Eingebe2]...[EingabeN] und das Ergebnisfeld [Summe] in Deiner Datenbank vorhanden sind.
Nun brauchst Du nur noch das Makro "SetzenWert" kreieren. Dieses ist relativ einfach:
Feld: [Formulare]![Name des Formulars]![Summe]
Ausdruck: [Eingabe1]+ [Eingabe2] + .... + [EingabeN]
Hierdurch wird bei jeder Eingabe im Summenfeld das gewünschte Ergebnis dargestellt. Voraussetzung ist jedoch, dass beim Anlegen der Tabelle bei der Option der Eingabefelder für "Standardwert" der Wert "0" vorgegeben wird. Hierdurch ist das Feld nicht leer, und die Addition kann durchgeführt werden.
Nun brauchst Du nur noch bei den Eingabefeldern in der Funktion "Beim Verlassen" diese Makro eintragen.
Versuch es einmal! :-)
Gruss Knubbel
Antwort 6 von Wilma
Hi Knubbel,
ES FUNKTIONIERT!!!
ich hab´zwar eigentlich keine Ahnung wieso, aber es GEHT! :-))
Vielen Dank, bis zum nächsten Problem (und das läßt sicher nicht lange auf sich warten...) :-))
ES FUNKTIONIERT!!!
ich hab´zwar eigentlich keine Ahnung wieso, aber es GEHT! :-))
Vielen Dank, bis zum nächsten Problem (und das läßt sicher nicht lange auf sich warten...) :-))
Antwort 7 von Knubbel
Hallo Wilma!
ich bin auch kein Profi, aber es freut mich, wenn über diesen Servic Hilfe möglich wird.
Heute hatte ich ein gleiches Erfolgserlebnis.
Daher DANKE an alle, die sich hier aktiv beteiligen.
mfg Knubbel
ich bin auch kein Profi, aber es freut mich, wenn über diesen Servic Hilfe möglich wird.
Heute hatte ich ein gleiches Erfolgserlebnis.
Daher DANKE an alle, die sich hier aktiv beteiligen.
mfg Knubbel

