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
        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

        • #4682
          Klaus Major
          Administrator

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

            Mist, klappt wohl nicht mit Bildern in der Dropbox…

          • #4687
            Klaus Major
            Administrator

              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.