Startseite › Foren › Deutsches LiveCode-Forum › Datenbank Textfelder › Antwort auf: Datenbank Textfelder
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