AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Feld über Parameter auf NULL setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Feld über Parameter auf NULL setzen

Ein Thema von ele · begonnen am 22. Jul 2010 · letzter Beitrag vom 22. Jul 2010
Antwort Antwort
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#1

Feld über Parameter auf NULL setzen

  Alt 22. Jul 2010, 16:48
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
Hallo,

Ich habe da mal wieder ein kleines Problem analog zu diesem Thread. Nur dass ich das über ADO anstatt über Zeos mache und die Datenbank dahinter MSSQL ist.

Zusammenfassung: Ich versuche ein Feld, in diesem Fall Released (datetime, allow nulls = true) über update auf null zu setzen. Ich könnte das natürlich auch direkt in SQL machen, würde aber den Weg über Parameter vorziehen.

Der Fehler:

Zitat von EVariantTypeCastError:
Could not convert variant of type (Null) into type (Double)
Mein Code (Released ist ein TDateTime):

Delphi-Quellcode:
    Query.SQL.Text :=
          'UPDATE ChangeSets SET Author = :Author, Released = :Released WHERE ID = :ID';

    Query.Parameters.ParamValues['ID'] := ID;
    Query.Parameters.ParamValues['Author'] := Author;
    Query.Parameters.ParamValues['Released'] := IfThen(Released = 0, NULL, Released); // <-- Fehler hier
Ich habe auch verschiedene andere Varianten ausprobiert, die haben bisher aber nicht gefruchtet:

Delphi-Quellcode:
    Query.Parameters.ParamByName('Released').Value := IfThen(Released = 0, NULL, Released);
    Query.Parameters.FindParam('Released').Value := IfThen(Released = 0, NULL, Released);
Wie macht man das richtig?
  Mit Zitat antworten Zitat
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Feld über Parameter auf NULL setzen

  Alt 22. Jul 2010, 16:55


Oh, mann bin ich blöd. Das Problem liegt am IfThen... Es wird automatisch die Variante für TDateTime verwendet, welche dann natürlich mit dem NULL nichts anfangen kann.

Thread kann geschlossen werden. 'Tschuldigung für die Belästigung.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Feld über Parameter auf NULL setzen

  Alt 22. Jul 2010, 16:57
IIRC musst Du die Clear-Methode des Parameters aufrufen.
Query.ParamByName('Bla').Clear;
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
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Feld über Parameter auf NULL setzen

  Alt 22. Jul 2010, 17:01
Danke für den Hinweis, es funktionert aber auch mit NULL, nur halt nicht ganz so elegant über IfThen:

Delphi-Quellcode:
    if Released = 0
      then Query.Parameters.ParamValues['Released'] := NULL
      else Query.Parameters.ParamValues['Released'] := Released;
  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 03:58 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