none
Abfrage-Ergebnis in einem Textfeld eines Formulars übergeben

    Frage

  • Hallo,
    Ich möchte eine Berechnung innerhalb einer Tabelle durchführen. Dazu habe ich eine Abfrage erstellt, die folgendermaßen aussieht:

    Ergebnis: [Computer]![Anschaffungswert]-([Computer]![Anschaffungswert]/(Datum()-[Computer]![Anschaffungsdatum]+1)*100)

    Das gewünschte Ergebnis taucht auch entsprechend in der Abfrage auf.

    Nun möchte ich dieses Ergebnis in ein ungebundenes Textfeld eines Formulares einsetzen lassen.
    Dazu frage ich in der Abfrage noch das ein Feld des Formulars ab, damit auch der richtige Wert erscheint:

    [Formulare]![Computer]![Computer-ID].[Text]

    Aber wenn ich dann im Steuerelementinhalt folgendes eintrage:
    =[Computer_RWE]![Ergebnis]
    bekomme ich nur #Name? angezeigt und mehr nicht.

    Bei =DomWert("[Ergebnis]";"[Abfragen]![Computer_RWE]")
    verursacher ich offenbar eine Dauerschleife mit dem Ergebnis #Fehler im entpsrechenden Textfeld.

    Wenn ich die Berechnung innerhalb des Feldes durchführen will, steht dort nur #Typ?

    Was kann ich machen, damit der Wert, der mir durch die Abfrage im Feld "Ergebnis" angezeigt wird, auch im Restwert Feld des Formulars angezeigt wird? Möglichst auch so, dass er für jeden Datensatz neu berechnet wird...

    [EDIT]
    So.. da ich mittleriweile schon 3 Tage nach der Lösung gesucht habe, habe ich natürlich prompt eine halbe Stunde nach dem Post einen anderen Weg gefunden, die Berechnung in das Formular zu bekommen:

    Und zwar folgendermaßen:
    Ich habe zwei neue Zeilen in der Tabelle hinzugefügt.

    1. Heute; Datum/Uhrzeit mit dem Standardwert "Date()" (Das aber nur, weil die Berechnungsoptionen kein "Date()" kennen. Sonst wäre dieses Feld überflüssig gewesen...)
    2. Ergebnis; Berechnung mit dem Ausdruck: [Anschaffungswert]-([Anschaffungswert]/([Heute]-[Anschaffungsdatum]+1)*100)

    Dann einmal das Datum des schon bestehenden Eintrags aktualisiert und PENG!, schon hab ich den Restwert in dem Feld "Ergebnis" stehen, welches ich dann einfach ins Formular aufnehmen kann.

    Warum Access es einem so schwer macht weiß ich zwar nicht, aber ok. So geht es wenigstens auch.

    [/EDIT]

    • Bearbeitet P.Hackert Dienstag, 13. Oktober 2015 08:19
    Dienstag, 13. Oktober 2015 07:34

Alle Antworten

  • Hallo!

    >  =[Computer_RWE]![Ergebnis]

    Ein Auslesen der Werte aus Tabellen oder Abfragen ist nur mit Recordsets oder DLookup & Co. möglich.

    >  =DomWert("[Ergebnis]";"[Abfragen]![Computer_RWE]") 

    Richtig: =DomWert("[Ergebnis]";"[Computer_RWE]")
    (Die [] könntest du weg lassen.)

    Bezüglich:

    Dazu frage ich in der Abfrage noch das ein Feld des Formulars ab, damit auch der richtige Wert erscheint:
    [Formulare]![Computer]![Computer-ID].[Text]

    Funktioniert diese Abfrage? Ich hätte nicht erwartet, dass das mit .[Text] läuft.

    Warum berechnest du den Wert über eine Abfrage?
    Wenn du im Formular "Computer" das ungebundene Steuerelement nutzt, wirst du doch alle zur Berechnung erforderlichen Daten zur Verfügung haben.

    Ansonsten:
    Wenn du die Berechnung nciht im Formlar durchführen kannst, würde ich an deiner Stelle die Abfrage ohne Filter auf [Computer-ID] als Datenquelle für ein Formular verwenden und dieses Formular als Unterformular einbinden. Wenn du das Unterformular über [Computer-ID] mit dem Hauptformular verknüpfst, erledigt Access die passende Filterung für dich.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Dienstag, 13. Oktober 2015 08:18
  • Also ich habe mit dem ganzen vor, ein Assetmanagement zu bauen.

    Dazu habe ich ein Navigationssteuerelement genutzt um die verschiedenen Gerätetypen abbilden zu können.
    Jeder Typ hat seine eigene Tabelle und ein entsprechend aufgebautes Formular, welches mit dem Nav-Element verknüpft ist.

    Wie ich im [EDIT] oben geschrieben habe, habe ich diese Berechnung nun innerhalb der Tabelle gelöst.

    Das dafür leider zusätzlich benötigte Feld "Heute" welches als Voreinstellung den Ausdruck "Date()" besitzt, habe ich entsprechend im Formular auf Visible=false gesetzt.

    Nur habe ich, wohl zurecht, die Befürchtung, dass das Datum sich beim Aufruf des einzelnen Datensatzes nicht korrekt neu schreibt. Dazu werde ich wohl noch einen Button benötigen, der dort das aktuelle Datum einsetzt und dann die Berechnung neu anstößt. Dazu könnte ich natürlich auch das Restwert-Feld erst einmal ausblenden lassen und nur bei Betätigung des Buttons anzeigen lassen. Das muss dann aber beim Datensatz-Wechsel wieder auf "Unsichtbar" gesetzt werden. Habe also noch einiges vor mir.. Access 97 war da irgendwie einfacher zu handhaben vor 12 Jahren :D

    Dienstag, 13. Oktober 2015 08:25