Bestimmten Anhang finden und Datainame in Textfeld übergeben
Hallo,
mal wieder eine Frage oder Aufgabe die ich mir gestellt habe und nicht weiterkomme. Vieleicht funktioniert das ja auch nicht ohne weiteres.
mit diesem Code prüfe ich ja, ob die eine bestimmter Dateianhang vorhanden ist. contains(concat(files(this)), ".save")
Kann ich jetzt noch eine Schaltfläche oder auch bei dem Berechnungsfeld bei Anklicken den Dateinamen in ein Textfeld übergeben?
Vielen Dank
7 Antworten
-
Hallo Alexander
Mit extractx() kann man den Dateinamen eines Anhangs auslesen.
Als Beispiel: extractx(item(files(this),0), "(.+)\/(.+)", "i", "$2") für den ersten Anhang des Records.
Ich denke in der Form, in der du es haben möchtest ist es mit Anhängen etwas kompliziert.
Deine Abfrage kann auf nur einen oder mehrere Anhänge zutreffen. Welcher soll es dann sein?
Die Sortierung der Anhänge ist auch vorgeben. Erst Zahlen im Namen, dann Großbuchstaben dann Kleinbuchstaben.
Ein Denkmodell:
Mit files(this) erhälst du ein Array aller Anhänge.
In einer Schleife, die sooft durchlaufen wird wie die Anzahl der Array-Alemente vergleichst du ob das Array-Element deiner Suchvorgabe entspricht.
Trifft dies zu, merkst du die die Elementnummer und ziehst dir mit dem obigen Script den Dateinamen des Elements.
Wenn mehrere dem Kriterium entsprechen, erhälst du auch mehrere Dateinamen.
Eine elegantere Lösung, welche die Datenbankstruktur betrifft ist:
Du erstellst eine File Tabelle, in der du pro Record ein File speicherst. Sei es in ein Bildfeld oder als Anhang. Dazu kannst du ein Textfeld erzeugen, welches den Dateinamen speichert.
Bei einemBildfeld setzt du beim Trigger nach Änderung fim Bildfeld olgendes Script ein: Textfeld := extractx(text(Bildfeld), "(.+)\/(.+)", "i", "$2").Wenn du es im Anhang speicherst, schreibst du folgendes Script in den Trigger nach Änderung vom Datensatz: Textfeld := extractx(text(item(files(this), 0)), "(.+)\/(.+)", "i", "$2"). Damit hast du automatisch den Namen der Datei permanent im Textfeld gespeichert und kannst ihn über die Verknüpfung oder select finden.
Diese Tabelle verknüpfst du mit den entsprechenden Tabellen, in denen du Files erszeugst oder speichern möchtest.
Das macht das suchen erheblich einfacher und du hast alle Dokumente an einem Platz. -
Hallo und Danke Uwe,
der Ansatz mit der externen Tabelle für die Records hat mir gefallen und habe das auch umgesetzt. Jetzt taucht natürlich ein anderes Problem bei mir auf.
Da ich über integromat eine E-Mail mit den zugehörigen Anlagen senden möchte, fehlt jetzt die zugehörige Datei im Anhang, da sie in einer anderen Tabelle ist. Entweder muss ich im Integromat entsprechende Änderungen vornehmen (eigentlich ungern, da noch weniger Kenntnisse) oder ich brauche die wiedergabe eines Links zur entsprechenden Datei. habe das mal mit dem shareFile() probiert aber da komme ich nicht weiter wenn mein ansatz überhaupt richtig ist.
Mit bestem Dank
Alex
-
Hallo Alexander
Das kommt darauf an, wie dein bisheriger Integromatstrang für das hochladen des Anhangs aussieht. Wenn du es über einen Ninox FileDownload von Ninox-Node erledigst, musst du statt der bisherigen Datentabelle auf die neue DateiTabelle verweisen die entsprechende RecordID und Filenamen eintragen und es darüber machen. Über den Webhook kannst du ja die entsprechenden Informationen mitsenden.
Wenn die FileTabelle über eine Verknüpfung angebunden ist, hast du ja die RecordID der Datei.
Der andere Weg geht wie du vermutest über den ShareLink des Files.
Du erstellst zusätzlich in der FileTabelle ein Textfeld, in das automatisch beim abspeichern des Files der ShareLink auf die Datei geschrieben wird.
Den Share schickst du mit dem Webhook an Integromat.
Jetzt nutzt du einen https-Node um das File in Integromat zu laden und verarbeitest es wie bisher weiter. -
Hallo Alexander
Ich nutze Integromat zwar nicht, aber ich habe mal das Szenario des Mailversands mit einem oder mehreren Attachments aus einer verknüpften FileTabelle nachgebaut.
Da ich nur die kostenlose Version von Integromat nutze, kann ich dir leider keinen fertigen BluePrint des Scenario senden.
Anbei ein Screenshot, wie das funktionierende Integromat-Scenario aussieht.
Ich habe es getestet und es funktioniert sowohl mit einem einzelnen Attachment als auch mit mehreren.
Es wird nur eine eMail versandt, die alle Attachments enthält.
Ich kann eine Beispieldatenbank, die den Ninox-Aufbau für das Versenden von Mails über Integromat mit einer zentralen FileTabelle enthält in das Webinarteam stellen wenn gewünscht.
Beim Integromat-Aufbau must du einfach Fragen. -
Hallo Uwe,
dankeschön für deine Bemühungen. Ich muss mir das mal anschauen, sofern mir die Zeit dazu bleibt. Meine Datenbank ist nun seit mehreren Jahren gewachsen und ich bin hin und wieder am schrauben und basteln um hier weitere Funktionen und Abläufe zu optimieren. Ich nutze meine DB aktiv in meinen beruflichen Alltag. Bisher habe ich meine Arbeitsberichte, Rechnungen und weitere Dokumente, die dem Datensatz anhängen mit versendet und entsprechend im intergromat mehrere Szenarios gebastelt. Das mit der verknüpften Tabelle, muss ich mir erstmal anschauen und brauche natürlich hier Ansätze bezüglich der codes oder programmierung, wie auch immer wir das nennen wollen.
Bisher habe ich dann die zu zum versand bestimmten Anhänge in entsprechende Textfelder dem intergomat übergeben. Deswegen war der Plan, das ich Dateien die ich dem Datensatz anhänge entsprechend mitliefere. Könnte, das alles händisch eintragen aber wie es so ist möchte man ja auch noch mehr und entsprechenden Automatismus. Das mit der verküpften Tabelle ist eine gute Idee nur ist jetzt die Umsetztung eine andere und ich möchte Stück für Stück zum Ziel kommen.
-
meine formulierung im letzten Satz ist wahrscheinlich etwas falsch bzw. könnte falsch verstanden werden. Ein Ziel wird es wahrscheinlich nie geben, da einem immer wieder etwas einfällt, das man anders, besser oder wie auch immer machen kann. Wie schon erwähnt, bin ich in dem Bereich Programmierung ein Anfänger und probiere Stunden, bis das Ergebnis einigermaßen passend ist. Also die Formulierung in dem Satz bezieht sich schlichtweg auf meinen Ansporn.
-
Moin Alexander.
Deine Argumente kann ich nachvollziehen.
Ich habe mal die Bsp-DB auf dein Schema angepasst. (siehe Screenshots)
Alle zu versendenden Dateien sind in der Rückverknüpfung zur Dokumententabelle aufgeführt.
Der Vorteil hier gegenüber deiner bisherigen Praxis ist, du benötigst wahrscheinlich nur ein Integromat-Scenario, da sich alle zu versendenden Dokumente Zentral in einer Tabelle befinden und nicht extra aus anderen Tabellen zusammengesucht werden müssen.
Aber ein Grundsatz der Programmierung ist auch: Never change a running System.
Wenn deine Lösung für dich funktioniert ist es doch gut.
Content aside
- vor 3 JahrenZuletzt aktiv
- 7Antworten
- 463Ansichten