Re: Daten in einer Tabelle ändern

17. Juli 2009 10:05

hi

habe jetzt folgendes Problem:

ich habe den Report und die Daten die ich brauche auch aber ich möchte nur die daten aus der testrec2(temporäre tablle) ausgeben.
ich folgenden quelltext im in den body presections von test su (Reportaufbau siehe oben)

Code:
// Tabelle ist leer dann schreibe datensatz rein
IF testRec2.zeilennr = 0 THEN BEGIN
  testRec2.zeilennr := "Test SU".zeilennr;
  testRec2.datum := "Test SU".datum;
  testRec2.beschreibung := "Test SU".beschreibung;
  testRec2.menge := "Test SU".menge;
  testRec2.einheit := "Test SU".einheit;
  testRec2.INSERT;
END
ELSE BEGIN
  // finde den datensatz der gleiche beschreibung und gleiches datum hat
  testRec2.SETRANGE(testRec2.beschreibung, "Test SU".beschreibung);
  testRec2.SETRANGE(testRec2.datum, "Test SU".datum);
  IF testRec2.FINDFIRST THEN BEGIN
    testRec2.menge += "Test SU".menge;
    testRec2.MODIFY;
  END
  ELSE BEGIN
    testRec2.zeilennr := "Test SU".zeilennr;
    testRec2.datum := "Test SU".datum;
    testRec2.beschreibung := "Test SU".beschreibung;
    testRec2.menge := "Test SU".menge;
    testRec2.einheit := "Test SU".einheit;
    testRec2.INSERT;
  END;
END;


kann mir wer helfen, wie gesagt ich möchte nur die daten der Testrec2 tabelle ausgeben von ich die daten im body ausgebe dann bekomme ich jede veränderung in der tabelle angezeigt und das möchte ich nicht. Ich brauche nur die daten die wirklich in der tabelle stehen

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:07

flowerdog hat geschrieben:Danke Natalie! Ich stehe manchmal ein bisschen auf demn schlauch


Tun wir das nicht manchmal alle :?:
:mrgreen:

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:10

du brauchst hierfür ein neues Integer-Dataitem wie in Report 111, hier unbedingt die Eigenschaften übernehmen!

DataItem Integer, OnAfterGetRecord-Trigger:
Code:
IF Number = 1 THEN BEGIN
  IF NOT testRec2.FIND('-') THEN
    CurrReport.BREAK;
END ELSE
  IF testRec2.NEXT = 0 THEN
    CurrReport.BREAK;


Jetzt nur noch in die Body-Section deines neuen DataItems die Felder einfügen (ansprechen mit testRec2.FeldnameXY).

Den von dir zitierten Quelltext musst du allerspätestens im DataItem Integer, OnPreDataItem ausgeführt haben - niemals in den Sections!

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:22

hi

ich habe das jetzt so gemacht jetzt zeigt mir nur den letzten datensatz an und nicht alle

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:27

Kann es sein, dass du deine Texboxes in die Section Footer gesteckt hast und nicht Body?

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:30

nein die sind im body das ist schon korrekt

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:33

Schwer zu sagen, wenn ich deinen Report nicht vor mir sehe ...
Hast du mal gedebuggt oder mit einer MESSAGE kontrolliert, ob in testRec2 überhaupt mehrere Datensätze stehen?

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:38

ja habe ich auch schon es stehen alle daten sätze drin die ich benötige

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:39

Danke trotzdem der ansatz war ja gar nicht so schlecht

Re: Daten in einer Tabelle ändern

17. Juli 2009 10:40

Kann es sein, dass du meinen obigen, letzten Quelltext in den Trigger OnPreDataItem geschoben hast statt OnAfterGetRecord von DataItem Integer?

Re: Daten in einer Tabelle ändern

17. Juli 2009 11:09

nein ich habe das schon korrekt gemacht

Re: Daten in einer Tabelle ändern

17. Juli 2009 12:36

ich habe jetzt beim integer folgenden Quelltext:

Integer - OnPreDataItem()
Code:
testRec2.DELETEALL;
aendereMenge();

IF testrec.FINDFIRST THEN BEGIN
  REPEAT
    // Tabelle ist leer dann schreibe datensatz rein
    IF testRec2.zeilennr = 0 THEN BEGIN
      testRec2.zeilennr += 1;
      testRec2.datum := testrec.datum;
      testRec2.beschreibung := testrec.beschreibung;
      testRec2.menge := testrec.menge;
      testRec2.einheit := testrec.einheit;
      testRec2.INSERT;
    END
    ELSE BEGIN
      // finde den datensatz der gleiche beschreibung und gleiches datum hat
      testRec2.SETRANGE(testRec2.beschreibung, testrec.beschreibung);
      testRec2.SETRANGE(testRec2.datum, testrec.datum);
      IF testRec2.FINDFIRST THEN BEGIN
        testRec2.menge += testrec.menge;
        testRec2.MODIFY;
      END
      ELSE BEGIN
        testRec2.zeilennr += 1;
        testRec2.datum := testrec.datum;
        testRec2.beschreibung := testrec.beschreibung;
        testRec2.menge := testrec.menge;
        testRec2.einheit := testrec.einheit;
        testRec2.INSERT;
      END;
    END;
  UNTIL testrec.NEXT = 0;
END;


Integer - OnAfterGetRecord()
Code:
Integer - OnAfterGetRecord()
IF Number = 1 THEN BEGIN
  IF NOT testRec2.FIND('-') THEN BEGIN
    CurrReport.BREAK;
  END;
END ELSE
  IF testRec2.NEXT = 0 THEN
    CurrReport.BREAK;


so jetzt gibt er mir nur den ersten datensatz der tabelle aus immer noch nicht alle.
Wer hat ne idee, ich komme da nicht weiter?!?

Re: Daten in einer Tabelle ändern

17. Juli 2009 12:57

Dein OnPreDataItem-Inhalt ist falsch

Warum hast du oben diesen neuen Abschnitt hinzugefügt? Der ist schuld. Sorry war Quatsch
Code:
// Tabelle ist leer dann schreibe datensatz rein
    IF testRec2.zeilennr = 0 THEN BEGIN
      testRec2.zeilennr += 1;
      testRec2.datum := testrec.datum;
      testRec2.beschreibung := testrec.beschreibung;
      testRec2.menge := testrec.menge;
      testRec2.einheit := testrec.einheit;
      testRec2.INSERT;
    END

Dieser Quelltext sorgt dafür, dass nur einmal insgesamt in die Tabelle geschrieben wird.
Du hast selbst geschrieben "Tabelle ist leer dann schreibe datensatz rein" - ergo: ist sie nicht mehr leer, schreibe nichts mehr.

Das Schreiben in den die Tabelle hatte ich doch ganz unten extra für dich schon aufgeschrieben:

Code:
...
 ELSE BEGIN
        testRec2.zeilennr += 1;
        testRec2.datum := testrec.datum;
        testRec2.beschreibung := testrec.beschreibung;
        testRec2.menge := testrec.menge;
        testRec2.einheit := testrec.einheit;
        testRec2.INSERT;
      END;
...


Irgendwie scheinst du Vorschläge nicht gern anzunehmen ;-)

Re: Daten in einer Tabelle ändern

17. Juli 2009 13:20

doch habe auch alle vorschläge probiert hat auch nicht den erfolg gebracht den ich wollte

wenn die tabelle nicht leer springt er automatisch in den else zweig also das ist schon richtig so vielleicht etwas überflüssig aber es funktioniert :-)

Re: Daten in einer Tabelle ändern

17. Juli 2009 16:05

Das liegt nicht zufällig daran, dass du das DataItem Integer auf Number=1 eingegrenzt hast (DataItemTableView oder im Code)?

Re: Daten in einer Tabelle ändern

17. Juli 2009 16:29

nee ich habe number nicht auf eins gesetzt aber das bringt mich auf ne idee :-)

Re: Daten in einer Tabelle ändern

17. Juli 2009 16:30

Wie gesagt, einfach die Eigenschaft von DataItem integer aus Report 111 genauso übernehmen... Da steht etwas in der Art: ... FILTER(1..)

Re: Daten in einer Tabelle ändern

17. Juli 2009 16:34

habe ich doch gemacht funktioniert trotzdem nicht er zeigt nur einen Datensatz der tabelle an, den ersten.

Re: Daten in einer Tabelle ändern

17. Juli 2009 18:32

Falls es schon jemand gefragt hat, einfach ignorieren:
Änderst du noch etwas an den datensätzen des testrec2 im OnAfterGetRecord von Integer?
Und ich würde testweise mal im OnPreDataItem von Integer ein Message('%1',testrec2.count) setzen, um zu schauen, dass es wirklich anständig gefüllt ist.

Re: Daten in einer Tabelle ändern

30. Juli 2009 10:53

hi!

Falls es einen interessiert habe es jetzt folgender Maßen gelöst, die Datensätze mit einem Integer durchlaufen und in den Temporären Tabellen speichern und dann nur die entsprechenden Ausgaben machen und fertig ist der Report.

Danke für euere Hilfe!