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
        Administrator

          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
              Administrator

                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
                  Administrator

                    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
                        Administrator

                          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.