Daten in Datagrid weiter nutzen?

Startseite Foren Deutsches LiveCode-Forum Daten in Datagrid weiter nutzen?

  • Dieses Thema hat 12 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahre von Wolli.
Ansicht von 12 Antwort-Themen
  • Autor
    Beiträge
    • #2844
      Wolli
      Teilnehmer

      Hallo,

      ich arbeite gerade an einer APP, die Daten in SQLite schreibt. Diese Daten z.B. Ortsname lese ich dann aus SQLite in eine Datagrid-Tabelle ein. Jetzt sollen diese Daten z.B. der Ortsname mit Mausklick weiter verwendet werden, z.B. um in ein vorhandenes Pull-Down-Menü automatisch eingelesen zu werden. Wie mache ich das in Datagrid? Ich möchte also ein „aktives“ und variables Pull-Down-Menü erstellen. Oder kann ich die „neuen“ Daten aus SSQLite direkt in das Pull-Down-Menü schreiben, um sie dort zu nutzen?

      Kann mir jemand einen Tipp geben?

      Herzliche Grüße

    • #2853
      Klaus Major
      Verwalter

      Hi Wolli,

      bin mir nicht sicher, ob ich genau verstehe, was Dein Problem ist.

      Selbstredend kannst Du Daten aus einer SQLite Datenbank verwenden, wie Du es möchtest.
      Einen Menübutton „füllst“ Du über seine „text“ Property:

      ## SQL: select „ortsname“ from adressen
      ## put revDataFromQuery(,,tConnectionId,tSQL) into tOrtsnamen
      ## sort tOrtsnamen
      set the text of button „popup buton mit ortsnamen“ to tOrtsnamen

      Meinst Du das?

      Gruß

      Klaus

    • #2861
      Wolli
      Teilnehmer

      Hallo Klaus,

      hat wunderbar funktioniert. Hier das Script.

      global gConnID
      on mouseUp
      connectToDB
      put „select distinct name from reisen“ into tQuery
      put revDataFromQuery(tab,return,gConnID,tQuery) into tRecords
      sort tRecords
      closeDB gConnID
      set the Text of button „Pulldown_1“ to tRecords
      end mouseUp

      —Bis hierher funktioniert alles gut!

      on menuPick pChosenItem

      if pChosenItem is „Borg 2018“ then go to card „eingabeseite“
      else if pChosenItem is „Büsum 2012“ then go to card „eingabeseite“
      else if pChosenItem is „Dannenberg 2015“ then go to card „eingabeseite“
      else if pChosenItem is „Holland 2017″ then go to card „eingabeseite“

      Ab hier habe ich wieder Probleme! Kannst Du mir hier auch weiterhelfen?

      —wie erreiche ich das „automatische“ Einsetzen der Variablen „name“ in die Befehlszeile? Beim Anklicken von z.B. Holland 2017 sollte die Seite „eingabeseite“ aufgerufen werden und „Holland 2017″ in ein Feld auf dieser „eingabeseite“ als Text „automatisch“ eingetragen werden.

      end menuPick

      Vielen lieben Dank

      Wolli

    • #2863
      Wolli
      Teilnehmer

      Hallo Wolli,

      wenn Du Deinen Beitrag als E-Mail schreibst, erreicht er automatisch mich und kommt nicht ins Forum. 🙂

      Am besten wäre es, Du postest die Nachricht noch einmal richtig ins Forum.
      Ansonsten denke ich, Du suchst nach so etwas:
      else if pChosenItem is „Holland 2017″ then

      go to card „eingabeseite“

      put pChosenItem into field „meinFeld“ of card „eingabeseite“

      end if

      Grüße
      Hauke

    • #2865
      Wolli
      Teilnehmer

      Hallo Hauke,

      danke für den Hinweis. Ich werde es posten.

      So meinte ich es allerdings nicht. Das Problem ist, dass ja z.B. „Holland 2017″ erst bei der Eingabe durch den Nutzer erzeugt wird und das Script daher eine „allgemeine Formulierung“ bräuchte.

      Vielen Dank für die schnelle Antwort.

      Wolli

    • #2869
      Klaus Major
      Verwalter

      Hi Wolli,

      kurzer Hinweis zur Effektivität. „Menupick“ handler sind übersichtlicher, wenn man nicht IF THEN ELSE… nimmt, sondern SWITCH CASE…. Wenn Sie mal schauen möchten:

      on menupick pChosenItem
         switch pChosenItem
            case "Borg 2018"
            case "Büsum 2012"
            case "Dannenberg 2015" 
            case "Holland 2017" 
               go to card "eingabeseite"
               break
            case "Sonstwas"
               ## ...
               break
         end switch
      end menupick

      Leider habe ich Dein eigentliches Problem noch nicht genau verstanden.
      Kannst Du bitte mal ein Beispiel geben?

      Gruß

      Klaus

    • #2877
      Wolli
      Teilnehmer

      Hallo Klaus,
      ich versuche es mal mit einem Beispiel:
      – der Nutzer startet die APP das erste Mal, die Datenbank ist leer. Über einen Button „neuer Eintrag“ legt er dann einen ersten Namen z.B. „Test-01″ an. Die Daten werden mit zusätzlichen Einträgen in der Datenbank abgelegt und dann automatisch bei einem Pulldown-Menü (Button „vorhandene Einträge“) eingefügt und sortiert.
      – über den Button „neuer Eintrag“ kann er jetzt beliebig viele neue Namen anlegen, z.B. „Test-02″ oder „Test-03″ etc.. Diese werden in der Datenbank automatisch abglegt und mit einer ID versehen.
      – wird die APP nun genutzt, hat der Nutzer zwei Möglichkeiten:
      1. er klickt auf den Button „neuer Eintrag“, um einen neuen Namen anzulegen
      oder
      2. er klickt auf den Button „vorhandene Einträge“ und findet im Pulldown-Menü alle Namen, z.B. „Test-01″ und „Test-02″ sortiert vor. Zum Laden von z.B. „Test-01″ inclusive der zusätzlichen Daten von der Datenbank (SQL) klickt er dann einfach auf den Namen, es öffnet sich eine neue Seite und er kann die Daten bearbeiten, wie ändern, ergänzen, löschen etc.

      Das funktioniert mit dem Script oben bis hierher auch einwandfrei!
      on menuPick pChosenItem
      if pChosenItem is „Test-01“ then go to card „eingabeseite“
      else if pChosenItem is „Test-02“ then go to card „eingabeseite“

      Mein Problem:
      Die Namen „Test-01“ und „Test-02″ habe ich beim Programmieren in das Script geschrieben. Da diese Namen ja aber erst vom Nutzer angelegt werden, müssten sie „automatisch“ in das Script geschrieben werden, bzw. es müsste einen allgemein gültigen Platzhalter geben.
      on menuPick pChosenItem
      if pChosenItem is „Platzhalter?“ then go to card „eingabeseite“
      else if pChosenItem is „automatisch-eintragen?“ then go to card „eingabeseite“

      Kannst Du mir hier helfen oder bin ich auf dem völlig falschem Weg?
      Herzliche Grüße
      Wolli

    • #2879
      Klaus Major
      Verwalter

      Hi Wolli,

      bin immer noch nicht sicher, ob ich Dich richtig verstehe, aber es sieht so aus, als solltest Du eine so genannte „Lookup table“ managen. Entweder in einer Custom Porperty oder Variable oder meintwegen auch ein verstecktes Feld.

      Das bedeutet, Du verwaltest eine Sammlung von „Paaren“, die Du immer direkt nach Eingabe eines Names des User aktualisieren müsstest:
      Vom User eingegebener Text TAB (oder Komma) Zielkarte
      Dito Nummer 2 TAB eingabeseite2
      Usereintrag3 TAB eingabekarte3

      Dann könntest Du so etwas in das Menu schreiben:

      on menupick tItem
        ## Ich verwende hier eine custom property des Stacks:
        put the cLookUpTable of this stack into tLU
        set itemdel to TAB
        put lineoffset (tItem & TAB,tLU) into Zeilennummer
        put item 2 of line ZeilenNummer into ZielKarte
        go cd Zielkarte
      end menupick

      Verstehst Du das Prinzip?
      Oder habe ich das wieder völlig falsch verstanden? 😀

      Oder ist die Lösung Dienes Problems vielleicht dieses simple Skript:

      on menupick wasauchimmer
         ## wir gehen hier IMMEr zu der Karte:
         go cd "eingabekarte"
      end wasauchimmer

      Man weiß es nicht… 😉

      Gruß

      Klaus

    • #2881
      Wolli
      Teilnehmer

      Hallo Klaus,

      ich glaube, ich habe mich immer noch nicht richtig verständlich gemacht. Vielleicht ist mein Problem ja gar keins oder so banal, dass Du es nicht erkennen kannst. Vielen lieben Dank für Deine Geduld. Ich probiere jetzt noch mal ein wenig – mit Hilfe Deiner Hinweise.
      Vielleicht kommt mir ja Dir Erleuchtung! Falls nicht, meld ich mich wieder – wenn ich darf!

      Herzliche Grüße
      Wolli

    • #2883
      Klaus Major
      Verwalter

      Falls nicht, meld ich mich wieder – wenn ich darf!

      Nein, das möchte ich nicht! 😀

      Mal eine Frage von mir, vielleicht begreife ich es dann:
      Was genau soll passieren, wenn der User irgendeinen Deiner Menüpunkte aufruft:
      Immer das Selbe, egal, WAS gewählt wurde?
      Oder unterschiedliche Aktionen, je nachdem, WAS (welchen Menüpunkt) der User ausgewählt hat?

    • #2885
      Wolli
      Teilnehmer

      Wenn der User einen der Menüpunkte im Pulldown-Menü aufruft soll immer die gleiche Card „Eingabeseite“ geöffnet werden, aber auf dieser Card sollte in einem Feld der jeweilige (unterschiedliche) Name des Menüpunktes eingetragen sein, sozusagen als „Überschrift“.

      Beispiel:

      A. Menüpunkt „Test-01“ klicken – Card „Eingabeseite“ aufrufen – auf der Card „Test-01“ in ein Field schreiben.

      B. Menüpunkt „Test-02“ klicken – Card „Eingabeseite“ aufrufen – auf der Card „Test-02“ in ein Field schreiben.

      C. usw.

    • #2887
      Klaus Major
      Verwalter

      Aha! Aber das hat Hauke doch oben schon angedeutet!?

      on menupick tWhich
        go cd "eingabekarte"
      
        ## Falls es sich immer um das selbe Feld handeln sollte:
        put tWhich into fld "Dein Feldname hier..."
      end menupick

      Falls es sich NICHT immer um das selbe Feld auf der Karte „eingabekarte“ handeln sollte,
      bitte noch mal Bescheid geben. 🙂

    • #2950
      Wolli
      Teilnehmer

      Hallo Klaus,

      vielen Dank nochmals – jetzt funktioniert es.
      Hier das Script:

      >>on menuPick pChosenItem
      go cd „eingabeseite“
      put pChosenItem into field „nameAktuell“ of card „eingabeseite“
      end menuPick<<

      Jetzt wollte ich mir das mal im Simulator ansehen, dabei gleich ein neues Problem:
      der Simulator startet, das „Smartphone“ wird sichtbar, dann aber kein Erfolg. Abbruch mit folgender Meldung: Unable to start simulation: timed out waiting for device to start.

      Mein System:

      macOS High Sierra Version 10.13.1
      LC Version 8.1.7
      X-Code Version 9.0.1

      Hast Du eine Idee?

      HG
      Wolli

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