AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADOQuerry funktioniert nicht richtig
Thema durchsuchen
Ansicht
Themen-Optionen

ADOQuerry funktioniert nicht richtig

Ein Thema von Luckner · begonnen am 17. Dez 2018 · letzter Beitrag vom 18. Dez 2018
Antwort Antwort
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

ADOQuerry funktioniert nicht richtig

  Alt 17. Dez 2018, 14:10
Datenbank: Access • Version: 2003 • Zugriff über: ADOquerry
Hallo,
meine Select-Abfrage:

Delphi-Quellcode:
Datamodule1.ADOQueryRollenLagerplatz.SQL.Add('SELECT Materialrollen.*, Rollenlager.Lagerplatz, RollenKommentar.Kommentar FROM (Materialrollen LEFT JOIN Rollenlager ON Materialrollen.Rollennummer = Rollenlager.Rollennummer)');
Datamodule1.ADOQueryRollenLagerplatz.SQL.Add('LEFT JOIN RollenKommentar ON Materialrollen.Rollennummer = RollenKommentar.Rollennummer where Materialrollen.DatumAb = NULL ORDER BY Materialrollen.DatumWE');
funktioniert eigentlich, jedoch ohne die "where Materialrollen.DatumAb = NULL" Anweisung. Das Feld "DatumAb" git es nur in der Tabelle "Materialrollen". Eigentlich müsste man die Tabelle "Materialrollen" vorselektieren. Aber möglicherweise geht Das auch in der oberen Anweisung. Könnte mir Jemand helfen?

Gruß, Luckner
  Mit Zitat antworten Zitat
jobo

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

AW: ADOQuerry funktioniert nicht richtig

  Alt 17. Dez 2018, 14:28
Also ich würde sagen:
Ein Vergleich mit NULL immer so:
<irgendeinfeld> is Null
oder
<irgendeinfeld> is not Null

Da Du keine Fehlermeldung lieferst, wäre meine Prognose in der Form: Syntaxfehler bzw. immer leere Menge.
Aber wer weiß, Access macht vielleicht auch das anders als alle anderen.

Dann:
Damit das mit dem Outerjoin und dem "is Null" dahinter klappt, würde ich die is null Prüfung mit in das Outerjoin Kriterium packen.
Gruß, Jo
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: ADOQuerry funktioniert nicht richtig

  Alt 17. Dez 2018, 15:03
den Fehler habe ich vergessen. Ohne die where-Anweisung werden alle Rollen angezeigt. Mit dieser Anweisung keine. Wobei ich weiß, dass es ca. 200 Einträge gibt, die das Kriterium "Materialrollen.DatumAb = NULL" erfüllen.

Luckner
  Mit Zitat antworten Zitat
hoika

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

AW: ADOQuerry funktioniert nicht richtig

  Alt 17. Dez 2018, 15:09
Hallo,
dann führe die Ursprungs-Query noch mal aus und sage uns den Fehler.
Heiko
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: ADOQuerry funktioniert nicht richtig

  Alt 17. Dez 2018, 15:13
Hallo jobo,

danke für den Hinweis nicht "where Materialrollen.DatumAb = NULL" sondern "where Materialrollen.DatumAb is NULL".

Jetzt funktioniert es.

Gruß, Luckner
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: ADOQuerry funktioniert nicht richtig

  Alt 17. Dez 2018, 20:33
ADO schluckt "irgendwas=NULL" problemlos, da gibt es keine Fehlermeldung.

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

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

AW: ADOQuerry funktioniert nicht richtig

  Alt 17. Dez 2018, 21:54
Hallo,
auch bei Firebird klappt ein =NULL, ob das Ergebnis das gewünschte Ergebnis ist, darf angezweifelt werden.

https://www.quora.com/What-is-the-di...2%80%9D-in-SQL
Heiko

Geändert von hoika (17. Dez 2018 um 22:58 Uhr)
  Mit Zitat antworten Zitat
jobo

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

AW: ADOQuerry funktioniert nicht richtig

  Alt 18. Dez 2018, 07:14
ADO schluckt "irgendwas=NULL" problemlos, da gibt es keine Fehlermeldung.
Hallo,
auch bei Firebird klappt ein =NULL, ob das Ergebnis das gewünschte Ergebnis ist, darf angezweifelt werden.
Ja, sorry, meine Antwort war schlampig formuliert.
Ich habe im Eröffnungspost keine Erläuterung zum Problem gelesen, nicht mal das wörtliche "geht nicht". Ok, dafür war es ein "..funktioniert, aber nicht mit..". Ein erster Blick hat zwar das "=Null" ergeben, aber das muss ja nicht alles sein.
Ich wollte einfach nur wissen, ob es Fehlermeldungen gibt und welche Erwartungshaltung vorliegt.

Für die Akten: ADO ist es sicher sowieso egal, denn selbst die Datenbank interessiert es nicht, ob man den = Operator (und andere) auf NULL anwendet.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: ADOQuerry funktioniert nicht richtig

  Alt 18. Dez 2018, 07:31
Ich bin oft genug vor diese Wand gelaufen, der Fehler sitzt eben meist vor der Tastatur.

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

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

AW: ADOQuerry funktioniert nicht richtig

  Alt 18. Dez 2018, 07:36
Ja, sehr gemein auch die Variante NULL Feldinhalt konkateniert mit anderen Feldern oder Textkonstanten oder Null + <zahl>.
Gruß, Jo
  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 15:49 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