[Gelöst] Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 17:46

Hallo Leutz,

ich habe einen kleinen Report, der mir jeden Abend in verschiedenen Tabellen (Customer, Contact), bei den Adressen das Bundesland (County) reinschreibt .

Ich habe folgenden Code:
Code:
Customer - OnPreDataItem()

RESET;
SETRANGE(County,'');
SETRANGE("Country Code",'DE');
Code:
Customer - OnAfterGetRecord()

IF PostCodeRegionAlloc.GET("Country Code","Post Code",City) THEN BEGIN
  County := PostCodeRegionAlloc.County;
  MODIFY;
END;

Nun habe ich ein paar Fragen dazu.
1. Wenn ich den Report ausführe kommen dazwischen immer Hinweisfenster mit dem Text: Die Datensätze in der Tabelle Debitor werden gezählt. Kann ich das Fenster ausblenden, oder verhindern, dass es angezeigt wird?
2. Gibt es eine bessere Möglichkeit, bzw läuft es schneller, wenn ich den Filter in der Property DataItemTableView setze
3. Was für eine Möglichkeit gibt es denn, die Zeit für einen Vorgang zu messen in Millisekunden?
Zuletzt geändert von ralf5 am 24. Februar 2010 20:01, insgesamt 1-mal geändert.

Re: Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 18:24

ralf5 hat geschrieben:1. Wenn ich den Report ausführe kommen dazwischen immer Hinweisfenster mit dem Text: Die Datensätze in der Tabelle Debitor werden gezählt. Kann ich das Fenster ausblenden, oder verhindern, dass es angezeigt wird?

Ja, erstelle für die Customer-Tabelle einen Schlüssel mit den Feldern County und Country Code und weise diesen im OnPreDataItem-Trigger zu. Eine andere Möglichkeit besteht nicht.

2. Gibt es eine bessere Möglichkeit, bzw läuft es schneller, wenn ich den Filter in der Property DataItemTableView setze

Geht genauso gut, macht genauso keinen Unterschied bei der Performance (so weit ich weiß). Das gleiche gilt für den zu setzenden Schlüssel.

3. Was für eine Möglichkeit gibt es denn, die Zeit für einen Vorgang zu messen in Millisekunden?

Speichere Anfang und Ende in jeweils einer Time-Variable. TimeEnde - TimeAnfang = Zeit in Millisekunden.

Übrigens: Da du in der Customer-Tabelle auf County filterst, darfst du das Feld nicht innerhalb der gleichen Variable ändern. Schreibe es so, mit zweiter Variable Cust2:
Code:
Customer - OnAfterGetRecord()

IF PostCodeRegionAlloc.GET("Country Code","Post Code",City) THEN BEGIN
  Cust2 := Customer;
  Cust2.County := PostCodeRegionAlloc.County;
  Cust2.MODIFY;
END;

Re: Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 18:33

Hallo Natalie,

danke für deine Antworten.

Jetzt habe ich noch zwei Fragen dazu:

Ja, erstelle für die Customer-Tabelle einen Schlüssel mit den Feldern County und Country Code und weise diesen im OnPreDataItem-Trigger zu. Eine andere Möglichkeit besteht nicht.

OK, den Schlüssel habe ich in der Tabelle erstellt. Aber wie weise ich denn diesen im OnPreDataItem-Trigger zu? Puuuuh

Übrigens: Da du in der Customer-Tabelle auf County filterst, darfst du das Feld nicht innerhalb der gleichen Variable ändern. Schreibe es so, mit zweiter Variable Cust2:

Warum darf ich das nicht?

Re: Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 18:48

ralf5 hat geschrieben:OK, den Schlüssel habe ich in der Tabelle erstellt. Aber wie weise ich denn diesen im OnPreDataItem-Trigger zu? Puuuuh

Kannst es ja auch über den DataItemTableView + Assist-Button machen ;-)
Im Quelltext (OnPeDataItem) wäre es SETCURRENTKEY (iehe. ggf. Onlinehilfe).

Warum darf ich das nicht?

Stell dir vor, vor dir steht eine unermessliche Zahl an bunten durchnummerierten Blumen. Du kannst sie nur der Nummer nach unterscheiden, doch die du siehst du erst, wenn du dir eine bestimmte ansiehst.
Du sortierst alle nicht-roten aus (heißt: du filterst auf Rot).
Nun möchtest du eine nach der anderen Gelb anmalen: Du fängst bei der ersten an. In dem Augenblick wo sie Gelb wird, fällt sie aus deinem Filter.
Du bist ganz durcheinander und weißt nicht mehr, welche Blume (welche Nr.) du als nächstes anmalen wolltest.

Jaja, sehr reales Beispiel :mrgreen:

Re: Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 19:22

Hallo Natalie,

vielen Dank für das blumige Beispiel. :-)

Ich nehme an, dass ich SETCURRENTKEY nur benötige wenn es nicht schon der Primärschlüssel ist.

Re: Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 19:42

ralf5 hat geschrieben:Ich nehme an, dass ich SETCURRENTKEY nur benötige wenn es nicht schon der Primärschlüssel ist.

Naja, immer dann, wenn du einen Schlüssel willst, der ungleich dem aktuellen ist.
Bei einer "unbehandelten" Record-Variable ist der Schlüssel per default auf Primärschlüssel gesetzt.
Einen schlüssellosen Zustand gibt es nicht.

Re: Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 20:00

Hallo Natalie,

war noch nicht ganz gelöst.

Werde es aber als neuen Beitrag posten.

Danke.

Re: Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 20:15

ralf5 hat geschrieben:Hallo Natalie,

war noch nicht ganz gelöst.

Werde es aber als neuen Beitrag posten.

Danke.

War leider der falsche Schritt, den Beitrag einfach nochmal einzustellen ;-)

Hatte dir zu Frage 1 auch schon einen Lösungsvorschlag gegeben. Andere Möglichkeiten hast du nicht.
Im Übrigen heißt [gelöst]-Setzen nicht, dass andere nicht noch Gegenvorschläge, Korrekturen etc. einreichen dürfen.

PS: Wenn die Lösung schlichtweg nicht funktioniert hat, zeig mal bitte deine ganze SETCURRENTKEY-Zeile.
PS2: ich ahne etwas - das SETCURRENTKEY darf nicht vor das RESET, denn RESET hebt alle Schlüssel auf (= setzt den Primärschlüssel). Nimm das RESET am besten ganz weg, das macht in OnPreDataItem-Triggern kaum Sinn.

Re: [Gelöst] Die Datensätze in der Tabelle xy werden gezählt

24. Februar 2010 20:30

Wow! Treffer!

Jetzt fahre ich doch tatsächlich GLÜCKLICH nach Hause. :-D :-D :-D

Vielen Dank.