Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Löschen via Query (ADO -> Jet -> mdb) ab Datum (https://www.delphipraxis.net/38407-loeschen-via-query-ado-jet-mdb-ab-datum.html)

Bitworm 18. Jan 2005 22:54


Löschen via Query (ADO -> Jet -> mdb) ab Datum
 
Hi !

Ich möchte gerne in einer Tabelle (ADO -> Jet -> mdb) alle alten Eintrag ab
einem bestimmten Datum löschen. Dazu habe ich folgendes versucht:

Code:
      MCP.querycleanup.Close;
      MCP.querycleanup.SQL.Text := 'DELETE FROM telegramme WHERE datum < :datumswert';
      MCP.querycleanup.ParamCheck := True;
      MCP.querycleanup.Parameters.ParamByName('datumswert').DataType := ftDateTime;
      MCP.querycleanup.Parameters.ParamByName('datumswert').Value := now-parameter.HaltezeitFMS;
      MCP.querycleanup.Open;
Als Antwort kriege ich einen OLE-Fehler 80040E10 :( querycleanup ist vom Typ ADOQuery.
Hat jemand einen Tip für mich, was ich da die ganze Zeit falsch mache ?

:wall:

omata 18. Jan 2005 23:40

Re: Löschen via Query (ADO -> Jet -> mdb) ab Datum
 
Moin,

für Abfragen die kein Ergebnis liefern (UPDATE, INSERT, DELETE) muss ExecSQL aufgerufen werden. Open wird nur für SELECT-Anweisungen benutzt.

MfG
Thorsten

Bitworm 19. Jan 2005 00:10

Re: Löschen via Query (ADO -> Jet -> mdb) ab Datum
 
@Omata: Danke für den Tip, aber leider hat es nicht viel gebracht. Der OLE-Fehler kommt immer noch :wall:

omata 19. Jan 2005 01:16

Re: Löschen via Query (ADO -> Jet -> mdb) ab Datum
 
Moin,

dann würde ich die Anweisung erstmal ohne Parametersteuerung ausprobieren.

Dieser eine Parameter kann doch auch direkt in die SQL-Anweisung geschrieben werden.

Delphi-Quellcode:
MCP.querycleanup.Close;
MCP.querycleanup.SQL.Text :=
  'DELETE FROM telegramme WHERE datum < '''+DateTimeToStr(now-parameter.HaltezeitFMS)+'''';
MCP.querycleanup.ExecSQL;
Hoffe, das hilft weiter

MfG
Thorsten

Robert_G 19. Jan 2005 01:20

Re: Löschen via Query (ADO -> Jet -> mdb) ab Datum
 
Zitat:

Zitat von omata
Dieser eine Parameter kann doch auch direkt in die SQL-Anweisung geschrieben werden.

Wäre es eine Zahl (ohne Komma) OK, aber bei einem Datum? :shock:
@BitWurm
Das MUSS mit dem Parameter gehen!
Du benutzt auch wirklich ExecSql() und KEIN Open() ? :gruebel:

Bitworm 19. Jan 2005 07:55

Re: Löschen via Query (ADO -> Jet -> mdb) ab Datum
 
Guten Morgen,

das Problem ist gelöst :-D . Der OLE-Fehler nach Änderung des Aufrufs nach ExecSQL wurde durch das Abfragen der falschen Feldbezeichnung ausgelöst (hatte ich zwischenzeitlich geändert :oops: ). Im ausgeschlafenen und wachen Zustand fiel es mir direkt auf. Danke allen die mir geholfen haben.


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