Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Sql abrage mit "is Null" (https://www.delphipraxis.net/189469-sql-abrage-mit-null.html)

pbfdg 15. Jun 2016 22:01

Datenbank: Firebird • Version: 2.5.5 • Zugriff über: Zeos 7.1.3

Sql abrage mit "is Null"
 
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

Lemmy 15. Jun 2016 22:17

AW: Sql abrage mit "is Null"
 
dann sind halt die Daten anders.. Bitte beachten: ein leerer String ist nicht gleich IS NULL!

p80286 15. Jun 2016 22:22

AW: Sql abrage mit "is Null"
 
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

Geda 16. Jun 2016 06:10

AW: Sql abrage mit "is Null"
 
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 ---

hoika 16. Jun 2016 08:34

AW: Sql abrage mit "is Null"
 
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

pbfdg 16. Jun 2016 18:33

AW: Sql abrage mit "is Null"
 
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

jobo 16. Jun 2016 18:56

AW: Sql abrage mit "is Null"
 
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.

p80286 16. Jun 2016 23:46

AW: Sql abrage mit "is Null"
 
Zitat:

Zitat von pbfdg (Beitrag 1340362)
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

Zitat:

Zitat von pbfdg (Beitrag 1340362)
Bevor ich es vergesse, beide Rechner benutzen die gleiche Datenbank.

heißt das, das zwei Clients auf eine DB auf einem Server zugreifen?

Zitat:

Zitat von pbfdg (Beitrag 1340362)
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?

Zitat:

Zitat von pbfdg (Beitrag 1340362)
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

Geda 17. Jun 2016 06:31

AW: Sql abrage mit "is Null"
 
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?

jobo 17. Jun 2016 07:41

AW: Sql abrage mit "is Null"
 
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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr.
Seite 1 von 2  1 2      

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