AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL delete where funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

SQL delete where funktioniert nicht

Ein Thema von BBoy · begonnen am 24. Aug 2016 · letzter Beitrag vom 24. Aug 2016
Antwort Antwort
Seite 1 von 2  1 2      
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:17
Datenbank: sqlite • Version: ? • Zugriff über: ?
Mal wieder ich

Ich möchte einen Datensatz löschen wobei drei Bedingungen erfüllt sein müssen.
Alle Felder sind vom Typ TEXT
Mein Versuch:
Code:
 
  sqlquery1.SQL.Text := 'DELETE FROM customers WHERE Name = :name AND Vorname = :vorname AND Datum = :datum';
  sqlquery1.Params.ParamByName('name').AsString := 'Pan';
  sqlquery1.Params.ParamByName('vorname').AsString := 'Peter';
  sqlquery1.Params.ParamByName('datum').AsString := '22.08.2016';
  sqlquery1.ExecSQL;
Führt nicht zum Erfolg da keine Entsprechungen gefunden werden. Also habe ich zum testen einfach nur:
Code:
 
sqlquery1.SQL.Text := 'DELETE FROM customers WHERE Datum = :datum';
...
..
.
Auch hier wurden keine Entsprechungen gefunden. Dieses Problem ist bei allen Feldern mit Leerzeichen/Satzzeichen
Nur wenn ich nach Name Suche funktioniert es.

Liegt es an den Punkten zwischen dem Datum? Oder was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
678 Beiträge
 
Delphi 12 Athens
 
#2

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:22
Code:
 
  sqlquery1.SQL.Text := 'DELETE FROM customers WHERE Name = :name AND Vorname = :vorname AND Datum = :datum';
Von welchem Typ ist das Feld Datum in der Datenbank? Zumeist ist es eine Fliesskommazahl oder auf eine Fliesskommazahl gemappt und da gibt es keine Gleichheit.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:23
= prüft auf absolute Gleichheit.

Leerzeichen könnte man weg"Trim"men.

Was für einen Typ hat das Feld Datum?
Markus Kinzler
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:30
Wie bereits im ersten post geschrieben: Alle felder sind vom typ : TEXT

Ja und das Datum ist vorhanden in der DB und es sind keine Leerzeichen am Ende oder ähnliches.

Geändert von BBoy (24. Aug 2016 um 12:34 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:34
Und wie steht das Datum genau in der DB? Wenn es Strings sind, muss es genauso formatiert sein.

Ps.S. deshalb besser passende Typen verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:36
Format ist: '22.08.2016'
Genau so steht es in der DB und genau so suche ich danach. Würde eigentlich lieber bei den Strings bleiben wenn möglich.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:39
Dann nimm doch das vorgesehene Format, damit können dann auch die eingebauten DateTime-Routinen genutzt werden: https://www.sqlite.org/datatype3.html#section_2_2
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 joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
678 Beiträge
 
Delphi 12 Athens
 
#8

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:43
Format ist: '22.08.2016' Genau so steht es in der DB und genau so suche ich danach.
Versuche mal, mit LIKE zu arbeiten:
sqlquery1.SQL.Text := 'SELECT * FROM customers WHERE Datum LIKE ''22.08.2016%''';
Bringt das ein Ergebnis, so versuche die Parameter:
Delphi-Quellcode:
sqlquery1.SQL.Text := 'SELECT * FROM customers WHERE Datum LIKE :datum';
sqlquery1.Params.ParamByName('datum').AsString := '22.08.2016';
Zitat:
Würde eigentlich lieber bei den Strings bleiben wenn möglich.
Man kann ja keinen zwingen, das Richtige zu tun
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 12:47
Es gibt in SQLite keinen DateTime-Datentyp, von daher ist TEXT ja keine falsche Wahl, siehe Link in meinem letzten Post.
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
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: SQL delete where funktioniert nicht

  Alt 24. Aug 2016, 13:13
Bringt das ein Ergebnis, so versuche die Parameter:
Delphi-Quellcode:
sqlquery1.SQL.Text := 'SELECT * FROM customers WHERE Datum LIKE :datum';
sqlquery1.Params.ParamByName('datum').AsString := '22.08.2016';
Das hat geholfen. Allerdings wunderte es mich und ich habe einfach mal trim in die entsprechende variable für das Datum eingebaut. und siehe da, es funktionierte! Muss wohl ein Sonderzeichen mit dabei gewesen sein. Nun funktioniert es auch ohne LIKE. Danke!

Zitat:
Würde eigentlich lieber bei den Strings bleiben wenn möglich.
Man kann ja keinen zwingen, das Richtige zu tun
Werde deinen Vorschlag bei der nächsten DB berücksichtigen. Aber die vorhandene zu ändern, dafür habe ich wenig Lust so kurz vor der Fertigstellung

Also, Problem gelöst.

Vielen Dank für eure Hilfe

.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:06 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