Startseite › Foren › Deutsches LiveCode-Forum › Frage zu DataGrid › Antwort auf: Frage zu DataGrid
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
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