Announcement

Collapse
No announcement yet.

Merkwürdiges Verhalten nach Query.open

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Merkwürdiges Verhalten nach Query.open

    Hallo,

    ich habe da ein Verhalten, das ich mir absolut nicht erklaeren kann. Zunaechst wird eine Tabelle mit einer sql-Anweisung 'ganz' normal geoeffnet : <br>
    with QrDetail do <br>
    begin <br>
    close; <br>
    SQL.clear;<br>
    SQL.add('Select h.Name, h.Typ, d.*'); //Vorwarnungsintervall, d.Vorwarntext, d.Eintrittsdatum, d.Wartungsintervall, d.Eintrittstext, d.Erinnerungsintervall, d.Erinnerungstext, d.HauptNr, d.ZeitStempel, d.DetailNr, d.Zustand, d.UND, d.ODER ');<br>
    Sql.add('From '+ PfadGlobal+'db\DetailPlan.db d , '+ PfadGlobal+'db\Service.db h'); <br>
    sql.add('Where d.HauptNr = ' +IntToStr(HauptNr)+' AND h.HauptNr = '+IntToStr(HauptNr)); <br>
    If sortiert then <br>
    Sql.Add(' ORDER BY Eintrittsdatum');<br>
    open; <br>

    Beim Open Befehl durchlaeuft das Programm mehrere Ereignisse von GridObjekten, da ein Master-Detail-Beziehung besteht.
    Hierbei wird nun wieder um Feld der Mastertabelle abgefragt, obwohl die Eigenschaft Query.active auf true ist, kommt die Fehlermeldung, das Feld waere nicht vorhanden : <br>
    If QRDetail.Active then <br>
    begin
    If QrDetail['UND'] <> NULL then <br>
    If QrDetail['UND'] then <br>
    RadioGroup1.ItemIndex :=0;<br>
    If QrDetail['ODER'] <> NULL then <br>
    If QrDetail['ODER'] then <br>
    RadioGroup1.ItemIndex :=1; <br>
    end; <br>

    Das merkwürdige ist, dass das Feld UND da ist und der Debugger hier noch normal durchlaeuft, beim 'ODER' Feld kommt jedoch Mekka.
    Bestaetigt man die Fehlermeldung und hat Glueck laeuft das Programm einfach weiter, beim zweitenmal ist das Feld 'ODER' auch vorhanden und wird, alls die IDE das ganz nicht stoppt, im einem GRid angezeigt.
    Woran koennte das nun liegen, ist evt. die Abfrage ueber Query.active doch nicht so ganz das richtige ?

    Gruss

    Frank

  • #2
    Hallo,

    banale Frage : ist das Feld in der Feldliste von QRDetail vorhanden? Wegen einiger merkwürdiger Verhalten nutze ich das fields[x].value. Damit konnte ich dynamische Queryfelder sicherer ansprechen. <br>
    z.B. if QRDetail.fields[13].value <> Null.

    Gruß Günte

    Comment


    • #3
      Hallo Günter,

      ja das Feld ist in der Tabelle enthalten.
      Die Abfrage

      if QRDetail.fields[13].value <> Null then usw.

      nutzt nur wenn das Feld da ist, aber noch kein Eintrag hat.
      Seltsamerweise scheint es so ,als sei dieses Feld aber zu dem Zeitpunkt nicht vorhanden.

      Ich habe nur die Vermutung, dass es evt. damit zusammenhängt, dass die Abfragen von der Prozedur formcreate ausgehen, in mehreren Ereignissen verschachtelt. Jedenfalls funktionierts, wenn ich waehrend formCreate die Ereignisse unterdruecke.

      Gruss
      Fran

      Comment

      Working...
      X