Announcement

Collapse
No announcement yet.

Numerische Felder in MS-SQL

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

  • Numerische Felder in MS-SQL

    Bei Füllen eines decimal Feldes muß ich bei einem Wert mit Nachkommastellen das Komma in einen Punkt verwandeln, damit das Komma nicht irrtümlich als Trennzeichen verwendet wird. Wenn ich diesen Wert jetzt aber aus einer Tabelle lese und dann in eine andere schreiben will habe ich das gleiche Problem. Der wert wird mit Komma geliefert muß aber mit Punkt übergeben werden. Was läuft da schief ?

  • #2
    Hallo,

    über welchen Weg erfolgt der Zugriff auf diese Datenbank? Wenn ich mir eine Tabelle über <i>SQL Query Analyzer</i> anschaue, wird dort der Punkt als Dezimaltrennzeichen verwendet. Wenn ich jedoch in Delphi über die <i>ADO Express</i>-Komponenten auf die Schnelle ein Programm zusammenbaue, verwendet Delphi als Voreinstellung die europäische Darstellung (Komma als Dezimaltrenner), die über die <i>Ländereinstellung</i> (Systemsteuerung) für diesen Rechner vorbelegt wurde. Auch das Datum wird automatisch in das bei uns gebräuchliche Format konvertiert

    Comment


    • #3
      Hallo,
      die Daten werde zuerst mittels Delphi und ADO zum SQL-Server transferiert.Die Umwandlung von Komma in Punkt ist da ja kein Problem.
      Nun wollte ich aber in einer ASP-Anwendnung Daten von einer Tabelle in eine andere kopieren und bin bei diesem Problem aufgelaufen.<g>
      Mir ist nicht klar warum zum einen die lokale Einstellung benutzt wird (beim Lesen) und im anderen Fall (beim Schreiben) nicht.
      Und irgendwie denke ich, ich mache etwas falsch, denn das Problem müßte doch auch andere Entwickler stören

      Comment


      • #4
        Hallo,

        was bedeutet "<i>Nun wollte ich aber in einer ASP-Anwendnung Daten von einer Tabelle in eine andere kopieren</i>" im Detail? Wenn die Daten über SQL nur innerhalb der Datenbank umkopiert werden (ohne von der ASP selbst angefasst zur werden), dürfte das Problem nicht auftreten.

        Wenn allerdings die ASP die Daten aus einer Tabelle einsammelt und erst im zweiten Schritt in die zweite einfügt, wird es darauf ankommen, wie die ASP vorgeht. Wenn alles über Stored Procedures bzw. parametisierte UPDATE-Anweisungen läuft, kann die ASP auf <b>Command</b>-Objektinstanzen mit entsprechend deklarierten <b>Parameter</b>-Objekten zurückgreifen, so dass die Datentypen korrekt behandelt werden können

        Comment


        • #5
          Tja, da scheint das Problem zu stecken
          Ich lese in einer schleife und schreibe in eine andere Tabelle weg
          z.B. einen Warenkorb in eine Bestellung kopieren) a la "INSERT INTO Values (rs2("preis_vk"),,,,)"
          Hat ich mir nicht so kompliziert vorgestellt<g&gt

          Comment


          • #6
            Hallo,

            als kompliziert würde ich das nicht beschreiben, sondern als Normalfall. Bei einer Webanwendung spielt ja auch Geschwindigkeit eine gewisse Rolle, daher würde ich den Insert über eine Stored Procedure in der SQL Server-Datenbank laufen lassen. Selbst dann, wenn diese SP von der ASP für jeden einzufügenden Datensatz aufgerufen werden muss, legen die Parameter (und die dann notwendigen Parameter-Objekte) die Datentypen exakt fest. Und wenn man dann einmal die unterschiedlichen Alternativen in Bezug auf die Performance vergleicht, ist die SP unschlagbar schnell. Man schlägt somit 2 Fliegen mit einer Klappe ;-

            Comment


            • #7
              Warum nicht ein geschicktes

              insert into bestellen (felder)
              select <felder> from warenkorb where ...;

              sondern gleich eine ganze Stored Procedure

              Comment

              Working...
              X