DATAGRID

Schlagwörter: 

Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #12684
      wupp66
      Teilnehmer

        Hallo zusammen, ich bin so langsam an verzweifeln, ich habe ein Datagrid Feld mit Inforationen gefüllt aus einer CSV-Datei. Klappt wunderbar. Meine Datagrid besteht aus 4 Spalten. Wie bekomme ich meine Daten jetzt angezeigt ? Ich brauche zwei Suchfunktionen, die die erste und zweite Spalte jeweils durchsuchen. Das heißt ich gebe z.B. einen Namen an und möchte die dazugehörige Nummer aus Spalte 1 finden, bzw. ich gebe eine Nummer ein und möchte den Namen aus der Spalte 2 finden.
        Angezeigt werden sollen aber hinterher alle 4 Spalten.
        Kann mir vielleicht jemand helfen, bin völliger Anfänger mit Livecode.
        Vielen Dank schon mal im Vorraus.
        gruß Andreas

      • #12817
        MichaelS
        Teilnehmer

          Hallo Andreas,
          schau dir mal diesen Link an…

          DataGrid – eine vielseitige Tabelle

          Da ist eigentlich gut ,und auf deutsch, erklärt wie man mit dem DataGrid umgeht.
          Ich bin auch erst ein Jahr dabei, aber ich habe mich damit in die Thematik eingelesen.

          Gruß
          Michael

        • #12857
          Klaus Major
          Administrator

            Hallo Andreas,

            willkommen im Forum!

            Rein rhetorische Frage: Warum suchen sich Anfänger in LC immer das komplizierteste und am schwierigsten zu beherrschende Objekt, das Datagrid, als Startpunkt aus? 😎

            Du schreibst:

            ich habe ein Datagrid Feld mit Inforationen gefüllt aus einer CSV-Datei. Klappt wunderbar. Meine Datagrid besteht aus 4 Spalten. Wie bekomme ich meine Daten jetzt angezeigt

            Wenn die Daten schon im Datagrid sind, werden sie doch auch angezeigt?

            Wie heissen Deine Spalten im Datagrid? Bitte immer so viele Infos wie möglich liefern, je eher und besser können wir helfen!

            Du kannst schon mal zwei Buttons erstellen für Deine oben aufgezählten Aufgaben.

            Ich empfehle, hier das PDF mit der Datagrid Dokumentation herunterzu laden und ungefähr 20 Mal durchzulesen. Dann sacken lassen und noch 20 Mal zu lesen, so mache ich das immer, wenn ich ein Datagrid benutzen muss! 😀
            http://lessons.livecode.com/m/datagrid
            Ganz klein links unter den “Topics”.

            Gruß

            Klaus

          • #12904
            wupp66
            Teilnehmer

              Guten Abend ihr lieben Forum Besucher 🙂
              zuerst einmal vielen Dank für die schnellen Antworten, ich werde mich morgen mal dran setzten und euere Tipps befolgen.
              Zu Klaus Major : Warum suchen sich Anfänger in LC immer das komplizierteste und am schwierigsten zu beherrschedeObjekt, das Datagrid, aus Startpunkt aus. Diese Frage möchte ich dir auch gerne beantworten. Meine App soll eine Informationsapp, für den Fachbereich in meiner Firma werden. Da wir nicht immer aufs Internet zugreifen können, möchte ich die Informationen gerne in der App speichern. Sicherlich würde mir da eine Tabelle reichen, in der ich dann suchen kann, aber wo ich auch suche, die Tabelle als solches wird wonirgends richtig besprochen, sondern es wird immer aufs Datagrid verwiesen. Darum bin ich auf auf Datagrid gekommen. Zum anderen, ja meine Daten werden im Datagrid angezeigt, aber dieses Datagrid soll gar nicht sichtbar sein, sondern nur die gewünschten Daten, die ich gerade suche.
              Es geht hierbei um Daten von Haltestellen, denen eine Nummer zugeordnet ist.
              Mit diesem Script lese ich die Daten ein
              on mouseUp
              put empty into fld “Ausgabe”
              ## Deklarieren der Variablen ist nur erforderlich, wenn Du “Strict Compilatiuon Mode”
              ## in den Voreinstellungen für den Skript Editpr angekreutzt hast!
              ## local tFileName, tFileContents
              answer file “Bitte eine CSV-Datei zum Import auswählen” with type “comma Separated Values|csv|CSV”

              ## Ich vermeide längere IF THEN END IF Klauseln, wo immer möglich 🙂
              ## User hat CANCEL geklickt, es gibt also keinen Grund hier und jetzt weiter zu machen!
              if the result = “cancel” then
              exit mouseup
              end if

              put it into tFileName
              ## Inhalt der Datei in Variable lesen
              put URL (“file:” & tFileName) into tFileContents

              ## Datagrids benötigen TAB getrennte Werte:
              replace comma with tab in tFileContents

              set the dgText of grp “tabelle” to tFileContents

              put tfileContents into fld “Ausgabe”
              end mouseUp

              Funktioniert einwandfrei.
              Das Datagrid sieht folgendermaßen aus:
              Epon | Hst | Wabe | TSP

              das sind die Überschriften
              gesucht werden soll entweder nach der Epon Nr, oder nach der Haltestelle

              Wie gesagt ich mache mich morgen noch mal dran und gebe dann nochmal Rückmeldung. Wenn jemand natürlich eine bessere Lösung hat – immer her damit. Nochmals vielen Dank für die Hinweiße und einen schönen Abend allen.
              Gruß
              Andreas

            • #13009
              Klaus Major
              Administrator

                Hi Andreas,

                vielleicht schlägst Du noch mal “rhetorisch” im Lexikon nach. 🙂

                Mit diesem Script lese ich die Daten ein
                on mouseUp

                end mouseUp
                Funktioniert einwandfrei.

                Klar, ist ja auch von mir! 😀

                OK, das Datagrid hat ein paar eingebaute Handler und Funktionen, die Deinen Wünschen entsprechen. Workflow wie folgt:
                1. Du kannst dem Datagrid sagen, gib mir mal den INDEX oder die LINIE, in der die Spalte XYZ den Wert “abc” hat.
                2. Das Datagrid liefert Dir dann in -> THE RESULT den Index bzw. die Zeilennummer der gesuchten “Records” zurück. Damit ausgerüstet, holst Du Dir dann die anderen Daten aus dieser Zeile.
                3. Beispiel

                ...
                put "4711" into tHaltestelle
                ## Da die LABELS (Spalgtenüberschrifeten) anders sein können als der Name der Spalte, 
                ## bitte hier den echten Namen verwenden:
                put "hst" into tSpalte
                
                ## Suchauftrag abschicken:
                dispatch "FindLine" to grp "Dein Datagrid hier..." with tSpalte, tHalteStelle
                ## In dieser Zeile im DG wurde was gefunden:
                put the result into tGefundeneZeile
                
                ## Diese Nummer nun verwenden, um den Rest aus dieser Zeile zu holen:
                put the dgDataOfLine(tGefundeneZeile) of grp "Dein Datagrid hier..." into tArray
                
                ## Wir haben die Daten nun in einem Array -> tArray
                ## Nun die einzelnen KEYS auslesen
                ## Epon | Hst | Wabe | TSP
                put tArray["Epon"] into fld "aktuelle Epon-Nummer"
                put tArray["Hst"] into fld "aktuelle Haltestellen-Nummer"
                put tArray["Wabe"] into fld "aktuelle Wabe-Nummer"
                put tArray["TSP"] into fld "aktuelle TSP-Nummer"
                ...

                Im dictionary steht leider nur “FindIndex”, aber “FindLine” funktioniert genaus so, aber eben mit der Zeilennummer, die nicht = der INDEX Nummer sein muss, kann, muss aber nicht.

                Yo, viel Spaß damit, schön sacken lassen und bei Bedarf weiter fragen. 🙂

                Gruß

                Klaus

              • #13081
                wupp66
                Teilnehmer

                  Hallo nochmal, so ganz habe ich das noch nicht verstanden, schade das es über Datagrid keine Bücher in Deutsch gibt.
                  put “4711” into tHaltestelle

                  4711 ist dabei der Wert den ich suche ? und tHaltestelle die Variable ?

                  put “hst” into tSpalte

                  und wozu dient dann diese Zeile.
                  ich check es einfach nicht.

                  on mouseUp
                  put the dgHilitedLines of grp “Tabelle” into tline
                  put the dgDataOfLine[tline] of grp “Tabelle” into tArray
                  put fld “Suche” into tdatasuche
                  dispatch “FindLine” to grp “Tabelle” with tdatasuche
                  put the result into tGefundeneZeile
                  end mouseUp

                  ich hatte es jetzt mal so versucht nachdem ich mit deinem Beispiel nicht weiterkam
                  das Field “Suche” ist dabei das Feld indem ich den Wert eingebe, den ich suche. Das ist der einzige Wert der in der Variable tDatasuche angezeigt wird. Alle anderen Variablen bleiben leer, also weder tline, noch tArray bekommt ein Wert noch tGefundeneZeile hat einen Wert.

                  Muss ich da irgendwie eine Schleife einbauen?

                  Lieben Gruß
                  Andreas
                  und sorry ich habe früher mal in Basic programmiert und mein Englisch ist nicht das allerbeste, aber wenn ich es einmal begriffen habe wie ich mir die gesuchten Daten anzeigen lassen kann, dann kann ich das auch auf andere Tabellen umsetzen.

                • #13147
                  wupp66
                  Teilnehmer

                    So nochmal eine Rückmeldung.
                    Drüber geschlafen, nochmal alles durchgelesen und Punkt für Punkt durchgegangen.
                    Es funktioniert, wenn man halt die richtigen Felder mit den richtigen Variablen versieht.
                    Kleine Ursache große Wirkung.

                    Danke nochmals für die schnelle Hilfe und die ganzen Hinweise

                    lieben Gruß
                    Andreas

                  • #13153
                    Klaus Major
                    Administrator

                      Hallo Andreas,

                      jaja, Du wolltest ja unbedingt ein Datagrid benutzen! 😀

                      put “4711” into tHaltestelle
                      4711 ist dabei der Wert den ich suche ? und tHaltestelle die Variable ?
                      put “hst” into tSpalte

                      Ja, Du wolltest doch anhand eines Wertes die anderen Daten aus diesem “Datensatz” herausfinden.
                      tHaltestelle ist die Variable, die den Wert 4711 enthält.
                      -> hst ist der Name der Spalte (column) im Datagrid, der diese Nummern enthält, zumindest habe ich das angenommen..

                      ABer Du hast es ja inzwischen verstanden, ist halt etwas komplex. 🙂

                      Gruß

                      Klaus

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