[Gelöst] XMLPORT Export, Filter setzten bestimmte Datensätze

30. Dezember 2009 05:02

Hallo zusammen, habe ein Problem mit dem XML - Export. Ich möcht nur einen bestimmten Datensatz aus einer Tabelle exportieren. Wenn sich ein User am Client anmeldet, soll nach erfolgter Arbeit, ein bestimmter Datensatz aus einer Tabelle exportiert werden. Der Filter soll dabei auf der USERID liegen. Die Codeunit sieht dabei folgendermaßen aus:

Code:
Root := USERID;
ofile.CREATE(FileDialog.OpenFile('Dateipfad....',Root,4,'.xml' + '|*' + '.xml',2));
ofile.CREATEOUTSTREAM(ostream);
XMLPORT.EXPORT(123456780,ostream);
ofile.CLOSE;
MESSAGE('XML-Port erfolgreich');


Funktioniert wunderbar.

Exportiert werden soll nur der Datensatz, dessen ID mit dem Anmeldenamen übereinstimmt. Die systemweite Variable dafür ist die USERID. Ich kann die USERID auch in einem Trigger des XMLPORT aufrufen und testweise über eine Messagebox ausgeben. Funktioniert einwandfrei. Nur jeglicher Versuch einen Filter zu setzten auf diese USERID funktioniert nicht. Nicht im Trigger, nicht in den Properties (SourceTableView). In den Proberties funktioniert es nur, wenn ich z.B. folgenden Code dort von Hand eingebe:

Code:
WHERE(User ID=CONST(SUPER))


Super ist eine definierte Rolle / User ID. Wenn ich SUPER durch die Variable USERID ersetze, wird kein Datensatz ausgelesen.

Wie kann man denn nun in einem XMLPort (Export) einen vernünftigen Filter setzten, den ich nicht von Hand jedesmal eingeben muss, sondern davon abhängt, welcher User sich jeweils am Client anmeldet?

In einem Forumsbeitrag habe ich etwas über SETTABLEVIEW gelesen, das in einen bestimmten Trigger des xmlports geschrieben wird. Hat bei mir aber nicht funktioniert und ist mir auch ein Rätsel geblieben.

Gibt es da eine Möglichkeit? Wäre schön, wenn mir da jemand helfen könnte.

Vielen Dank
Manfred
Zuletzt geändert von MJonas am 19. Januar 2010 16:03, insgesamt 1-mal geändert.

Re: XMLPORT Export, Filter setzten auf bestimmte Datensätze

19. Januar 2010 15:55

Dank eines Forumsbeitrages habe ich nun eine Lösung erarbeitet:

Im XMLport Designer wird die Tabelle festgelegt, aus der die Daten exportiert werden sollen.
In dieser Tabelle habe ich vorher ein neues Attribut "Exportieren" angelegt (Datentyp Boolean). Alle Datensätze in der Tabelle haben beim Attribut "Exportieren" den Wert "False". Bearbeitet nun der User das Formular und möchte nun seinen geänderten Datensatz über einen Button exportieren, wird vorher das Datenfeld "Exportieren" seines Datensatzes mit seiner ID mit dem Wert "True" belegt.

Code:
ZertRec.Exportieren := TRUE;

ZertRec.MODIFY(TRUE);


Im XMLport Designer muss nun noch in den Properties der Tabelle folgende Einstellung gemacht werden:
Eigenschaft SourceTableView

Code:
WHERE(Exportieren=FILTER(Yes))


Nach dem Export muss Exportieren wieder auf False gesetzt werden.

Vielen Dank Manfred