Antwort auf: Datenbank Textfelder

Startseite Foren Deutsches LiveCode-Forum Datenbank Textfelder Antwort auf: Datenbank Textfelder

#4680
Klaus Major
Administrator

    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