0
Per Button Datensätze für Druck in eine temporäre Tabelle
Wahrscheinlich ganz einfach, aber....
Ich habe eine Tabelle AUFTRAEGE mit einer Untertabelle POSITIONEN. Nun möchte ich - einzelne Datensätze mit fest definierten Parametern wie z.B. Feld 1 ist leer oder Feld 2 hat den Wert "Hallo" - aus POSITIONEN per Button in eine neue Tabelle kopieren. Dies um dann diese Tabelle über ein PDF Formular auszudrucken. Nach Abschluß des Drucks möchte ich ebenfall per Button die Datensätze aus der "Hilfstabelle" (nicht die Originale) löschen.
Ich bin damit ein wenig überfordert und würde mich über Hilfe sehr freuen.
Ich habe eine Tabelle AUFTRAEGE mit einer Untertabelle POSITIONEN. Nun möchte ich - einzelne Datensätze mit fest definierten Parametern wie z.B. Feld 1 ist leer oder Feld 2 hat den Wert "Hallo" - aus POSITIONEN per Button in eine neue Tabelle kopieren. Dies um dann diese Tabelle über ein PDF Formular auszudrucken. Nach Abschluß des Drucks möchte ich ebenfall per Button die Datensätze aus der "Hilfstabelle" (nicht die Originale) löschen.
Ich bin damit ein wenig überfordert und würde mich über Hilfe sehr freuen.
12 Antworten
-
um nicht die einzelnen Datenfelder zu kopieren, würde ich in die Hilfstabelle die Verknüpfung zu der Tabelle Positionen hinzufügen. Dann die Formel für den Knopf:
for ii in select Positionen where 'Feld 1'=null or 'Feld 2'="Hallo" do
let NT:=create Hilfstabelle;
NT.Positionen:=ii
end;
printTable("Hilfstabelle",“Ansicht“);
delete select Hilfstabelle
Den Ansicht der Hilfstabelle für PDF Druck muss du natürlich zuerst konfigurieren. -
Guten Morgen Leo,
was würde ich ohne Deine Unterstützung bloß machen?
Funktioniert tadellos, nur habe ich einen Gedankenfehler gemacht.
Die erzeugte Hilfstabelle kann ich nicht FORMATIERT über die PDF Funktion ausdrucken. Mit dem Print Befehl bekomme ich lediglich eine Tabelleansicht, die ich nicht formatieren kann.
Also bräuchte ich eine Hilfstabelle mit nur einem Datensatz und darin noch eine Tabelle mit den ausgewählten Positionen. Das läßt sich dann über PDF frei gestalten.
Vielleicht noch einen kleinen Denkanstoß Deinerseits?
PS: In Deinem Codebeispiel waren die "" mal "richtig" und mal "falsch"... -
was genau verstehst du unter "formatiert"? Die Tabellenspalten kannst du in der Ansichten beliebig formatieren. Oder meinst du das Dokument rund um die Tabelle?
-
Genau, ich möchte je nach Anwendungsfall einen differenzierten Briefbogen kreieren. In diesen sollen dann die ausgewählen Positionen formatiert eingefügt werden = wie eine Untertabelle. Es geht also nicht um die Tabelleansicht sondern um das PDF Ergebnis.
-
Ich bräuchte also ein create Drucktabelle mit nur einem Datensatz. Diesem Datensatz müßte dann mit select.... Positionen die ausgewählten Positionen zugeordnet werden, also als Untertabelle.
-
Ich würde dann eine zusätzliche Tabelle namens Berichtstabelle anlegen.
Die Hilfstabelle erhält dann zusätzlich noch die Verknüpfung zu der Berichtstabelle (n:m Beziehung). In der Berichtstabelle würde ich dann noch Die Suchfeleder Feld 1 und Feld 2 anlegen. Die Abfrage würde ich dann auch aus der Berichtstabelle starten. Die Formel:
---let myB:=Nr;
let F1:='Feld 1';
let F2:='Feld 2';
for ii in select Positionen where 'Feld 1'=F1 or 'Feld 2'=F2 do
let NT:=create Hilfstabelle;
NT.Positionen:=ii;
NT.Berichtstabelle:=myB
end;
printRecord(this, "layoutName");
delete select Hilfstabelle
---
Du kannst die Berichtstabelle verstecken und immer nur den ersten Datensatz von anderen Formularen mit der Schaltfläche aufrufen. Die Formel dazu wäre:
---popupRecord ( record(Berichtstabelle,1))
---
Grüße
Leo -
Hallo Leo, hat etwas gedauert und ich hab' mich mächtig angestrengt :)
Meine Lösung ist jetzt:
create Drucktabelle;
let myB := Nr;
for ii in select Positionen where 'Feld 1' = "Hallo" do
let NT := (create Druckpositionen);
NT.(Drucktabelle := myB);
NT.(Positionen := ii)
end
Nochmals herzlichen Dank. -
Hallo Leo,
läuft jetzt alles wie gewünscht.
Wenn ich allerdings im nächsten Schritt Deinen Vorschlag mit
popupRecord ( record(Berichtstabelle,1))
einsetze, fällt Ninox beim Aufruf der Funktion in eine Endloschleife, d.h. ich sehe einen einen drehenden Kringel und nichts passiert mehr.
Hast Du dafür eine Erklärung? -
Prüf mal ob einen Record mit ID=1 überhaupt gibt.
-
Ja, den gibt es
-
Entschuldigung, nein doch nicht. Bei jedem Aufruf wird ja ein neuer Datensatz mit einer neuen ID erzeugt. Genau das ist das Problem. Aufgerufen wird id1, die es aber nach dem zweiten Durchlauf nicht mehr gibt, da ich die DAtensätze nach dem Druck ja lösche. Also muss ich das löschen lassen, was aber zu immer neuen (leeren Datensätzen) führt. Oder ich ich muss einen Datensatz mauell anlegen, diesen nicht mehr löschen und die dann aktuelle id aufrufen.
-
Fester Datensatz, dessen id aufrufen. Problem gelöst. Jetzt funktioniert alles.
Vielen Dank für Deine Hilfe.
Content aside
- vor 6 JahrenZuletzt aktiv
- 12Antworten
- 6254Ansichten