[Gelöst] Countdown beim Export

25. Februar 2009 12:05

Hallo

ich habe mal eine ich denke mal sehr Anspruchvolle Frage an euch :-D

also...

ist es möglich in einem Dataport beim Export ein Countdown in einem Dialog mitlaufen zu lassen,
z.B wenn ich sagen wir mal 90.000 Datensätze exportiere ist es möglich dann in einem Dialog anzuzeigen

noch übrig: 32min 13sec

oder sowas in der art....????

gibt es für solch ein Vorhaben vielleicht schon ansätze oder Codeschnippsel.

Vielen Dank im Voraus

John
Zuletzt geändert von John Wayne am 26. Februar 2009 14:05, insgesamt 1-mal geändert.

Re: Countdown beim Export

25. Februar 2009 12:17

Ich habe es definitiv schon einmal gesehen. Ein Kollege hat etwas in der Richtung mal entwickelt. Ich schau da mal nach. Kann natürlich ein bisschen dauern... ;-)

Re: Countdown beim Export

25. Februar 2009 12:19

danke erstmal für die schnelle antwort.
das wäre echt total nett wenn du mir ein paar tipps geben könntest, poste einfach mal alles was du finden kannst.
vielen vielen dank :-D

Re: Countdown beim Export

25. Februar 2009 12:39

Hier eine Funktion. Hier musst du dich wirklich durchwühlen.

Funktion:
Parameter:
Var Name DataType Subtype Length
Nein pStartDate Date
Nein pStartTime Time
Nein pActDate Date
Nein pActTime Time
Nein pPercent Decimal
Ja pEstEndDate Date
Ja pEstEndTime Time
Ja pEstDuration Text 30

Return Type: Time

Variables:
Name DataType Subtype Length
vStart Decimal
vTemp Decimal
vEnd Decimal
vActDuration Decimal
vEstDuration Decimal
vMilliSecsPerDay Decimal
vMilliSecsPerHour Decimal
vMilliSecsPerMinute Decimal
vDays Integer
vDateExpression Text 30
vDummyDiff Time
vRestOfDay Decimal
vStartDate Date
vEstDurationTime Decimal
vMilliSecondsPerUnit Decimal
i Integer

Inhalt der Funktion:
Code:
vMilliSecsPerMinute := 60 * 1000;
vMilliSecsPerHour := 60 * vMilliSecsPerMinute;
vMilliSecsPerDay := 24 * vMilliSecsPerHour;
vDummyDiff := 000000T;

vStart := pStartTime - vDummyDiff;
vTemp := 0;
vStartDate := pStartDate;
WHILE vStartDate < pActDate DO BEGIN
  vTemp := vTemp + vMilliSecsPerDay;
  vStartDate := CALCDATE('+1T',vStartDate);
END;
vEnd := pActTime - vDummyDiff;
vEnd := vEnd + vTemp;

vActDuration := vEnd - vStart;
vEstDuration := ROUND(vActDuration * 100 / pPercent,1);
IF vEstDuration MOD 1000 >= 500 THEN
  vEstDuration := (vEstDuration DIV 1000 + 1) * 1000;

pEstDuration := '000';
vMilliSecondsPerUnit[1] := vMilliSecsPerHour;
vMilliSecondsPerUnit[2] := vMilliSecsPerMinute;
vMilliSecondsPerUnit[3] := 1000;
vEstDurationTime := vEstDuration;
i := 1;
WHILE i <= ARRAYLEN(vMilliSecondsPerUnit) DO BEGIN
  WHILE vEstDurationTime >= vMilliSecondsPerUnit[i] DO BEGIN
    pEstDuration := INCSTR(pEstDuration);
    vEstDurationTime := vEstDurationTime - vMilliSecondsPerUnit[i];
  END;
  IF i < 3 THEN
    pEstDuration := pEstDuration + ':00';
  i += 1;
END;

vDays := 0;
vRestOfDay := (235959T - pStartTime) + 1000;
IF vEstDuration < vRestOfDay THEN BEGIN
  pEstEndDate := pStartDate;
  pEstEndTime := pStartTime + vEstDuration;
END ELSE BEGIN
  vDays := vDays + 1;
  vEstDuration := vEstDuration - vRestOfDay;
  WHILE vEstDuration >= vMilliSecsPerDay DO BEGIN
    vDays := vDays + 1;
    vEstDuration := vEstDuration - vMilliSecsPerDay;
  END;
  IF vDays > 9999 THEN
    vDays := 9999;
  vDateExpression := '''' + STRSUBSTNO('+%1T',vDays) + '''';
  pEstEndDate := CALCDATE(vDateExpression,pStartDate);
  pEstEndTime := vDummyDiff + vEstDuration;
END;

Re: Countdown beim Export

25. Februar 2009 12:43

nicht schlecht.....
vielen dank für deine Bemühungen...

Re: Countdown beim Export

25. Februar 2009 14:06

Sag dann mal, ob es funktioniert hat. Und wenn ja, schreib hier ein [Gelöst] in den ersten Beitrag ;)

Re: Countdown beim Export

25. Februar 2009 16:13

hallo nochmal,

scheint soweit ganz gut zu klappen.
hapert nur noch an einer stelle, ich denke das es bei dem Rückgabewert ist.
Die Fehlermeldung ist:

Text:= Time

Fehler bei Textkonvertierung.

Im code hab ich keine Stelle gefunden bei der dies zutreffen könnte deswegen gehe ich davon aus das es bei der Rückgabe ist.
Hast du evtl. noch eine Idee woran dies liegen könnte??

Danke nochmal für deine Hilfe

Re: Countdown beim Export

25. Februar 2009 16:19

Der Rückgabewert ist Time, aber im Code ist nirgendwo ein EXIT(WERT). Das bedeutet, es wird nichts zurückgegeben (außer natürlich über die Call-by-Reference-Variablen).

Re: Countdown beim Export

25. Februar 2009 16:44

also bist du der Meinung das der Fehler im code sein muss?
habe schonmal rübergeschaut konnte aber nichts finden die funktion ruf ich aber auch noch nicht auf...
bei euch läuft der code doch so wie du ihn gepostest hast oder... wo kann dann der fehler liegen ist schon komisch :?:

Danke für deine schnelle Antwort

Re: Countdown beim Export

25. Februar 2009 17:03

Wenn du F11 drückst, versucht er ja zu kompilieren. Dann kommt die Fehlermeldung und danach sollte der Cursor auf die Stelle springen, wo er den Fehler vermutet.

Hast du überprüft, ob du alle Variablen und Parameter richtig eingerichtet hast?

Re: Countdown beim Export

26. Februar 2009 10:19

Guten Morgen,

ja ich habe alles geprüft die Vars. soltlen alle richtig sein, und beim kompilieren springt er nicht zu der Stelle sondern öffnet nur die Funktion.
was kann das nur sein...

Re: Countdown beim Export

26. Februar 2009 11:08

Wenn du kompilierst, wo genau bist du da? Am besten befindest du dich schon im Code, dann springt er auch meistens richtig rein. Was heißt "öffnet die Funktion"?

Re: Countdown beim Export

26. Februar 2009 11:25

also wenn ich komiliere stehe ich in dem code von meinem DataItem...
sobald er auf den Fehler läuft öffnet er den Allgemeinen Code vom Dataport wo kein code außer die funktion DurateTime steht.
Nachdem er dann den Allgemeinen Teil geöffnet hat ist der Cursor aber nicht mehr gesetzt es sei denn ich stand mit dem Cursor zuvor schon in der Funktion dann findet keine änderung statt und der Cursor steht wieder genau an der selben stelle nur nicht mehr im code vom Dataitem sondern im Allgemeinen TEil des Dataports.
Ist schwer zu schildern ich hoffe so kann man es verstehen :-)

Re: Countdown beim Export

26. Februar 2009 11:42

Schwer zu verstehen :P

Was ich glaube: Du verwendest Nav 3, wir hier Nav 4
Vielleicht funktioniert diese Funktion hier nicht:
Code:
vStart := pStartTime - vDummyDiff;

vStart ist Dec, die beiden anderen Time. Erstell doch testweiße mal ein Objekt und "stell die Szene" nach (Dec := Time - Time).

Was du auch machen könntest. Alles auskommentieren. Dann Zeile für Zeile einkommentieren ;)

Re: Countdown beim Export

26. Februar 2009 12:21

so habe es soweit hinbekommen aber könntest du mir evtl. einen aufruf der funktion zeigen ich kriege die parameter nicht übergeben.
Und falls du es im Kopf hast die aufschlüsselung zu den Parametern.
Ich tippe mal.

pStartDate = heutiges Datum
pStartTime=jetzige Zeit
pActDate=hab ich auch heutiges Dat genommen ???
pActTime=jetzige Zeit???
pPercent=Status meiner Prozentanzeige???
pEstEndDate= kann ich überhaupt nichts mit anfangen
pEstEndTime= hiermit auch nicht
pEstDuration= ????

wäre schön wenn du mal einen aufruf hättest vielleicht ja sogar mit erläuterung zu den Para's

Vielen Dank schonmal

Re: Countdown beim Export

26. Februar 2009 12:50

CalcEstEndTime(StartDate,StartTime,TODAY,TIME,Percent,EstEndDate,EstEndTime,EstDuration);

Erklärung:
pStartDate: StartDate := TODAY (die Variable StartDate wird beim ersten Start einmal mit dem aktuellen Datum gefüllt, also das Startdatum)
pStartTime: StartTime := TIME (die Variable StartDate wird beim ersten STart einmal mit der aktuellen Zeit gefüllt, also die Startzeit)
pActDate: TODAY (wird für jede Zeile mit dem aktuellem Datum gefüllt)
pActTime: TIME (wird für jede Zeile mit der aktuellen Zeit gefüllt)
pPercent: Percent (Rückgabevariable)
pEstEndDate: EstEndDate (Rückgabevariable)
pEstEndTime: EstEndTime (Rückgabevariable)
pEstDuration: EstDuration (Rückgabevariable)

Also du setzt bevor du das erste mal diese Funktion aufrufst die Variablen StartDate und StartTime mit TODAY und NOW. Für jede Zeile rufst du nun die Funktion auf. Du übergibst damit die Startzeit (Date und Time) und die aktuelle Zeit (Date und Time). Die restlichen vier Parameter sind eher Rückgabewerte. Du übergibst sie und der Wert wird dann in diese Variablen reingeschrieben (damit kann man mehrere Rückgabewerte definieren, das Verfahren heißt Call by Reference).

Wie konntest du den Fehler nun lösen?

Re: Countdown beim Export

26. Februar 2009 13:01

war ein ganz blöder fehler :oops: hatte gestern wenig zeit ... und nachdem ich alle vars eingetragen hatte, wollte ich speichern, ging nicht wegen dem Fehler.......

Alle Variablen waren komischerweise wieder auf den Standartwert zurückgesetzt gewesen (Integer) warum kann ich mir nicht erklähren, aber es lässt sich nun wenigstens kompiliert speichern. :-)

naja war halt ein komisches phenomän und den Fehler konvertfehler text zu time kann ich mir immer noch nicht erklähren das es wirklich nur integer gab, naja die hauptsache ist das es läuft:wink:

danke nochmal

Re: Countdown beim Export

26. Februar 2009 13:55

Gerne doch ;)

Setz doch ein [Gelöst] in den ersten Beitrag von dir, damit die Suchenden das hier leichter finden.