DataGrid – Daten auslesen / Spalte

Startseite Foren Deutsches LiveCode-Forum DataGrid – Daten auslesen / Spalte

Ansicht von 10 Antwort-Themen
  • Autor
    Beiträge
    • #22949
      skasubek
      Teilnehmer

      Hall liebe LiveCode Gemeinde,

      ich bin noch recht jungfreulich was LiveCode angeht. Nun habe ich aber folgendes Problem. Ich nutze ein DataGrid um Daten aus einer MySQL Datenbank auszulesen und anzuzeigen. Klappt prima.

      Ich füge mit LiveCode auch Daten hinzu. Klappt Prima.

      Nun möchte ich gerne im DataGrid eine markierte Zeile löschen. Dies funktioniert auch.

      Aber ich möchte und muss gleichzeitig aus der markierten ZEILE auch eine bestimmte ZELLE auslesen. In dem Beispiel die „ID“ um diese beim DELETE Befehl für MySQL mit zu übergeben.

      Wie kann ich das anstellen. Hier mein Code bisher…

      on MouseUp 
         put the dgHilitedIndex of group "tabelle" into loeschen
         send "DeleteIndex loeschen" to group "tabelle"
         
         put revOpenDatabase("mysql", "", "", "", "") into dbid
         
         put "DELETE FROM termine WHERE ID = :1" into sql1 
         revExecuteSQL dbid, sql1, "loeschen"
               
         
      end MouseUp

      Hier noch ein Bild der DataGrid

      DataGrid
      DANKE

    • #22951
      Klaus Major
      Verwalter

      Hallo skasubek,

      willkommen im Forum!

      Selbstredend musst Du die Info aus der Zeile herauspulen, bevor Du sie löschst.
      Ich weiß, das ist Dir schon klar. 😉

      Ich nehme mal an, die Spatte heisst auch -> ID
      Dann sollte es so gehen:

      on MouseUp 
         put the dgHilitedIndex of group "tabelle" into loeschen
         
         ## Zuerst die Daten der gesamten Zeile auslesen:
         put the DGDATOFINDEX[loeschen] of grp "tabelle" into tData
         
         ## tDate enthält nun ein Array mit den Daten dieser Zeile
         ## Nun die ID Spalte herausziehen:
         put tData["ID"] into dieID
         
         ## Jetzt getrost:
         send "DeleteIndex loeschen" to group "tabelle"
         
         put revOpenDatabase("mysql", "", "", "", "") into dbid
         
         ## dieID anfügen:
         put ("DELETE FROM termine WHERE ID = " & dieID) into sql1 
         revExecuteSQL dbid, sql1   
      end MouseUp

      Gruß

      Klaus

    • #22953
      foto2004
      Teilnehmer

      Ich mache es z.B.
      (dank der Hilfe von Klaus)
      so dass ich mir ja die Daten aus dem DataGrid vorher schon mal irgendwo schön aufgedröselt anzeigen lasse und danach mir die bereits angezeigte ID schnappe und den DB Eintrag lösche der diese ID hat.

      Der code der meine Anzeigefelder füllt:

      on selectionChanged
         put the dgHilitedLines of me into zeile
         put zeile
         put the dgDataOfLine[zeile] of me into tData
         put the keys of tData into tKeys
      
         LOCK SCREEN
         
         repeat for each line tKey in tKeys
            if tKey = "bild" then
               set filename of image "imgBild" to tData["bild"]
            else
                put "fld_" & tKey into tFeldname
               put tData[tKey] into fld tFeldname
            end if
         end repeat
         unlock screen
      end selectionChanged 

      danach habe ich einfach einen Del. Button mit diesem Code:

      
      on delDB 
         sqlCon
         put text of fld fld_id into upID
         put "DELETE FROM huhn WHERE id="&upID&"" into sql
         revExecuteSQL connID, sql
         if the result <> EMPTY then
            answer the result &" Datensatz Nr.: "&upID&" wurde gelöscht!"
         end if
         put filename of img"imgBild" into zuLoeschen
         --put filneame of image"imgBild" into delFile 
         if filename of img"imgBild" <> EMPTY then
            delete file zuLoeschen
         end if
         revCloseDatabase connID
         displayDB
         answer "OK der ist weg"
      end delDB
      

      der Button ruft „delDB“ auf

    • #22955
      skasubek
      Teilnehmer

      Danke für deine Antwort. Leider funktioniert es noch nicht wirklich. Ich habe jetzt einen ExtraButton genommen und ein Textfeld. In diesem wollte ich mir nur die ID anzeigen lassen. Aber es passiert nichts …

      on MouseUp 
         put the dgHilitedIndex of group "tabelle" into loeschen
         
         ## Zuerst die Daten der gesamten Zeile auslesen:
         
         put the DGDATOFINDEX[loeschen] of group "tabelle" into tData
         
         ## tDate enthält nun ein Array mit den Daten dieser Zeile
         ## Nun die ID Spalte herausziehen:
         
         #put tData["ID"] into dieID
         
         put dieID into field "textfeld"
         
      end MouseUp

      Die Spalte heißt aber ID in meinem DataGrid … Siehe Bild oben. Woran kann es liegen?

    • #22957
      Klaus Major
      Verwalter

      Tja, DIESE Zeile solltest Du nun wirklich nicht auskommentieren, gelle? 😀

      ...
       #put tData["ID"] into dieID
      ...
    • #22987
      skasubek
      Teilnehmer

      Danke. Es geht aber leider dennoch nicht 🙁

      Ich möchte doch nur von der angeklickten Zeile den Werte der Spalte „ID“ auslesen …

      Hat noch jemand eine Idee? 🙂

      on MouseUp 
         put the dgHilitedLines of me into zeile
         put zeile
         put the dgDataOfLine[zeile] of me into tData
         put the keys of tData into tKeys
         
         put tData["ID"] into IDD
         
         put IDD into field "textfeld"
         
      end MouseUp
      
    • #22990
      Klaus Major
      Verwalter

      Ich habe das hier nachgebaut und es funktioniert wie gewünscht!

      Es geht aber leider dennoch nicht

      Das ist eine recht vage Fehlerbeschreibung, was genau passiert denn bzw. was endet in Feld „textfeld“?
      Du hast Dein Skript doch der DataGrid Gruppe hinzugefügt, oder einem Button AUSSERHALB des Datagrids?
      Es klappt!

    • #22992
      skasubek
      Teilnehmer

      Hm. Ich habe meine App mal als Bild angefügt.

      Zum Test wollte ich jetzt auf den Button (1) klicken um aus dem DataGrid (2) die markierte Zeile auszulesen und da insbesondere halt die „ID“. Und diese ID sollte zur Kontrolle im Textfeld (3) angezeigt werden.

      Und das geht mit dem o.g. Code leider nicht.

      Das Skript liegt hinter dem Button.

      Wie kann ich es der DataGrid Gruppe hinzufügen?

    • #22996
      skasubek
      Teilnehmer

      Ok. Verstanden. Jetzt funktioniert es. Jetzt muss ich die die ID nur noch als globale Variable speichern um sie mit einem Button „Termine löschen“ nutzen kann. 🙂

    • #22998
      Klaus Major
      Verwalter

      AHA! 🙂

      OK, in einem „auswärtigen“ Button funktioniet OF ME natürlich nicht, denn mit ME ist das Datagrid gemeint!
      Im Button muss es heissen:

      on MouseUp 
         put the dgHilitedLines of grp "tabelle" into zeile
         put zeile
         put the dgDataOfLine[zeile] of grp "tabelle" into tData
         ## put the keys of tData into tKeys
         
         put tData["ID"] into IDD 
         put IDD into field "textfeld"   
      end MouseUp

      Wie kann ich es der DataGrid Gruppe hinzufügen?

      Rchts-Klick auf Dein Datagrid -> Edit script
      Das dann aber wieder mit OF ME, geht aber auch mit dem Namen wie oben!

    • #23002
      skasubek
      Teilnehmer

      Es funktioniert einwandfrei und macht was es soll. 🙂 Vielen lieben DANK!!

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