AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQLite Datensatz löschen - [BUG ?]
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite Datensatz löschen - [BUG ?]

Ein Thema von user0815 · begonnen am 13. Jan 2015 · letzter Beitrag vom 14. Jan 2015
Antwort Antwort
Seite 2 von 2     12   
Perlsau
(Gast)

n/a Beiträge
 
#11

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 13. Jan 2015, 16:27
meinte die Tastenkombination für das Grid: STRG + ENTF
Achsoooo Mit dem Hellsehen ist das halt so eine Sache: Da sieht man einen hellen Fleck, und es ist er falsche
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#12

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 13. Jan 2015, 17:59
Wenn ich jetzt einen Datensatz im angezeigten TDBGrid selektiere dann kann ich diesen per STRG + ENTF löschen ???

Frage: Wie kann ich dies verhindern ?
Wenn ich mich richtig erinnere, sollte es auch ein
Code:
abort;
im dataset bzw. query ondelete Event tun. Das packt das Problem m.E. eher an der "Wurzel".
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#13

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 13. Jan 2015, 21:48
Also wenn ich mich richtig erinnere, gibt es gar kein OnDelete, sondern höchstens OnBeforeDelete oder OnAfterDelete – und ich erinnere mich gewöhnlich sehr gut an solche Sachen, hab ich doch täglich damit zu tun. Ob es ein OnDelete geben sollte, vermag ich wahrlich nicht zu beurteilen, benötige es doch gar nicht.

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

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
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#14

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 14. Jan 2015, 11:18
@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.
Gruß, Jo
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#15

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 14. Jan 2015, 11:41
Ich glaube nicht, dass es Stil dieses Forums ist, 1:1 Frage Antwort zu spielen, das wird auch Dir wohl geläufig sein.
Nun, erstens bin ich nicht dieses Forum und daher so frei, einen eigenen Stil zu pflegen, zweitens sind in einem Forum Fragen und Antworten durchaus üblich, um nicht zu sagen unerläßlich, drittens geht es hier nicht um Geschmacksfragen oder Modevorlieben, sondern und programmiertechnsiche Dinge, die nunmal exakt (1:1) und nicht irgendwie so oder so ähnlich dargestellt werden sollten – und viertens hat es nichts mit für oder gegen irgend einen ominösen Stil zu tun, wenn man auf eindeutige Falschinformationen hinweist. Sich nun herausreden zu wollen stellt dagegen einen – zumindest meiner Meinung nach – äußerst schlechten Stil dar und wirkt nicht nur oberflächlich, sondern zutiefst unaufrichtig. Ich werde es daher gut sein lassen und verbleibe mit der wertvollen Empfehlung unseres allseits beliebten Dieter Nuhr
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.
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#16

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 14. Jan 2015, 12:17
Zitat:
Und auch ein bloßes DBEdit reagiert nicht auf das Kommand strng entf.
Doch genau das passiert: STRG + ENTF funktioniert.


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.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#17

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 14. Jan 2015, 12:22
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;
Miniaturansicht angehängter Grafiken
browse-editmodus.jpg  

Geändert von Perlsau (14. Jan 2015 um 12:38 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: SQLite Datensatz löschen - [BUG ?]

  Alt 14. Jan 2015, 12:49
Ich glaube nicht, dass es Stil dieses Forums ist, 1:1 Frage Antwort zu spielen
Ist es auch nicht. Ein bisschen konstruktives Mitdenken wird von allen Beteiligten erwartet und den meisten Lesern dürfte klar geworden sein, auf welche Events Du anspielst.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz