Antwort auf: Frage zu DataGrid

Startseite Foren Deutsches LiveCode-Forum Frage zu DataGrid Antwort auf: Frage zu DataGrid

#17159
Klaus Major
Administrator

    OK, hier erst mal ein paar Tips:
    1. Der Übersichtlichkeit halber (viele Verschachtelungen!), steige ich aus einem IF THEN so schnell wie möglich aus, so wie hier:

    On mouseup
       If kein Datensatz markiert then
          Answer "Bitte Datensatz markieren"
          exit to top
       end if
       ## Weitere Anweisungen hier...
    end mouseup

    Also kein ELSE nötig.

    2. Passt nun nicht inbedingt zu Deinem Problem, aber Du kannst Dir eine Menge Tipparbeit sparen, wenn Du mit DGDATA bzw. dgDataOfLine[zeilennummer] arbeitest, das liefert dann ein ARRAY zurück, was Du einfach abfragen kannst.

    Die KEYS dieses Array sind die Namen Deiner Spalten!

    on mouseUp 
      put the dgHilitedLines of me into zeile
      put the dgDataOfLine[zeile] of me into zeilenArray
    
      answer zeilenarray["datum"]
      answer zeilenarray["auto"]
      answer zeilenarray["restladung"]
      ## etc.   
    end mouseup

    OK, nun zu Deinem eigentlichen Problem:
    ändern = UPDATE
    löschen = DELETE

    Genaue Syntax hier:

    Aber dazu musst Du in SQL genau sagen WELCHER datensatz geändert oder gelöscht werden soll mit der WHERE Klausel.

    Guter Tip:
    Erstelle IMMER einen Index für Deine Tables (primary key!), also eine automatische fortlaufende Nummer, ruf diese auch immer mit ab und speichere sie in einer unsichtbaren Spalte im Datagrid. Auf diese Weise weisst Du immer genau, was Du bei WHERE schreiben musst.

    Wenn Du diese Info nicht hast, und ALLE Einträge eines Datensatzes geändert werden, stehst Du nämlich auf dem Schlauch, da Du dann keine Relation mehr zu dem dazugehörigen Datensatz hast. Verstehst Du?

    Gruß

    Klaus