[Gelöst] Dataport: Nach Import Datensatz löschen

6. Oktober 2009 10:56

Ich beschäftige mich erst seit 2 Monaten mit Navision und kann eigentlich nicht einmal programmieren.
Trotzdem versuche ich gerade kleinere "Problemchen" über Code zu lösen... Vielen Dank schon mal für eure Hilfe!

Mein Problem:
Ich importiere Datensätze in eine neuerstellte Tabelle.
Ich möchte erreichen, dass beim Import neuer Datensätze nicht die alten doppelt erscheinen sondern nur um die neuen ergänzt werden.

Dies ist mir weitestgehend dadurch gelungen, dass ich NACH dem Import eines Records im
OnAfterImportRecord() prüfe, ob die Zeile alt ist (anhand des Datum und der Uhrzeit des letzten vorher vorhandenen Datensatzes) und ist dies der Fall mit dem nächsten Record überschreibe.

Problem ist natürlich, dass der letzte Eintrag meiner Tabelle so - sollte sich an den zu importierenden Daten nichts verändert haben - doppelt eingetragen bleibt, da er ja nicht mehr überschrieben werden kann.

Jetzt möchte ich anhand des Datums(Date) und der Uhrzeit(Time) den vorletzten und den letzten Datensatz vergleichen. Sind diese identisch, soll der letzte Datensatz gelöscht werden.

Ich habe folgenden (sicher umständlichen) Versuch unternommen, aber die Ausführung hat überhaupt keinen Effekt auf mein Ergebnis.


Tabelle - OnPostDataItem()

IF Tank.FIND('-') THEN
REPEAT
VorLNr := "LaufNr.";
VorLDatum := Datum;
VorLZeit := Uhrzeit;
UNTIL
Tabelle.NEXT(+2)=0;

IF Tabelle.FINDLAST THEN
BEGIN
LetzteNr := "LaufNr.";
LetztesDatum := Datum;
LetzteZeit := Uhrzeit;
IF VorLDatum = LetztesDatum THEN
IF VorLZeit = LetzteZeit THEN
Tabelle.DELETE(TRUE);
END;

Vielleicht kann mir auch jemand sagen, wie ich direkt zum vorletzten Eintrag springe. Immerhin weiß ich ja die ID (="LaufNr.") des Datensatzes, wenn ich den letzten Datensatz ermittelt habe.
Zuletzt geändert von NewbieK am 21. Oktober 2009 23:49, insgesamt 1-mal geändert.

Re: Dataport: Nach Import Datensatz löschen

6. Oktober 2009 11:27

Okay, nachdem ich für das Ganze nun noch eine Form gebastelt habe und alles außerhalb des Object Designers ausführe, funktioniert es - zumindest mit dem richtigen Code :wink:


Tank - OnPostDataItem()

IF Tank.FINDLAST THEN
BEGIN
IF LetztesDatum = Datum THEN
IF LetzteZeit = Uhrzeit THEN
Tank.DELETE(TRUE);
END;

Warum gibt mir Nav bei der Ausführung der Tabelle nicht schon die entsprechenden Befehle weiter? Warum funktioniert das Ganze nun in der Form?

Re: Dataport: Nach Import Datensatz löschen

6. Oktober 2009 12:39

Hallo NewbieK,

dein Quelltext ist leichter zu lesen und zu verstehen, wenn du ihn zwischen so genannte Code-Tags setzt. Insbesondere deine Formatierungen werden so auch beibehalten.

Daher bitten wir dich, vor und nach deinem Quelltext diese Code-Tags einzufügen. Beispiel:


[code]Dein Quelltext[/code]

Gruß, Mikka
MSDynamics.de-Team

Re: Dataport: Nach Import Datensatz löschen

6. Oktober 2009 12:54

Hallo NewnieK,
zunächst ein "Herzlich Willkommen" hier im Forum :-)

Ohne das ich jetzt den "Finger" heben will. Ohne Kenntnisse in Navision / Programmieren Daten manipulieren könnte auch nach "hinten" los gehen!

Vorletzten Datensatz?
Code:
// ggf. Filter setzten
IF FIND('+') THEN
  IF NEXT(-1) THEN...


Ich bin nicht ganz schlau draus geworden, was das Ziel sein soll. Bitte ggf. die Frage / Anforderung gezielter stellen.

Wäre es nicht einfacher, den vorhandenen Datensatz zu aktualisieren?
(Anstatt einen neuen einzufügen und den alten zu löschen!)