Eine Ansicht als CSV ausgeben
Hallo zusammen
Ich habe ein Formular, in welchem ich eine Ansicht eingebaut habe, die mir den Inhalt einer anderen Tabelle darstellt, gefiltert nach Filterkriterien. Das funktioniert gut. Nun möchte ich den Inhalt dieser Ansicht per Button als CSV exportieren. Ich kann aber nur auf die anderen Felder, die ich in diesem Formular (um zu filtern) eingebaut habe zugreiffen, nicht aber auf die Ansicht.
Geht das überhaupt und wenn ja wie?
Danke und Gruss Adrian
3 Antworten
-
Ich würde diese Ansicht auch noch gerne drucken aus diesem Formular heraus und nur die angezeigten Datensätze, das geht dann wohl mit dem gleichen Befehl denke ich.
lg Adrian -
Hallo Adrian,
Ist nicht so einfach... Fangen wir mit ausdrucken an:
Fakt ist - man kann nur die Untertabellen ausdrucken. Folge - man muss eine Untertabelle erstellen. Am besten erstellt man eine Zwischentabelle mit Verknüpfungen zu deiner Haupttabelle und zu der anderen Tabelle hat. Dann kannst du im Formular mit dem Button und folgendem Skript:
---
let me:=this;
for i in select 'Andere Tabelle' where DEINEFILTERBEDINGUNGEN do
let new:=create Zwischentabelle;
new.Haupttabelle:=me;
new.'Andere Tabelle':=i
end
---
Diese untertabelle kannst du jetzt im Layout frei gestallten und auch ausdrucken.
Jetzt zur csv.-export:
csv ist im Grunde ein Text. Wenn du im Formular ein Bildfeld hinzufügst, kannst dort mit createTextFile() die csv von der Ansich speichern. Dafür zuerst die Spaltennamen als Text festlegen, dann die Gefilterten Tabelle mit der Schleife durchgehen und den Text als csv speichern. Nehmen wir an, wir haben die Tabelle Umsätze und sie hat 3 Spalten Datum, Name, Umsatz
und du hast in deiner Tabelle zwei datumsfelder von und bis und ein Bildfeld CSV. Dann wäre die Formel für einen Button:---
let me := this;
let myHeader := "Datum;Name;Umsatz
";
let myBody := for i in select 'Umsätze' where Datum >= me.von and Datum <= me.bis do
format(i.Datum, "DD.MM.YYYY") + ";" + i.Name + ";" + text(i.number(Umsatz))
end;
let myText := myHeader + join(myBody, "
");
CSV := createTextFile(this, myText, "export.csv")
---So hast du deine csv mit Semikolon getrennten Spalten (Excel-Format) im Bildfeld und kannst drauf klicken, per Email versenden und sogar freigeben.
Leo
-
Danke Leo, das ist super!
Content aside
- vor 4 JahrenZuletzt aktiv
- 3Antworten
- 1340Ansichten