AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delete funktioniert nicht

Ein Thema von juelin · begonnen am 25. Mai 2021 · letzter Beitrag vom 25. Mai 2021
Antwort Antwort
Seite 1 von 2  1 2      
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

Delete funktioniert nicht

  Alt 25. Mai 2021, 19:16
Datenbank: MySql • Version: MariaDB • Zugriff über: Devart
Hallo Forum,
ich benutze Windows 10, Delphi 10.3 und MySql MariaDB.
In einem Programm benutze ich direkt hintereinander
Delete und Insert in eine Tabelle.

Delphi-Quellcode:
                Form1.MyCommand1.SQL.Clear;
                Form1.MyCommand1.SQL.Add('DELETE FROM aufstellung WHERE Datum=:datum AND Spielnr=:spielnr AND Verein=:verein AND Spieler=:spieler AND von=:von');
                Form1.MyCommand1.ParamByName('datum').Name:='datum';
                Form1.MyCommand1.ParamByName('datum').DataType:=ftDateTime;
                Form1.MyCommand1.ParamByName('datum').Value:=datum7;
                Form1.MyCommand1.ParamByName('spielnr').Name:='spielnr';
                Form1.MyCommand1.ParamByName('spielnr').DataType:=ftInteger;
                Form1.MyCommand1.ParamByName('spielnr').Value:=nummer7;
                Form1.MyCommand1.ParamByName('verein').Name:='verein';
                Form1.MyCommand1.ParamByName('verein').DataType:=ftInteger;
                Form1.MyCommand1.ParamByName('verein').Value:=vereinnr7;
                Form1.MyCommand1.ParamByName('spieler').Name:='spieler';
                Form1.MyCommand1.ParamByName('spieler').DataType:=ftInteger;
                Form1.MyCommand1.ParamByName('spieler').Value:=spielnr7a;
                Form1.MyCommand1.ParamByName('von').Name:='von';
                Form1.MyCommand1.ParamByName('von').DataType:=ftDateTime;
                Form1.MyCommand1.ParamByName('von').Value:=von7a;
                Form1.MyCommand1.Execute;
                if SqlRet then
// der SqlRet ist nach Ausführung TRUE
                  Form1.MyCommand1.SQL.Clear;
                  Form1.MyCommand1.SQL.Add('INSERT INTO aufstellung (Datum, Spielnr, Verein, Spieler, Position, Detail, von, bis) VALUES (:datum, :spielnr, :verein, :spieler, :pos, :det, :von, :bis)');
                  Form1.MyCommand1.ParamByName('datum').Name:='datum';
                  Form1.MyCommand1.ParamByName('datum').DataType:=ftDateTime;
                  Form1.MyCommand1.ParamByName('datum').Value:=datum7;
                  Form1.MyCommand1.ParamByName('spielnr').Name:='spielnr';
                  Form1.MyCommand1.ParamByName('spielnr').DataType:=ftInteger;
                  Form1.MyCommand1.ParamByName('spielnr').Value:=nummer7;
                  Form1.MyCommand1.ParamByName('verein').Name:='verein';
                  Form1.MyCommand1.ParamByName('verein').DataType:=ftInteger;
                  Form1.MyCommand1.ParamByName('verein').Value:=vereinnr7;
                  Form1.MyCommand1.ParamByName('spieler').Name:='spieler';
                  Form1.MyCommand1.ParamByName('spieler').DataType:=ftInteger;
                  Form1.MyCommand1.ParamByName('spieler').Value:=spielnr7;
                  Form1.MyCommand1.ParamByName('pos').Name:='pos';
                  Form1.MyCommand1.ParamByName('pos').DataType:=ftString;
                  Form1.MyCommand1.ParamByName('pos').Value:=pos7;
                  Form1.MyCommand1.ParamByName('det').Name:='det';
                  Form1.MyCommand1.ParamByName('det').DataType:=ftString;
                  Form1.MyCommand1.ParamByName('det').Value:=det7;
                  Form1.MyCommand1.ParamByName('von').Name:='von';
                  Form1.MyCommand1.ParamByName('von').DataType:=ftDateTime;
                  Form1.MyCommand1.ParamByName('von').Value:=von7;
                  Form1.MyCommand1.ParamByName('bis').Name:='bis';
                  Form1.MyCommand1.ParamByName('bis').DataType:=ftDateTime;
                  Form1.MyCommand1.ParamByName('bis').Value:=bis7;
                  Form1.MyCommand1.Execute;
                  if not SqlRet then
                  begin
// Fehlermeldung dublicate Key
Alle Felder sind gleich und in Ordnung.
Warum wird der Delete nicht ausgeführt??????
Ich stehe vor einem Rätsel.
Danke und Gruß
Jürgen
Jürgen Linder
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 19:21
Hallo,
was passiert denn, wenn Du statt dem Delete mal ein Select Count(*) machst?

(
Ein möglicher Ansatzpunkt ist vielleicht das
DataType:=ftDateTime und das .Value zuweisen.

Es gibt auch ftDate.

)
Heiko

Geändert von hoika (25. Mai 2021 um 19:29 Uhr)
  Mit Zitat antworten Zitat
jobo

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

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 19:23
Was ist denn der SQLRet? Vielleicht ein SQL Fehler Code?
Mein Tipp, das Delete verletzt einen Datenbank Constraint.
Rückgabewerte prüfen und feststellen, woran es hapert.
Gruß, Jo
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 19:25
Delphi-Quellcode:
procedure TForm1.MyCommand1AfterExecute(Sender: TObject; Result: Boolean);
begin
  SqlRet:=Result;
end;
Jürgen Linder
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 19:27
Was ist denn datum7 für ein Typ?

Ich denk mal als "Float" ist z.B. ein TDateTime (Double) für die DB bissl was "Anderes", als wie für Delphi.


Delphi-Quellcode:
                Form1.MyCommand1.ParamByName('datum').AsDateTime := datum7;
                Form1.MyCommand1.ParamByName('spielnr').AsInteger := nummer7;
                Form1.MyCommand1.ParamByName('verein').AsString := vereinnr7;
                Form1.MyCommand1.ParamByName('spieler').AsString := spielnr7a;
                Form1.MyCommand1.ParamByName('von').AsKeineAhnungWas := von7a;

Gab es bei Devart nicht in der Connection oder den Querys eine Funktion, welche das SQL-Statement ohne Parameter zurückgibt?
Also wo die Parameter durch die Werte ersetzt wurden.
Ansonsten kann man doch bestimmt in der DB in irgendeiner Log- oder Statusanzeige die letzten ausgeführten SQL-Statements sehen?


Ach ja, wieso weißt du .Name etwas zu?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (25. Mai 2021 um 19:46 Uhr)
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 19:44
Also,
ich mach so Datenbank SQL nicht zum ersten mal.
Bis jetzt hat auch immer alles funktioniert.

datum7 = TDate
nummer7 = Integer
vereinnr7 = Integer
spielnr7 = Integer = spielnr7a
von7 = TTime = von7a
Jürgen Linder
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 20:56
Hallo,
und trotzdem scheint es ja nicht zu funktionieren.

Was bringt denn ein Select Count(*)

PS: Nicht alle deine Delete-Parameter sind die gleichen wie beim Insert.
Heiko

Geändert von hoika (25. Mai 2021 um 21:05 Uhr)
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 21:32
von7 und von7a sind gleich
spielnr7 und spielnr7a sind gleich
der Select Count(*) würde aber nicht mit MyCommand1
sondern mit MyQuery1 ausgeführt.
Soll das dann was bringen?
Jürgen Linder
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#9

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 22:08
Kannst du mal prüfen, ob der Datumsanteil der Time-Felder wirklich dem entspricht, was du erwartest? Da es sich ja um ftDateTime-Parameter handelt, wird der Datumsanteil wohl beim WHERE mit berücksichtigt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Delete funktioniert nicht

  Alt 25. Mai 2021, 22:43
Hallo,
womit das Count(*) läuft, ist egal,
was kommt raus?
Auch wegen dem, was Uwe gerade geschrieben hat.
Heiko
  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 00:32 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