Announcement

Collapse
No announcement yet.

Problem mit SQL Abfrage

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

  • Problem mit SQL Abfrage

    Hallo,

    weis jemand warum bei folgendem Script nich korrekt gerechnet wird ?

    <pre>
    SELECT (Auftragsmenge - Abgerufen) As NochOffen
    FROM Auftrag_PosData
    </pre>

    Auftragsmenge = 5
    Abrufmenge = 0
    = 5

    aber es kommt immer 0 raus ....

    In der entsprechenden Tabelle steht bei Abgerufen noch 0 drin.

    Mathias

  • #2
    Hi,
    <br>
    <br>was liefert die folgende Abfrage in der IB Console oder dem Query Analyser? (bitte nicht mit Delphi Prog. ausführen)
    <pre>
    SELECT Auftragsmenge, Abgerufen, (Auftragsmenge - Abgerufen) As NochOffen
    FROM
    Auftrag_PosData
    Where
    (Auftragsmenge - Abgerufen) = 0
    </pre>
    <br>Welchen Datentyp besitzen "Auftragsmenge" und "Abgerufen" in der Tabelle?
    <br>
    <br>mfg
    <br>P

    Comment


    • #3
      Hi Partick,

      naja das war ja wieder was, ich konnte das Problem lokalisieren.
      Das Datenfeld "Abgerufen" wurde nachträglich in die Tabelle eingefügt. Zu diesem Zeitpunkt gab es bereits 15.000 Datensätze.
      Ich arbeite z.Z. mit Access 2000 (JET 4.0). Wie es aussieht gibt es
      da ein Bug bei nachträglich eingeführen Felder. Wenn diese nach dem einfügen nicht mit einen Wert initialisiert werden wird nicht korrekt in SQL Abfragen gerechnet.

      Durch folgendes Script habe ich das Feld nun nachträglich initialisiert.

      <pre>
      Update Auftrag_Pos
      Set Abgerufen = 0
      </pre>

      Nach der Aktualisierung wurde dann auch korrekt in SQL gerechnet.

      Dieses Porblem entsteht bei Jet 4.0 Access 2000 in Verbindung mit Replikate (DesignMaster und Replikat).

      Gruß
      Mathia

      Comment


      • #4
        Hi,
        <br>
        <br>das ist kein Bug. Das ist SQl. Neue Felder ohne explizieter Wertzuweisung erhalten den Wert NULL.
        <br>Und jede Berechnung mit einem Feld, das den Wert NULL hat liefert NULL zurück.
        <br>
        <br>In deinem Fall:
        <br>SELECT (Auftragsmenge - Abgerufen) As NochOffen
        <br>FROM Auftrag_PosData
        <br>
        <br>kam immer 0 heraus.
        <br>In einem Richtigen DB Systeme wäre immer NULL heraus gekommen und man hätte den Fehler wesentlich schneller erkannt.
        Denn Auftragsmenge - NULL = NULL und nicht 0.
        Ich denke mal das ist irgend eine Access Einstellung, die dafür sorgt das nicht NULL sondern 0 ausgegeben wurde.
        <br>
        <br>mfg
        <br>P

        Comment


        • #5
          Hi Patrick,

          okay vielen Dank für die Info.

          Gruß
          Mathia

          Comment

          Working...
          X