![]() |
Datenbank: SQLite • Version: 3.8.0.2 • Zugriff über: UniDAC
SQLite Datensatz löschen - [BUG ?]
Hallo,
ich habe eine SQLite DB. Ich verbinde mich über TUniConnection mit der DB. Ein TUniQuery mit SQL Abfrage. Eine TUniDataSource zeigt auf den TUniQuery. Ein TDBGrid ist mit der TUniDataSource verbunden und zeigt die Daten des Query an. Soweit ist alles OK. Wenn ich jetzt einen Datensatz im angezeigten TDBGrid selektiere dann kann ich diesen per STRG + ENTF löschen :shock: ??? Frage: Wie kann ich dies verhindern ? Habe jetzt zur zusätzlichen Sicherheit im TDBGrid Objektinspektor unter Options dgConfirmDelete angehakt. Danke + Grüße user0815 |
AW: SQLite Datensatz löschen - [BUG ?]
Laß die Finger von Datensensitiven Controls (TDB.....)
Ja das hab ich ernst gemeint. Mit normalen Controls ist das zwar etwas aufwendiger, dafür hast Du aber alles im Griff! Gruß K-H |
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
Zitat:
|
AW: SQLite Datensatz löschen - [BUG ?]
Moin,
das Thema war den Machern von delphi.about.com immerhin einen eigenen Eintrag wert: ![]() Sieht für mich nicht nach der perfekten Lösung aus, könnte aber erstmal helfen, mit dem Thema klar zu kommen. |
AW: SQLite Datensatz löschen - [BUG ?]
Danke.
Ich habe das Grid jetzt auf ReadOnly gesetzt. Das eigentliche Problem ist allerdings das ich den Shortcut nicht kannte... ärgerlich, damned, .... :pale: |
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
Nachtrag: Ist der Wert dgConfirmDelete in den ![]() |
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
Gruß K-H |
AW: SQLite Datensatz löschen - [BUG ?]
Na wenn's für dich gut ist, dann lassen wir's mal gut sein :-D
Das empfiehlt mir Daniel ja sowieso ständig, jetzt kann ich ihn mal damit erfreuen :stupid: |
AW: SQLite Datensatz löschen - [BUG ?]
Ich bin sprachlos.
:cheers: |
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
|
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
|
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
Code:
im dataset bzw. query ondelete Event tun. Das packt das Problem m.E. eher an der "Wurzel".
abort;
Alles was Grid bezogen codiert wird, verhindert nicht das Löschen über andere Controls, [strng][entf] u.U. auch schon, wenn Du ein DBEdit auf die Form ziehst. Falls Du dann doch mal wirklich etwas löschen willst, musst Du das abort mit einer Bedingung versehen. |
AW: SQLite Datensatz löschen - [BUG ?]
Also wenn ich mich richtig erinnere, gibt es gar kein OnDelete, sondern höchstens
![]() ![]() Jetzt würde mich aber doch mal interessieren, welches Problem du bei der von mir präferierten und daher auch vorgeschlagenen Methode siehst. Hat der TE etwa irgendwo geschrieben, daß er das Löschen über alle anderen etwaigen Controls ebenfalls verhindern möchte? Meines Wissens nach nicht :stupid: Ach ja, und wenn du gerade dabei bist, kannst du mir auch gleich mal zeigen, wie man mit einem TDBEdit einen Record löscht. Das würde mich fast noch brennender interessieren wie der Vorteil irgend eines Abort-Befehls im herbeiphantasierten OnDelete-Event :lol: |
AW: SQLite Datensatz löschen - [BUG ?]
@Perlsau
Meine "Erinnerung" hat mich etwas getäuscht. Da mir das tatsächlich nicht ganz klar war, habe ich ja auch extra von "Erinnerung" geschrieben. Es ist natürlich OnBeforeDelete, der geneigte Leser wird bei dem Versuch, den Delete Event zu verdrahten ggF mit etwas(!) Hirnschmalz diese falsche Angabe entdecken und vielleicht auch darauf kommen, dass man besser vor dem Löschen das Löschen abbricht (also BeforeDelete:abort). Und auch ein bloßes DBEdit reagiert nicht auf das Kommand strng entf. Das tut aber bspw. der DBNavigator, vielleicht auch andere datensensitive Komponenten. Ob das für den TE relevant ist oder nicht, kann der sicher selbst entscheiden. Ich glaube nicht, dass es Stil dieses Forums ist, 1:1 Frage Antwort zu spielen, das wird auch Dir wohl geläufig sein. |
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
![]() Unser Kassenwart im Verein macht das ganz ähnlich: Bei einer Vorstandssitzung angesprochen auf die mit zahlreichen Rechtschreib- und Grammatikfehlern angefertigte Bewerbungen für unser Clientel (Arbeitslose und ALG-II-Empfänger), hat er doch glatt behauptet, die Fehler habe er absichtlich eingefügt, damit der jeweilige Empfänger nicht auf den Gedanken verfallen könne, der Bewerber habe seine Bewerbung nicht selbst angefertigt. Dabei ist seine Rechtschreibschwäche längst allen Vorstandsmitgliedern bekannt: Wir wissen, daß er sich gut verkaufen kann, aber nicht wirklich was drauf hat. |
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
Eben nochmal selbst getestet, frisches TDBGrid auf die Form gepackt (nichts an den Property´s geändert) mit der DataSource verbunden, Anwendung gestartet, Datensatz selektiert dann mit STRG + ENTF gelöscht. Es gibt kein DBNavigator oder irgendeine DELETE Anweisung in der Anwendung. |
AW: SQLite Datensatz löschen - [BUG ?]
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du nochmal genau lesen möchtest: Im Zitat ging es um ein TDBEdit und nicht um ein TDBGrid.
Etwas ausführlicher: Ich stelle in den meisten meiner DB-Anwendungen eine Tabelle nebst einem Formular zur Verfügung. Die Tabelle (DBGrid) dient der Auswahl des zu bearbeitenden Datensatzes. Das Eingabe-Formular dient der Änderung des aktuellen bzw. dem Einfügen eines neuen Datensatzes. Dabei ist das DBGrid stets auf ReadOnly, die DB-Eingabefelder dagegen werden in den Read-Write-Modus geschalten, sobald der Anwender das entsprechende Dataset in den Edit- oder Appendmodus versetzt. Will der Anwender den aktuellen Record bearbeiten, schaltet er um in die Formular-Darstellung und betätigt den Edit-Button. Zum Umschalten der der Komponenten habe ich immer eigene Methoden:
Delphi-Quellcode:
// ---------- Schreiben erlaubt -------------------------------------------------------------------------------------------------- Privat
Procedure TFormMain.SchreibenErlaubt; Var FarbeAktuell : TColor; begin GLD.EditModus := True; TS_ToDo_Tabelle.Enabled := False; TS_Kat.Enabled := False; TS_Option.Enabled := False; Navi_Liste.Enabled := False; AL_DB_Close.Enabled := False; AL_ED_Append.Enabled := False; AL_ED_Del.Enabled := False; AL_ED_Edit.Enabled := False; AL_ED_Post.Enabled := True; AL_ED_Cancel.Enabled := True; AL_ED_Find.Enabled := False; AL_ED_Import.Enabled := False; AL_ED_Export.Enabled := False; AL_ED_Print.Enabled := False; AL_TXT_SchriftDlg.Enabled := True; AL_TXT_Normal.Enabled := True; AL_TXT_Fett.Enabled := True; AL_TXT_Kursiv.Enabled := True; AL_TXT_FettKursiv.Enabled := True; AL_TXT_Unter.Enabled := True; AL_TXT_FettUnter.Enabled := True; AL_TXT_KursivUnter.Enabled := True; AL_TXT_Durch.Enabled := True; AL_TXT_Schwarz.Enabled := True; AL_TXT_Rot.Enabled := True; AL_TXT_Gruen.Enabled := True; AL_TXT_Blau.Enabled := True; GLD.URec.Sicht := 0; Sichtbar; AL_SICHT_Alle.Enabled := False; AL_SICHT_Jahr.Enabled := False; AL_SICHT_Monat.Enabled := False; AL_SICHT_Woche.Enabled := False; AL_SICHT_Heute.Enabled := False; Bit_Append.Enabled := False; Bit_Delete.Enabled := False; Bit_Edit.Enabled := False; Bit_Post.Enabled := True; Bit_Cancel.Enabled := True; Bit_Find.Enabled := False; Bit_Import.Enabled := False; Bit_Export.Enabled := False; Bit_Print.Enabled := False; DBEd_Titel.ReadOnly := False; DBLU_Kategorie.ReadOnly := False; DBDatePick.ReadOnly := False; DBTimePick.ReadOnly := False; DBCheck_OK.ReadOnly := False; DBRich_Notizen.ReadOnly := False; If GLD.AppendModus Then FarbeAktuell := GLD.FarbeAppend Else FarbeAktuell := GLD.FarbeEdit; DBEd_Titel.Color := FarbeAktuell; DBLU_Kategorie.Color := FarbeAktuell; DBDatePick.Color := FarbeAktuell; DBTimePick.Color := FarbeAktuell; DBCheck_OK.Color := FarbeAktuell; DBRich_Notizen.Color := FarbeAktuell; StatusBarAktuell; DBEd_Titel.SetFocus; end; // ---------- Schreiben verboten ------------------------------------------------------------------------------------------------- Privat Procedure TFormMain.SchreibenVerboten; begin GLD.EditModus := False; GLD.AppendModus := False; AL_DB_Close.Enabled := True; AL_ED_Append.Enabled := True; AL_ED_Del.Enabled := True; AL_ED_Edit.Enabled := True; AL_ED_Post.Enabled := False; AL_ED_Cancel.Enabled := False; AL_ED_Find.Enabled := True; AL_ED_Import.Enabled := True; AL_ED_Export.Enabled := True; AL_ED_Print.Enabled := True; AL_TXT_SchriftDlg.Enabled := False; AL_TXT_Normal.Enabled := False; AL_TXT_Fett.Enabled := False; AL_TXT_Kursiv.Enabled := False; AL_TXT_FettKursiv.Enabled := False; AL_TXT_Unter.Enabled := False; AL_TXT_FettUnter.Enabled := False; AL_TXT_KursivUnter.Enabled := False; AL_TXT_Durch.Enabled := False; AL_TXT_Schwarz.Enabled := False; AL_TXT_Rot.Enabled := False; AL_TXT_Gruen.Enabled := False; AL_TXT_Blau.Enabled := False; AL_SICHT_Alle.Enabled := True; AL_SICHT_Jahr.Enabled := True; AL_SICHT_Monat.Enabled := True; AL_SICHT_Woche.Enabled := True; AL_SICHT_Heute.Enabled := True; GLD.URec.Sicht := 0; Sichtbar; Bit_Append.Enabled := True; Bit_Delete.Enabled := True; Bit_Edit.Enabled := True; Bit_Post.Enabled := False; Bit_Cancel.Enabled := False; Bit_Find.Enabled := True; Bit_Import.Enabled := True; Bit_Export.Enabled := True; Bit_Print.Enabled := True; DBEd_Titel.ReadOnly := True; DBLU_Kategorie.ReadOnly := True; DBDatePick.ReadOnly := True; DBTimePick.ReadOnly := True; DBCheck_OK.ReadOnly := True; DBRich_Notizen.ReadOnly := True; DBEd_Titel.Color := GLD.FarbeBrowse; DBLU_Kategorie.Color := GLD.FarbeBrowse; DBDatePick.Color := GLD.FarbeBrowse; DBTimePick.Color := GLD.FarbeBrowse; DBCheck_OK.Color := PgCtrl_ToDo.Color; DBRich_Notizen.Color := GLD.FarbeBrowse; TS_ToDo_Tabelle.Enabled := True; TS_Kat.Enabled := True; TS_Option.Enabled := True; DatMod.V_Liste.Locate('ID',DatMod.Qset_Liste.FieldByName('ID_LISTE').AsInteger,[]); StatusBarAktuell; Navi_Liste.Enabled := True; DBEd_Titel.SetFocus; end; |
AW: SQLite Datensatz löschen - [BUG ?]
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz