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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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.