WP Insert Document

Hallo,

In einem WP Dokument ist eine Tabelle mit z.B. 4 Spalten und einer Zeile.
Der Benutzer befüllt diese 4 Spalten mit Feldern z.B. aus einer Artikeldatei (ST Insert Expression).
Das komplette WP Dokument soll als Vorlage dienen.

Jetzt wird eine Auswahl von Artikeln getroffen z.B. 10 Datensätze.
Für diese 10 Artikel sollen nun 10 Tabellen untereinander angelegt werden.

Habe folgendes programmiert:
//Vorlagendatensatz wird vorher kopiert !

$NEW:=WP New($cTables[0]) // $cTables[0] = Range von Tabelle
For ($a;1;Records in selection([Artikel]))
GOTO SELECTED RECORD([Artikel];$a)
WP INSERT DOCUMENT([ProcExt]PE_WritePro;$NEW;wk append+wk freeze expressions)
End for

–> Das geht im Prinzip mit 2 Fehlern !

  1. Wie kann ich den Startpunkt festlegen an dem die Tabellen eingefügt werden ?
    Also direkt unterhalb der “Vorlagentabelle”.
  2. Wie kann ich dann die Vorlagentabelle löschen ?

Das ganze ist allerdings offscreen !

Vielen Dank für eine Rückmeldung !

MAC 10.13
v17R5

ein Feld als ersten Parameter bei WP INSERT DOCUMENT? Schauen Sie mal im Handbuch, da geben Sie das Ziel an. Und Sie müssen eine Range angeben, wo das Dokument einzusetzen ist. Das kann am Beginn des Dokuments sein, am Ende an Stelle einer Auswahl oder wo auch immer Sie es definieren. Onscreen oder offscreen. Beispiele dazu gibt es sowohl im Handbuch unter WP INSERT DOCUMENT, als auch nächste Woche beim Wintertraining in Köln/Frankfurt.

Hallo Herr Peschke,

vielen Dank für Ihre Antwort.

Das mit dem Feld ist natürlich nicht richtig.
Da hatte ich rumgespielt.

Ich hatte die “Vorlagentabelle” als Range definiert.

Dabei hatte ich dann das Problem, dass wenn ich die Vorlagentabelle als Range definiere und die neuen mit “wk append” anhänge, nicht alle Tabellen da waren.
Auch habe ich keine Möglichkeit gefunden die Vorlagentabelle offscreen zu löschen.

Dabei hatte ich dann das Problem, dass wenn ich die Vorlagentabelle als Range definiere und die neuen mit “wk append” anhänge, nicht alle Tabellen da waren.

Das kann ich ohne Ihren Code nicht beurteilen. Aber da Sie in der Vergangenheit schreiben, scheint es ja nun geklärt zu sein.

Auch habe ich keine Möglichkeit gefunden die Vorlagentabelle offscreen zu löschen.

Tabellen ist ein großer Bereich. Hier werden mit den nächsten R-Releases weitere Features kommen. Wie für 4D Write Pro generell. Explizites Löschen ist derzeit noch nicht möglich. Derzeitiger Weg ist, die Vorlagentabelle durch eine leere oder andere Tabelle zu ersetzen.

Hallo,

ich habe das Problem noch.

Hier ist der gekürzte Code:

//Vorlagetabelle
$oRange:=WP Text range([ProcExt]PE_WritePro;wk start text;wk end text)
$cTables:=WP Get elements($oRange;wk type table)
$NEW:=WP New($cTables[0])

ALL RECORDS([Artikel])

For ($a;1;2)
GOTO SELECTED RECORD([Artikel];$a)
WP INSERT DOCUMENT($cTables[0];$NEW;wk append+wk freeze expressions)
End for

Obwohl ich zwei einfüge, erscheint nur einer.
Der Parameter “wk exclude from range” hilft auch nicht!

Bemerkung:

  1. Fall
    Wenn ich nur eine Tabelle einfüge [For ($a;1;1)], erscheint diese unter der Vorlagentabelle.
    Versuche ich es noch einmal, wird die vorher erzeugte überschrieben (also ingesamt gibt es jetzt 2).

  2. Fall
    Wenn ich nur eine Tabelle einfüge [For ($a;1;1)], erscheint diese unter der Vorlagentabelle.
    Nun füge ich per Hand eine Leerzeile zwischen den beiden Tabellen ein.
    Versuche ich es jetzt noch einmal, wird eine neue Tabelle eingefügt (also ingesamt gibt es jetzt 3).

Hallo Herr Chmiel,

ich kann hier im Rahmen des kostenlosen Support keine Code-Kitchen machen. Aber ein schneller Blick auf Ihren Code zeigt, was ich in der ersten Antwort schon engedeutet hatte. Egal ob include oder exclude, wenn Sie die Ranges nach dem ersten Einfügen nicht korrekt auf eine Position nach der ersten eingefügten Tabelle setzen (WP Text range), wird die zuerst eingefügte Tabelle durch die zweite überschrieben. Fügen Sie statt dessen eine Leerzeile ein, sitzt der Cursor woanders und WP INSERT … fügt an der Cursor-Position ein.

Hallo,

erstmal vielen Dank.
Ich werde das versuchen und denke auch hinbekommen.

Allerdings verstehe ich das mit dem Überschreiben noch nicht.
Ich haben den Parameter “wk append” verwendet. Das bedeutet für mich egal welches Range ich habe es wird angehängt !
Bei dem Parameter “wk replace” wird die Range ersetzt.

OK was gelernt aber nicht verstanden :smiley:

ja, wenn Sie das Dokument zum Einfügen übergeben. Tun Sie aber nicht, Sie übergeben eine Range. Die muß dann entsprechend gesetzt werden.