Nachkommastellen abgeschnitten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nachkommastellen abgeschnitten

    Hallo zusammen,
    ich führe eine DB-Abfrage auf MSSQL7 Datenbank aus. Das passt alles.
    (Mit ADODB).
    Das Problem ist nur, dass (außer beim 1. Datensatz) bei den Werten die Nachkommastellen nicht mit übernommen werden. Was mach ich da falsch?

    Ich führe folgende Query aus:

    $FAKTOR=0.511291881;
    $query="select Monat as Monat,Anwesend as Anwesend, Urlaub as Urlaub, Seminar as Seminar, DUpK * $FAKTOR as DUpK, DKpT as DKpT from vw_planung where P_ID=$PID AND (Monat BETWEEN CONVERT(DATETIME,'$VONSQL', 102) AND CONVERT(DATETIME,'$BISSQL', 102)) order by Monat;";
    $RS=$connection->Execute($query);
    HTML-Ausgabe:
    Jan 22 2005 12:00AM ** 13 ** 0.00 ** 0 ** 39.00134468268 ** 3.75
    Feb 22 2005 12:00AM ** 13 ** 0.00 ** 0 ** 39 ** 3
    Mar 22 2005 12:00AM ** 13 ** 0.00 ** 0 ** 39 ** 3
    Apr 22 2005 12:00AM ** 13 ** 0.00 ** 0 ** 39 ** 3
    May 22 2005 12:00AM ** 13 ** 0.00 ** 0 ** 39 ** 3
    In der Datenbank sind die Felder als entweder float oder real gesetzt.

    if ($RS)
    {
    while($o=$RS->FetchNextObject())
    {
    print $o->MONAT." ** ";
    print $o->ANWESEND." ** ";
    print number_format($o->URLAUB,2)." ** ";
    print $o->SEMINAR." ** ";
    print $o->DUPK." ** ";
    print $o->DKPT."<BR>";
    $arr_data[$i]=array($o->MONAT,$o->ANWESEND,$o->URLAUB,$o->SEMINAR,$o->DUPK,$o->DKPT);
    $i++;
    }

    }

  • #2
    Interessant.

    Und das passiert immer nur beim ersten Wert?
    Schonmal komplett neue Datensätze angelegt und nochmal versucht?
    Was passiert wenn du dein Ergebnis zum Beispiel sortierst, steht dann der Float-Wert immer noch an erster Stelle?
    http://hantschel.info

    Kommentar


    • #3
      also erstmal wuerde ich das AS in deinem query weglassen, macht das doch nur komplex. z.B. Urlaub as Urlaub... schreib doch einfach Urlaub ist das selbe. Könnte sein das es nicht geht weil du die Variuablem im Query in Hochkomma setzen musst z.b. Where '$id' = bla

      mfg Ess0r
      nooby ist besser als gar nicht angangen ;D

      Kommentar


      • #4
        Also, auch wenn ich die Sortierung raus nehme, wurscht, immer der 1.Datensatz, bei dem es richtig ist, die anderen Werte stehen ohne Kommastellen da.

        Kommentar


        • #5
          http://www.php-resource.de/forum/sho...threadid=50454 lesen und umsetzen bitte.

          Kommentar


          • #6
            Ich weiß nicht, was dein Problem ist, ich habe mein Problem ausführlich beschrieben. Aber danke! Durch deine qualifizierte Antwort hat es mir doch wirklich meine Nachkommastellen hergezaubert.

            Kommentar


            • #7
              ich wäre für php-tags und etwas mehr info dankbar.
              d.h. sind die daten vollständig (mit allen nachkommastellen) in der db gespeichert?

              gibt es da testausgaben zu?

              Kommentar


              • #8
                Die Daten sind vollständig in der Datenbank, mit Nachkommastellen.
                Evt. liegt es an ADODB, dass die Methode FetchObject() nicht so tut wie sie soll.
                Dagegen spricht aber, dass der jeweils erste Datensatz korrekt ist.
                Lass ich mir alles mit
                PHP-Code:
                if ($RS
                {
                    while(
                $o=$RS->FetchNextObject())
                    {
                        
                print_r($o);
                        
                $i++;
                    }
                                

                auslesen, dann bekomme ich als Ergebnis:

                • adofetchobj Object ( [MONAT] => Jan 22 2005 12:00AM [ANWESEND] => 13 [URLAUB] => 0 [SEMINAR] => 0 [DUPK] => 39.00134468268 [DKPT] => 3.75 ) adofetchobj Object ( [MONAT] => Feb 22 2005 12:00AM [ANWESEND] => 13 [URLAUB] => 0 [SEMINAR] => 0 [DUPK] => 39 [DKPT] => 3 )


                Wie gesagt, ist sehr komisch.

                Kommentar


                • #9
                  Anfänglich dachte ich, PHP baut intern ein Array auf, wo es die Daten reinschreibt, und weisst den Feldern den Datentyp des ersten Recordsets zu. Aber dagegen spricht wie gesagt, der erste korrekte Datensatz.

                  Ändere ich meinen Select Folgendermaßen:
                  PHP-Code:
                  $query="select Monat, 
                          Anwesend, 
                          Urlaub, 
                          Seminar as Seminar, 
                          DUpK * 
                  $FAKTOR as DUpK, 
                          convert(varchar(20),DUpK) as DUpK
                          from vw_planung 
                          where P_ID=
                  $PID AND (Monat BETWEEN '$VONSQL' AND '$BISSQL') 
                          order by Monat;"

                  dann bekomm ich die vollständigen Daten.
                  Nachteil: Ich kann jetzt nicht mehr mit rechnen.

                  Kommentar

                  Lädt...
                  X