Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   deleteanweisung für mehrere Datensätze (https://www.delphipraxis.net/171395-deleteanweisung-fuer-mehrere-datensaetze.html)

roland1258 5. Nov 2012 15:47

Datenbank: Oracle • Version: Express 4.0.2.00.09 • Zugriff über: dbExpress

deleteanweisung für mehrere Datensätze
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hallo zusammen,
ich möchte mehrere Datensätze gleichzeitig löschen.
Über eine Listview mit Checkboxen wähle ich die entsprechenden Datensätze aus (Bild1).

Delphi-Quellcode:
var i   : integer;
    s   : string;
    first: Boolean;
    SQL : string;
begin
 s := '';
 first := true;
 for i := 0 to lv.Items.Count - 1 do
    if LV.Items[i].Checked then  
      begin
        if first then
          s := LV.Items[i].Caption
        else
          s := s + Format(', %s',[LV.Items[i].Caption]);
        first := false;
      end;
  if Length(s) > 0 then
    begin
      SQL := Format('DELETE FROM artikel WHERE art_nummer IN (%s) ',[s]);
      ShowMessage(s);
      q1.Close;
      q1.SQL.Clear;
      q1.SQL.text := sql;
      ShowMessage(q1.SQL.Text);
      q1.ExecSQL;
    end;
end;
Ich lasse mir zur Kontrolle s (Bild2) und den sql-Text(Bild3) ausgeben.

Es schein alles ok zu sein.

Mit execsql kommt aber ein Fehler (Bild4), den ich nicht nachvollziehen kann.

Vielleicht hat jemand eine Idee?

LG
Roland

Bernhard Geyer 5. Nov 2012 16:16

AW: deleteanweisung für mehrere Datensätze
 
ISt das Feld art_nummer evtl. vom Typ String ((var)char)?

roland1258 5. Nov 2012 16:22

AW: deleteanweisung für mehrere Datensätze
 
Der Typ für art_nummer ist varchar

DeddyH 5. Nov 2012 16:25

AW: deleteanweisung für mehrere Datensätze
 
Dann fehlen die Apostrophe.

borncrush 5. Nov 2012 16:25

AW: deleteanweisung für mehrere Datensätze
 
Dann müsstest Du doch auch Strings/Chars übergeben.

Also QoutedString für die IDs.

Evtl. greift der IN-Befehl bei Chars nicht.


Sind nur so Überlegungen

Berni68 5. Nov 2012 16:26

AW: deleteanweisung für mehrere Datensätze
 
dann muss es heissen: ...in ('1001','1002')

DeddyH 5. Nov 2012 16:29

AW: deleteanweisung für mehrere Datensätze
 
Delphi-Quellcode:
 if first then
  s := QuotedStr(LV.Items[i].Caption)
else
  s := s + Format(', %s',[QuotedStr(LV.Items[i].Caption)]);
Das müsste eigentlich genügen, wenn ich keinen Denkfehler mache.

borncrush 5. Nov 2012 16:38

AW: deleteanweisung für mehrere Datensätze
 
:thumb:
Genau so habe ich es gemeint, sollte so klappen.

roland1258 8. Nov 2012 12:26

AW: deleteanweisung für mehrere Datensätze
 
Hallo,
kann mich jetzt erst wieder um die Angelegenheit kümmern.
Mit den Anführungsstrichen hat es natürlich geklappt.
Vielen Dank für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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