AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verständnisproblem - Warum funktioniert mein DELETE nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisproblem - Warum funktioniert mein DELETE nicht?

Ein Thema von Mithrandir · begonnen am 18. Sep 2009 · letzter Beitrag vom 18. Sep 2009
Antwort Antwort
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#1

Verständnisproblem - Warum funktioniert mein DELETE nicht?

  Alt 18. Sep 2009, 14:02
Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS 6.6.x
Hi ihr,

irgendwie stehe ich gerade auf dem Schlauch. Dieser Code:

Delphi-Quellcode:
  procedure TDGHBDatabase.DeleteUserByName(Name: String);
  var
    DeleteUserQuery : TZQuery;
  begin
    DeleteUserQuery := TZQuery.Create(nil);
    with DeleteUserQuery do
      begin
        Connection := fConnection;
        ParamCheck := true;
        SQL.Text := 'DELETE FROM USERS WHERE USER_NAME = :user ';
        ParamByName('user').AsString := Name;
        ExecSQL;
      end;
    DeleteUserQuery.Free;
  end;
soll einen bestimmten Nutzer aus der Datenbank entfernen. Der Name existiert und wird korrekt übergeben. Die Tabelle existiert, die Spalte existiert - und dennoch: Aus der Datenbank wird der Eintrag nicht gelöscht. Jemand ne Idee, woran das liegen kann/was ich falsch mache?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:10
Ich denke mir, das with in Verbindung mit "Name" ist Schuld. Geht es so?
Delphi-Quellcode:
procedure TDGHBDatabase.DeleteUserByName(const sName: String);
  var
    DeleteUserQuery : TZQuery;
  begin
    DeleteUserQuery := TZQuery.Create(nil);
    try
      with DeleteUserQuery do
        begin
          Connection := fConnection;
          ParamCheck := true;
          SQL.Text := 'DELETE FROM USERS WHERE USER_NAME = :user ';
          ParamByName('user').AsString := sName;
          ExecSQL;
        end;
    finally
      DeleteUserQuery.Free;
    end;
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#3

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:11
Jetzt weiß ich, warum "with" so "gefährlich" ist.

Danke, Detlef, daran lags.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:13
hat sich erledigt
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:15
In den meisten Fällen vermeide ich das with auch, dann hat man eine potentielle Fehlerquelle weniger
@Tyrael: Der Doppelpunkt ist schon richtig, da es sich um ein parametrisiertes Statement handelt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#6

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:21
Stimmt wohl - nur ist es halt so... bequem..
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:27
Zitat von Daniel G:
Stimmt wohl - nur ist es halt so... bequem..
Diese Fehler, wie hier aufgetreten, machen das With sehr unbequem - finde ich. Daher benutze ich es nicht und schreibe auch Stellen von meinem Vorgänger entsprechend um.

Gruß
Jens
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:44
Deshalb haben bei mir Argumente einer Funktion generell ein A vorne dann heisst halt AName un geht
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Verständnisproblem - Warum funktioniert mein DELETE nich

  Alt 18. Sep 2009, 14:57
Der Übergabeparameter sollte so deklariert sein:procedure TDGHBDatabase.DeleteUserByName(const UserName: String); "UserName" ist einfach klarer und aussagekräftiger als nur "Name".
Also ich spare mir die Ungarische Notation (Ausnahme Windows-API) und suche stattdessen nach besseren Bezeichnungen.
Man kann natürlich unterschiedlicher Meinung sein aber ich folge hier dem sehr empfehlenswerten Buch "Clean Code: A Handbook of Agile Software Craftsmanship".
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:35 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