AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

Ein Thema von nachtstreuner · begonnen am 1. Mai 2011 · letzter Beitrag vom 1. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#1

MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 22:21
Datenbank: mySql • Version: 4 • Zugriff über: Zeos 6
Hallo liebe Delphianer,

stehe mal wieder aufm Schlauch. Meine Abfrage zeigt einen Datensatz mit leerem Feld nicht an.

Code:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Clear;
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').Value := NULL;
          dataM.ZQueryKUNDE.Active := true;
-------------------------------------------------------------------------------------
kd_nr Nachname Status KD_STATUS ORT
-------------------------------------------------------------------------------------
10010001 IMPULS-T NULL NULL Frankfurt
10020003 Werra NULL ROT Köln
10030003 Magna NULL GRÜN Frankfurt
--------------------------------------------------------------------------------------

Der Erste Datensatz wird einfach nicht angezeigt. Woran könnte das liegen ?
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 22:23
Das muss IS NULL heißen und nicht = NULL.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#3

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 22:38
Hallo S.H.A.R.K

vielen Dank für Deine Antwort.
Delphi-Quellcode:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').Value := IS NULL;
          dataM.ZQueryKUNDE.Active := true;
Hier bekomme ich folgende Fehlermeldung:

[Fehler] tools.pas(102): Ausdruck erwartet, aber 'IS' gefunden

Delphi-Quellcode:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').Value := ISNULL;
          dataM.ZQueryKUNDE.Active := true;

Hier bekomme ich folgende Fehlermeldung:
[Fehler] tools.pas(102): Undefinierter Bezeichner: 'ISNULL'
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 22:39
Probier mal:
Code:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS IS NULL';
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 22:41
In SQL sind Vergleiche mit NULL nicht möglich bzw. liefern immer false.
Statt dessen gibt es die Klauseln IS NULL und IS NOT NULL. NULL kann allerdings deshalb nicht als Parameter an die Query übergeben werden.
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#6

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 22:42
... und noch eine Variante ergibt eine leere Anzeige :
Delphi-Quellcode:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').ISNULL;
          dataM.ZQueryKUNDE.Active := true;
Alles wird gut -
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#7

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 22:46
Hallo idefix,

besten Dank für deinen Hinweis,

so funzt es :
Delphi-Quellcode:
          SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS IS NULL';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
// dataM.ZQueryKUNDE.ParamByName('sLEER').ISNULL;
          dataM.ZQueryKUNDE.Active := true;
Also nix mit ParamByName ?
Alles wird gut -
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#8

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 23:23
Geht mit Null einfach nicht. Ist einer von zwei Werten NULL, dann schlägt jeder Vergleich fehl, das Ergebnis ist nämlich dann immer NULL (und nicht true oder false), egal ob auf Gleichheit oder auf Ungleichheit abgefragt wird.

NULL wird allerdings auch als false interpretiert, ebenso wie seine Negation, also werden die entsprechenden Datensätze nie angezeigt.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 23:26
Delphi-Quellcode:
dataM.ZQueryKUNDE.SQL.Text :=
  'SELECT * FROM tbl_kunde WHERE COALESCE(KD_STATUS, '''') = :sLEER';
dataM.ZQueryKUNDE.ParamByName('sLEER').Value := '';
dataM.ZQueryKUNDE.Active := true;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?

  Alt 1. Mai 2011, 23:32
Delphi-Quellcode:
SQLSUCH :=
  'SET @SUCH_STATUS = :SUCH_STATUS;'#13#10 +
  'SELECT * from tbl_kunde WHERE ( @SUCH_STATUS IS NULL AND KD_STATUS IS NULL OR KD_STATUS = @SUCH_STATUS );';
dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
dataM.ZQueryKUNDE.ParamByName('KD_STATUS').Clear;

// Das geht jetzt auch
// dataM.ZQueryKUNDE.ParamByName('KD_STATUS').Value := 'ROT';

dataM.ZQueryKUNDE.Active := true;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 11:10 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