Announcement

Collapse
No announcement yet.

Kalkulationsfeld in Query bzw. Q-Report

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kalkulationsfeld in Query bzw. Q-Report

    Hallo,

    Ich habe eine Query erstellt, in der sich ein Kalkulationfeld befindet.
    Auf Basis dieser Query einen QReport. Das Kalkulationsfeld soll
    einfach Werte von 1-n aufnehmen. Das funktioniert auch einwandfrei.
    Speichere ich nun den Report als QRB-Datei ab, so bleiben die Werte
    des Kalkulationfeldes auch erhalten. Speichere ich aber den Report
    als TXT-Datei ab, so verändern sich die Werte des Kalkulationfeldes
    ungewollt. Also wenn ich zwei Datensätze habe, so bleibt in der
    QRB-Datei der Wert wie gewünscht nämlich 1 für den ersten Datensatz
    und 2 für den zweiten Datensatz. Als abgespeicherte TXT-Datei stehen
    aber eine 3 im ersten und eine 4 im zweiten Datensatz. Ich fummele schon
    Stunden an diesem Problem und habe bemerkt, daß wenn ich den Datensatzzeiger
    bewege sich die Werte des Kalkulationfeldes verändern. Wie kann ich erreichen
    das in beiden Dateien, der QRB-Datei alsauch in der TXT-Datei die gleichen
    Werte stehen, so das man den Report auch mit einem Textverarbeitungsprogramm
    weiter verarbeiten kann.

    Vielen Dank für jeglichen Tip

    ph

  • #2
    Hallo,

    wenn der Wert des berechneten Feldes in <b>OnCalcFields</b> zugewiesen wird, führt jede Datensatz-Positionsändernung zu einer Neuberechnung. Ich habe mir das zwar noch nicht im Detail angeschaut, das das geschilderte Verhalten deutet darauf hin, dass beim Export als TXT-Datei der QReport den ersten Datensatz "zur Probe" einliest, um die Spaltenstruktur zu bestimmen. In diesem Fall würde in der Tat der erste Wert mit "3" beginnen.

    Man könnte nun entweder <b>TQRExpr</b> verwenden, um unabhängig von OnCalcFields den Wert des berechneten Feldes direkt im Report zu berechnen oder die TQuery-Datenmenge wird entweder in <br>
    a) einer temp. Tabelle über <i>DBIMakePermanent(Query1.Handle,'c:\tmp\tmptbl', True);</i>, einer <br>
    b) In-Memory-Tabelle, oder <br>
    c) einer TClientDataset-Instanz<br>
    zwischengespeichert. Der QReport würde in diesem Fall auf eine "feste Datenmenge" zugreifen, da hier keine Berechnung mehr stattfindet und die Neupositionierung des Datensatzzeigers keine Rolle mehr spielt

    Comment


    • #3
      Vielen dank für die Hinweise

      konnte das problem damit leicht lösen.

      p

      Comment

      Working...
      X