Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi .Isnull liefert true trotz Werte in DB (https://www.delphipraxis.net/166766-isnull-liefert-true-trotz-werte-db.html)

PhilmacFLy 28. Feb 2012 15:33

Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos 6.6.6

.Isnull liefert true trotz Werte in DB
 
Moin Dp

Ich hab folgendes Problem, ich lasse folgenden Code laufen:
Delphi-Quellcode:
 with ZReadOnlyQuery1 do
    begin
      SQL.Text := 'Select ID_Messmodus From Messungen Where ID_Mess = :id';
      Params.ParamByName('id').AsInteger := Frm_Messung.lmess[0];
      Open;
      messmodus := FieldbyName('ID_Messmodus').AsInteger;
      Close;
      //messmodus := 5;
      SQL.Text := 'Select * from Analyseanzeige where ID_Messmodus = :mo';
      Params.ParamByName('mo').AsInteger := messmodus;
      Open;
        if FieldbyName('Belastung').IsNull then
          begin
            aktionenb := true;
            belastungb := true;
            koordinationb := true;
            schwankungb := true;
            kraftib := true;
            symmetrieib := true;
          end
        else
          begin
            aktionenb := FieldbyName('Aktionen').AsBoolean;
            belastungb := FieldbyName('Aktionen').AsBoolean;
            koordinationb := FieldbyName('Aktionen').AsBoolean;
            schwankungb := FieldbyName('Aktionen').AsBoolean;
            kraftib := FieldbyName('Aktionen').AsBoolean;
            symmetrieib := FieldbyName('Aktionen').AsBoolean;
            showmessage(booltostr(aktionenb, true));
          end;
    end;
Jetzt liefert mir die Abfrage auf IsNull immer true obwohl werte bei der id stehen die in messmodus steht.
Ich habs mit fester Messmodus Id probier, ich hab probiert im Statement eine feste ID reinzuschreiben, und ich habs ohne '*' probiert immer wieder das selbe Ergebniss, ich hab einfach keine Idee mehr worans liegen könnte.
Hier noch ein Screenshot von der DB:
http://www.abload.de/img/dbauszug88up0.png
Wäre sehr froh wenn mir jemand von euch helfen könnte.

shmia 28. Feb 2012 16:20

AW: .Isnull liefert true trotz Werte in DB
 
Zitat:

Zitat von PhilmacFLy (Beitrag 1153460)
Jetzt liefert mir die Abfrage auf IsNull immer true obwohl werte bei der id stehen die in messmodus steht.

Du musst auch das richtige Feld testen; z.Zt. testest du das Feld Belastung.
Delphi-Quellcode:
begin
  // Warum wird hier immer nur das Feld "Aktionen" ausgelesen?
  aktionenb := FieldbyName('Aktionen').AsBoolean;
  belastungb := FieldbyName('Aktionen').AsBoolean;
  koordinationb := FieldbyName('Aktionen').AsBoolean;
  schwankungb := FieldbyName('Aktionen').AsBoolean;
  kraftib := FieldbyName('Aktionen').AsBoolean;
  symmetrieib := FieldbyName('Aktionen').AsBoolean;
  showmessage(booltostr(aktionenb, true));
end;

p80286 28. Feb 2012 17:07

AW: .Isnull liefert true trotz Werte in DB
 
Ich geh mal davon aus,daß er ungeschickt formuliert hat.
Wahrscheinlich ist er schon mit dem Debugger durch seinen Code gegangen und is immer im ".IsNull-Zweig" gelandet!?

Was passiert denn wenn Du auf "notnull" (1) prüfst?
Gruß
K-H

hoika 28. Feb 2012 19:11

AW: .Isnull liefert true trotz Werte in DB
 
Hallo,

hm, vielleicht ein Problem mit ZEOS ?
waa ist, wenn du auf

AsString('Belastung').AsString=''

prüfst ?


Heiko

tsteinmaurer 28. Feb 2012 21:46

AW: .Isnull liefert true trotz Werte in DB
 
Entweder Bug in ZEOS oder deine Query liefert keine Ergebnismenge. Ich sehe z.B. auch keinen Datensatz für ID_Messmodus = 5 (laut deinem Kommentar im Quellcode) in deinem Screenshot.

HiWieGehts 29. Feb 2012 06:46

AW: .Isnull liefert true trotz Werte in DB
 
Hallo,

nimm ein DBGrid und hänge es auf ZReadOnlyQuery1. Dann siehst du, ob Daten gelesen werden. Wenn ja - Rätsel, wenn nein stimmt irgend was mit der DB-Abfrage nicht.

Furtbichler 29. Feb 2012 06:51

AW: .Isnull liefert true trotz Werte in DB
 
Welchen Wert hat 'Frm_Messung.lmess[0]'?
Was liefert die Query 'Select ID_Messmodus From Messungen Where ID_Mess = :id'?

Prüfe doch auch noch, ob die Analyseanzeige-Query überhaupt eine Ergebnismenge zurückliefert.

Und wieso erschlägst Du das nicht mit einer einzigen Query?
Code:
select A.* 
  From Analyseanzeige A
       join Messmodus M on A.ID_Messmodus = M.ID_Messmodus
where M.ID_Mess = :id
Dann kannst Du für bestimmte 'id' Werte deine Query zunächst in der SQL-Konsole testen (IBExpert, nehme ich an).

PhilmacFLy 29. Feb 2012 08:40

AW: .Isnull liefert true trotz Werte in DB
 
Das Problem war viel einfacher, ich hatte vorher keine einstellung an die ZConnection geliefert :oops:
Ich war mir eigentlich sicher das ich das vorher gemacht hatte, aber die anderen SQL Abfragen hab ich über eine Connection und einem Query auf einer anderen Form abgewickelt. Fragt mich nur nicht warum.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 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