Datenbank Textfelder

Startseite Foren Deutsches LiveCode-Forum Datenbank Textfelder

Ansicht von 4 Antwort-Themen
  • Autor
    Beiträge
    • #4675
      matglo
      Teilnehmer

      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

    • #4680
      Klaus Major
      Verwalter

      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

    • #4682
      Klaus Major
      Verwalter

      Und so sieht das aus:
      Datagrid mit zwei zeilen pro Feld

      Mist, klappt wohl nicht mit Bildern in der Dropbox…

    • #4687
      Klaus Major
      Verwalter

      Dann musst Du natürlich auch die „row height“ und Schriftgröße entsprechend einstellen, damit Du auch alle Zeilen auch sehen kannst! Logisch, oder? 🙂

    • #4694
      matglo
      Teilnehmer

      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

Ansicht von 4 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.