Startseite › Foren › Deutsches LiveCode-Forum › Datenbank Textfelder
- Dieses Thema hat 4 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 7 Monaten von matglo.
-
AutorBeiträge
-
-
März 16, 2018 um 14:09 Uhr #4675
Hallo,
folgende Frage:
Ich habe eine Datenbankabfrage mit einem mehrzeiligen Textfeld (mediumtext in mysql).
Ich möchte das Ergebnis der Abfrage einem datagrid zuweisen. Das erwartet ein Array mit “tab” als Trenner der einzelnen Felder und “return” als Trenner für die Zeilen(Datensätze).
Das Problem:
Im mehrzeiligen Textfeld können durchaus auch schon “Returns” enthalten sein, die durch die Funktion revDataFromQuery leider auch entsprechend erkannt werden. Die Datensätze kommen damit durcheinander…
Jetzt könnte man revDataFromQuery ein anderes Zeichen als Zeilentrenner mitgeben. Aber damit kommt das datagrid wiederum nicht klar. Oder irre ich ?Gibt es eine andere Funktion zur Abfrage der Datenbank. Von php kenne ich es so, dass ein zweidimensionales Array zurückgegben wird bei dem jedes Feld über den Namen angesprochen werden kann.
Hat jemand eine Idee ?
Danke.
Gruß
Mathias -
März 16, 2018 um 16:37 Uhr #4680
Hallo Matthias,
willkommen im Forum!
Ich möchte das Ergebnis der Abfrage einem datagrid zuweisen. Das erwartet ein Array mit “tab” als Trenner der einzelnen Felder und “return” als Trenner für die Zeilen(Datensätze).
Das ist so nicht ganz richtig!
Ein Datagrid vom Typ “Table” erwartet entweder eine TAB und CR getrennte Textliste
-> set the DGTEXT of grp “datagrid” to TABundCRgetrennteTextListe
oder ein Array
-> set the DGDATA of grp “datagrid” to tArray***
Das ist schon ein Unterschied!*** Format:
tArray[1][“name der ersten Spalte”]
tArray[2][“name der zweiten Spalte”]
…
tArray[N][“name der letzen Spalte”]Intern wandelt das Datagrid die TAB und CR getrennte Liste sowieso in ein Array um, bevor das Grid mit Text gefüllt wird.
Das bedeutet, wenn Du “the DGDATA” mit einem Array setzt, können die einzelnen Felder durchaus aus mehreren Zeilen, also mit CR drin, enthalten.
Das wiederum bedeutet, wenn Du Deine Datensätze aus der Datenbank holst, aber NICHT die Default-trenner TAB und CR benutzt, dann den Kram per Skript in ein Array umwandelst und THE DGDATA setzt, dann klappt das, was Du vorhast.
Habe ich hier getestet und funktioniert!
Beispiel (schnell und schmutzi):
Ein Datagrid mit zwei Spalten c1 und c2 vom Typ TABLE
Ein Feld “eins” mit zwei Zeilen per CR getrennt und diesem Mouseup Skript:on mouseUp pMouseButton repeat with i = 1 to 10 put fld "eins" into tArray[i]["c1"] put fld "eins" into tArray[i]["c2"] end repeat set the DGDATA of grp "dg1" to tArray end mouseUp
Et voila, ein Datagrid vom Typ TABLE mit jeweils ZWEI Zeilen pro Feld.
Capisce? Wenn nicht, melde Dich wieder.
Gruß
Klaus
-
März 16, 2018 um 16:38 Uhr #4682
Und so sieht das aus:
Mist, klappt wohl nicht mit Bildern in der Dropbox…
-
März 17, 2018 um 18:12 Uhr #4687
Dann musst Du natürlich auch die “row height” und Schriftgröße entsprechend einstellen, damit Du auch alle Zeilen auch sehen kannst! Logisch, oder? 🙂
-
März 18, 2018 um 13:15 Uhr #4694
Hallo Klaus,
vielen Dank für die ausführlichen Antworten.
Das bringt mich weiter. Ich hatte gehofft es gibt in LiveCode eine Funktion für die Datenbankabfrage, die ein entsprechendes Array zurück geben kann. Aber es wird auch so funktionieren.
Ich werde das mal probieren und Rückmeldung geben.
Gruß
Mathias
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.