Ausgabe aller daten eines Formulars
Hallo,
ich bin auf der Suche nach einem Weg ALLE Informationen die in einer Untertabelle (ein bestimmtes Formular) vorhanden sind in Textform auszugeben. Ein Beispiel:
Dieses Untertabelle würd ich gerne in etwa so in einem Dashboard ausgeben:
Drehzahl Lüfter Wert = 70
Drezahl Lüfter Min = 0
Drehzahl Lüfter Max = 100
Drehzahl Lüfter Einheit = %
.
.
.
Da ich verschiedene Datensätze habe, die teils unterschiedliche Felder (auch unterschiedlich viele Felder) benötigen, würde ich gern einfach alles vorhandene ausgeben, in diesem Feldname-Inhalt Format. Ist das Möglich?
Vielen Dank im Vorraus
Dennis
9 Antworten
-
Hi, Dennis. Mir ist nicht ganz klar, was genau Du bezweckst. Sollen die ganze Daten der Tabelle in einem Feld angezeigt werden? Deshalb ein Vorschlag und zwei Tips.
TABELLE = Name Deiner Tabelle, die Deine Daten enthält,
ID = Datensatznummer eines Datensatzes.
ALLE Datensätze werden ausgewertet und angezeigt. Je nach Menge Deiner Daten und Felder wird es schnell unübersichtlich. Du mußt noch den Code anpassen mit allen Feldern die Du brauchst und jeweils die # dazwischen als Trennzeichen.
*
join(split(replace(string(for i in select TABELLE do
"Drehzahl Lüfter Wert = " + i.'Drehzahl Lüfter Wert' + "#" + "Drehzahl Lüfter Min = " + i.'Drehzahl Lüfter Min' + "#"+ \\hier weitere Felder eintragen\\
end), ",", ""), "#"), "
")
*
Vielleicht hilft Dir aber einfach das Gestaltungselement “Ansicht” weiter, da trägst Du
select TABELLE
in die Funktion ein. Ist etwas übersichtlicher als Lösung 1 und liefert eine Tabelle Deiner Werte zur Ansicht.Zahlenfelder haben die Möglichkeit der Eingabe einer eigenen Einheit. Damit sparst Du das Feld für die Einheiten.
Gruß Mirko
-
Hey Mirko,
erst mal vielen Dank für die Tipps. Das Problem mit deinem Vorschlag ist dass ich jedes Feld im Code definieren muss, was ich eigentlich vermeiden will (wenn möglich). Ich erklär nochmal kurz was ich vorhabe.
Ich habe viele einzelne Tabellen mit verschiedenen Bauteilen (die in Maschinen verbaut sind). Das können auch gerne mal 50 Tabellen sein, die alle grundsätzlich die gleiche Struktur haben: Bauteil - Version - Eigenschaften. Die Eigenschaften hatte ich ja oben als Beispiel eingefügt (z.B. Drehzahl Lüfter Min). Leider hat jedes Bauteil eigene Eigenschaften, demnach sind auch die Feldername anders, das heißt ich müsste für jede Tabelle eine Ausgabe hardcoden.
Meine Idee ist dass ich ein Dashboard mit 2 Felder (z.B dropdown), bei denen ich Maschine und Version auswählen kann, und mir dann die sich dort befindenen Werte mitsamt Feldnamen angezeigt werden. Das Ziel ist ein Dashboard mit 5 - 10 paaren dieser Maschinen und Versionauswahl felder, bei denen ich dann viele Bauteileeigenschaften auf einen Blick sehe.
Natürlich kann ich auch in jede Untertabelle gehen und mir die Daten zusammen suchen, aber das wäre wesentlich umständlicher. Ich hoffe das mein Vorhaben jetzt verständlicher ist. Grundsätzlich würde mir ich mir eine Schleife vorstellen, die in eine bestimmte Tabelle geht, und dort jedes einzelne Feld (egal wie viele) durchgeht und lesbar auflisted.
Grundsätzlich finde ich den Vorschlag mit dem "Ansicht" Feature nicht schlecht, leider passen so viele Werte nicht wirlich auf einen horizontale Ansicht. Gäbe es eine Möglichkeit die Eigenschaften als Zeilen anstatt Spalten anzuzeigen?
Gruß Dennis
-
Achja, der Tipp mit den Einheiten für Zahlenfelder war Gold wert!
-
Hi Dennis. Ich kann Dir nur so antworten, wie mein Wissensstand ist. Wenn Du Abfragen über 50 Tabellen durchführen willst wird es wahrscheinlich kompliziert. Es gibt die dokumentierte, inoffizielle Funktion eval(), die ich bisher noch nicht sinnvoll zum laufen gebracht habe. Mit ihr könnte man per Variable auf verschiedene Tabellen zugreifen. Wie gesagt, bei mir klappt die Syntax aus der Referenz nicht. Dann hättest Du aber immer noch das Problem mit den vielen Spalten in der Ansicht. Und eine komplexe for-schleife über viele Tabellen mit eval() will ich mir gar nicht vorstellen, da schwirrt mein Kopf von den ganzen Anführungszeichen.
Okay. Was würde ich machen? Wahrscheinlich würde ich mir eine Supertabelle (Maschinenteile) anlegen für alle Teile. Dann alle Tabellen importieren und vielleicht würde ich dann noch Untertabellen erstellen, die bestimmte Eigenschaften (Drehzahl) auslagern (wie bei Telefonnummern in Kontakten). Dann sind Abfragen deutlich einfacher und können durch Bedingungen bestens gefiltert werden durch Deine Auswahlfelder.
Im Ganzen sieht es für mich nach einer Problematik der Tabellenstruktur, aber vielleicht bekommst Du ja noch anderen Input, wenn Dein Thread jetzt wieder oben steht ;.) Mirko
-
Hallo Dennis
wenn Du das so haben möchtest wie oben gezeigt, mit zwei Auswahlfeldern und einem dynamischen Feld welches Dir die Eigenschaft je nach Auswahl anzeigt, dann musst Du für jedes Bauteil eine Untertabelle (zB. namens "Eigenschaften") anlegen statt einzelner Felder. In dieser Untertabelle gibt es nur zwei Felder: Textfeld "Variable" und Zahlen-(oder Text)feld Wert. Diese füllst Du bei dem einen Bauteil mit:
Variable: Drehzahl Lüfter, Wert 70
Variable: Drehzahl Min, Wert: 0
usw...
bei dem andern Bauteil dann eben mit:
Variable: Schnecke Laufzeit, Wert 5
Du kannst dann mit einer Schleife immer auf die Untertabelle "Eigenschaften" eines jeden Datensatz zugreifen den Du über deine Auswahlfelder aussuchst.
Entweder legst Du in deinem Dashbord ein Funktionsfeld an, welches Dir durch die untertabelle des ausgesuchten Bauteils iteriert oder Du machst Dir im Bauteil selbst ein Funktionsfeld, welches Dir als Text schon alle möglichen Eigenschaften aus der Untertabelle zusammenstellt und als Text ausgibt...
for p in Eigenschaften do
p.(Variable + " = " + Wert "
"
) end
Der Zeilenumbruch nach Wert muss tatsächlich ein ENTER in Anführungsstrichen sein...
-
Hallo, Problem ist halt, dass sich Feldbezeichnungen nicht (ohne weiteres) auslesen und in Skripten verwenden lassen. Man muss also immer zusätzlichen manuellen Aufwand betreiben, um sich die Bezeichnungen und Werte in der gewünschten Form untereinander anzeigen zu lassen.
Eine weitere Möglichkeit wäre, die Feldbezeichnungen im Stammdatenformular auszublenden und statt dessen in Funktionsfeldern anzeigen zu lassen.
Wenn es sich bei den anzuzeigenden Werten wie in obigem Beispiel hauptsächlich um Zahlen handelt, dann würde ich aber auch versuchen, das mit dem Gestaltungselement "Ansicht" zu lösen und als Spaltentitel sinnvolle Abkürzungen für die Feldbezeichnungen zu finden. Dann kriegt man auch in der Breite eine Menge Infos unter.
Ansonsten gibt es seit dem letzten Update ja auch die Möglichkeit, Verknüpfungen "Eingebettet" als Formular anzeigen zu lassen. Dann sieht man auch alle Daten des verknüpften Datensatzes. Vielleicht lässt sich das für den Zweck nutzen.
-
Vielen Dank euch für die Hilfestellung! Nach einigem Rumprobieren hab ich die Datenbank jetzt etwas anders strukturiert und nutze jetzt die Ansicht-Funktion. Funktioniert auch sehr gut, nur habe ich noch eine Frage, die zwar nicht lebenswichtig ist, aber trotzdem interessant wäre.
Ich nutzte jetzt eine ziemlich simple struktur. Eine Tabelle "Bauteile", mit einer Untertabelle "Version", die dann eine Untertabelle "Parameter" beinhaltet. In der letzten Untertabelle "Parameter" werden die eigentlich interessanten Informationen gespeichert: immer als Wert - Min - Max - Einheit.
Zum auslesen habe ich jetzt ein Dashboard mit einer einzelnen Ansichten:
Jede Ansicht wird so "gesteuert":
let V1 := text('Version Kühler');
(select Bauteil)[Name = "Kühler"].Version[Version = V1].ParameterAlso zeigt jede Ansicht die Parameter eines bestimmen definierten Bauteils mit einer ausgewählten Version. Gäbe es eine Möglichkeiten die Daten der 3 Ansichten in eine zu überführen? Im grunde sind das ja alles nur bestimmte Auswahlkriterien der "Parameter" - Untertabelle.
Würde mir soetwas vorstelle: (select Bauteil)[Name = "Kühler"].Version[Version = V1].Parameter AND (select Bauteil)[Name = "Pumpe"].Version[Version = V2].Parameter .....
Geht sowas mit der richtigen Anwendung von "Select"? Hab dazu leider nichts gefunden.
Vielen Dank auf jeden Fall. Bin schon wesentlich weiter als am Anfang.
Dennis
-
Hi Dennis. Vielleicht so:
*
let versK := text('Version Kühler);
let versP := text('Version Pumpe);
let versR := text('Version Rost);
(select Version)[Bauteil.Name = "Kühler" and Version = versK or Bauteil.Name = "Pumpe" and Version = versP or Bauteil.Name = "Rost" and Version = versR]
*
oder nur (select Version), dann hast Du alle Daten, wenn die Tabellen in der Weise verknüpft sind Bauteil -> Version -> Parameter.
-
Das klappt bei mir leider nicht. Sobald ich mehrere OR-statements habe bleibt die Ansicht leer. Macht aber nichts, bin auch so zufrieden mit der Lösung die ich jetzt habe.
Vielen Dank für die Hilfe Mirko. Hat sehr geholfen.
Grüße Dennis
Content aside
- vor 3 JahrenZuletzt aktiv
- 9Antworten
- 721Ansichten