AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Sql abrage mit "is Null"

Ein Thema von pbfdg · begonnen am 15. Jun 2016 · letzter Beitrag vom 17. Jun 2016
Antwort Antwort
Seite 1 von 2  1 2   
pbfdg

Registriert seit: 13. Mär 2005
16 Beiträge
 
#1

Sql abrage mit "is Null"

  Alt 15. Jun 2016, 23:01
Datenbank: Firebird • Version: 2.5.5 • Zugriff über: Zeos 7.1.3
Hallo zusammen,

ich habe folgendes Problem -

In meiner Anwendung habe ich eine SQl Abfrage mit diesem Code

Select * from Kunden
where geloescht is null

Auf meinem PC und andere liefert die Abfrage die gewünschten Daten nur auf meinem Laptop "Lenovo T430" ist die Abfrage leer.


Beide haben das gleiche Betriebssystem und auch die gleiche Firbird Version. Ändere ich "is Null in is not Null" liefern beide das gleiche Ergebnis.


Woran kann das liegen. Kennt jemand das Problem.

Gruß Peter
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Sql abrage mit "is Null"

  Alt 15. Jun 2016, 23:17
dann sind halt die Daten anders.. Bitte beachten: ein leerer String ist nicht gleich IS NULL!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Sql abrage mit "is Null"

  Alt 15. Jun 2016, 23:22
Interessant wären die Daten in Deiner DB, das Modell Deines Laptops ist hier eher von untergeordneter Bedeutung.
Was bedeutet
Zitat:
Ändere ich "is Null in is not Null" liefern beide das gleiche Ergebnis.
Ist das Ergebnis vollkommen spiegelverkehrt? Dann sollte so etwas wie
Code:
geloescht:=not(geloescht)
Dein Problem beheben. Für eine konkrete Aussage müßte man allerdings wissen welchen Inhalt geloescht hat.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Geda

Registriert seit: 24. Jul 2015
20 Beiträge
 
Delphi XE8 Professional
 
#4

AW: Sql abrage mit "is Null"

  Alt 16. Jun 2016, 07:10
Hallo,

Was für ein Feldtyp ist "geloescht"?
- Schreit natürlich nach Ja/Nein. Sollte es aber ein STRING Feld sein, hatte ich das ähnlich bei SQL Server.
Neben den DB-Einstellungen, wo sich hierfür "isNull" für "leer" konfigurieren ließ, half letzten Endes bei importierten Daten nur, zusätzlich auf <leer> (='') zu filtern.

... Was ungefähr die Aussage von Lemmy in Langform ist ---
Geert
  Mit Zitat antworten Zitat
hoika

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

AW: Sql abrage mit "is Null"

  Alt 16. Jun 2016, 09:34
Hallo,

< nur kurz alle anderen Antworten zusammengefasst >
< Auf meinem PC und andere liefert die Abfrage die gewünschten Daten nur auf meinem Laptop "Lenovo T430" ist die Abfrage leer. >
kopiere die GDB/FDB von "andere" auf deinen Laptop und du hast das gleiche Ergebnis

> Beide haben das gleiche Betriebssystem und auch die gleiche Firbird Version. Ändere ich "is Null in is not Null" liefern beide das gleiche Ergebnis. >
also haben alle Datensätze einen Wert in "geloescht" stehen und wenn es ein LeerString ist
wenn es sich nicht um deine eigenen Daten und damit deinen Fehler handelt
oft legt man einen Datensatz an und lässt beim Insert unwichtige Felder weg, dann wäre Geloescht = Null
wird beim Insert aber doch etwas eingegeben (Leerstring ""), dann ist Geloescht <> Null
Where (Geloescht Is Null) Or (Geloescht="")

< Woran kann das liegen. Kennt jemand das Problem. >
Das ist kein Problem, sondern Absicht (aus Sicht von Firebird)


Heiko
Heiko
  Mit Zitat antworten Zitat
pbfdg

Registriert seit: 13. Mär 2005
16 Beiträge
 
#6

AW: Sql abrage mit "is Null"

  Alt 16. Jun 2016, 19:33
Hallo zusammen,
dieser Satz ist falsch -
"Ändere ich "is Null in is not Null" liefern beide (das gleiche) ein Ergebnis."

Das Datenfeld "geloescht" ist VARCHAR und ist entweder NULL oder 'X'.
Beim Erstellen eines neuen Datensatzes wird der Wert auf NULL gesetzt. Löscht der Bediener einen Datensatz wird dieser nicht wirklich gelöscht, sondern nur ein "X" in das Feld "geloescht" gesetzt.
Grund Daten sollen erhalten bleiben und bei Bedarf zurückgeholt werden. Dies kommt heraus, wenn man eine Software speziell für einen Bekannten aus Gefälligkeit und mit viel Zeit erstellt.

Bevor ich es vergesse, beide Rechner benutzen die gleiche Datenbank.

Mein Programm läuft auf ca. 20 PC und 10-15 Laptops die auf den gleichen Server zugreifen ohne Probleme, nur auf meinem Laptop zeigt die Abfrage kein Ergebnis.
Heute wurde mir berichtet das nach einem Updaten von Win7 auf Win10 ein DBMemofeld nur noch Fragezeichen zeigt.

Alles ein wenig komisch ....
Die Software ist Zeit ca. 11 Jahren im Gebrauch und kaum verändert worden. Hat also Win2000, XP, sogar Vista, Win7 und auch schon Windows10 auf verschiedenen Rechner mit immer aktuellen Firebird Versionen gesehen und auch ohne Probleme gelaufen. (verschieden Betriebssysteme gleichzeitig)
Für mich kann es nur an der Hardware liegen. Aber ich lasse mich gern eines Besseren belehren.

Gruß und Danke für die Antworten
Peter
  Mit Zitat antworten Zitat
jobo

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

AW: Sql abrage mit "is Null"

  Alt 16. Jun 2016, 19:56
Du kommst wohl nicht drum herum, die Dateninhalte zu untersuchen und irgendwann mal Unterschiede zu finden. Die können aber bei gemeinsamer DB nur über Zugriffsoptionen des Client beeinflusst sein.
Ich würde mit Flamerobin oder isql (möglichst nicht Dein System) anfangen, PrüfAbfragen auf funktionierenden und dem nicht funktionierenden System laufen lassen.
Z.B. ein Count auf das Feld machen (ohne where clause)
Naheliegend wären ja eigentlich Firebird Client Einstellungen, die auf dem System verdreht sind. Aber da kenne ich mich nicht aus.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Sql abrage mit "is Null"

  Alt 17. Jun 2016, 00:46
Das Datenfeld "geloescht" ist VARCHAR und ist entweder NULL oder 'X'.
Beim Erstellen eines neuen Datensatzes wird der Wert auf NULL gesetzt. Löscht der Bediener einen Datensatz wird dieser nicht wirklich gelöscht, sondern nur ein "X" in das Feld "geloescht" gesetzt.
Grund Daten sollen erhalten bleiben und bei Bedarf zurückgeholt werden.
DBase ist wohl nicht kaputt zu kriegen

Bevor ich es vergesse, beide Rechner benutzen die gleiche Datenbank.
heißt das, das zwei Clients auf eine DB auf einem Server zugreifen?

Mein Programm läuft auf ca. 20 PC und 10-15 Laptops die auf den gleichen Server zugreifen ohne Probleme, nur auf meinem Laptop zeigt die Abfrage kein Ergebnis.
Also wenn Du auf deinem Laptop die Abfrage auf diese Datenbank durchführst werden alle "gelöschten" als nicht gelöscht ausgegeben und umgekehrt?

Heute wurde mir berichtet das nach einem Updaten von Win7 auf Win10 ein DBMemofeld nur noch Fragezeichen zeigt.
Dann solltest Du die Clienteinstellungen auf diesem Rechner mal überprüfen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Geda

Registriert seit: 24. Jul 2015
20 Beiträge
 
Delphi XE8 Professional
 
#9

AW: Sql abrage mit "is Null"

  Alt 17. Jun 2016, 07:31
Hallo Peter,

kannst Du bitte einfach einmal testweise zusätzlich zu "isNull" auf "= ''" prüfen.
Evtl. ist das Thema dann ganz schnell beendet.
- Oder hast Du das schon versucht?
Geert
  Mit Zitat antworten Zitat
jobo

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

AW: Sql abrage mit "is Null"

  Alt 17. Jun 2016, 08:41
Eine Prüfung auf ".. = NULL" dürfte nie wahr werden, weil NULL eben nicht definiert ist. Oder meinst Du etwas anderes mit auf " =" prüfen?
Gruß, Jo
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:26 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