Announcement

Collapse
No announcement yet.

Export von ParadoxDB zu MS SQL DB???

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

  • Export von ParadoxDB zu MS SQL DB???

    Hallo Leidensgenossen, <br>
    <br>
    ich habe hier ein kleines Tool in Delphi geschrieben das einen DB-Export von einer Paradox-DB macht. Folgendes Problem tritt nun <b>nur</b> bei der MS SQL-DB auf. Bei Datensätzen die Einträge mit dem Feldtypen ftCurrency enthalten verhält sich die MS SQL-DB merkwürdig... Der Wert 900,00 € in der Paradox-DB auch als Currency wird in der MS SQL-DB zum Wert 90.000,00 € als Feldtyp money. <br>
    Hat jemand für mich einen Anhaltspunkt zu diesem Problem???

    Danke schon mal.

    Gruß,

    DG

  • #2
    Hallo,

    welchen Zugriffsweg (ODBC, BDE, ADO, dbGO etc.) nutzt das Programm für die beteiligten Datenbanken

    Comment


    • #3
      Ich nutze die BDE.
      Hab auch keine andere Möglichkeit

      Comment


      • #4
        Sieht mir danach aus, als ob das falsche Tausendertrennzeichen verwendet wird -> also irgendwas mit Konvertierung in String und wieder zurück.
        Zeig mal Deinen Quälcode dazu

        Comment


        • #5
          <pre> with TTable.Create(Self) do
          try
          TableName := vcImagePath + '\' + pTable.TableName + '.DB';
          TableType := ttParadox;
          Open;
          pStrings.Clear;
          GetFieldNames(pStrings);
          vString := CommaToSemicolon(pStrings.Commatext);
          First;
          while not EOF do
          begin
          // 03-03
          if OracleDB then
          pTable.Database.StartTransaction;
          try
          pTable.Insert;
          pTable.FieldValues[vString] := FieldValues[vString];
          try
          pTable.Post;
          except
          on E: Exception do
          begin
          LogRecord(
          E.Classname + ': ' + E.Message,
          pTable);
          end;
          end;</pre>
          Ich weiss nicht ob das weiter hilft? <br>
          pTable.FieldValues[vString] := FieldValues[vString]; <-- Hier stehen die Werte so drin... z.B. 3000.5<br>
          Kann das ganze am BDE-Treiber für MSSQL liegen? Auf allen andern DB's läuft es einwandfrei

          Comment


          • #6
            Mir ist das noch eine Fehlermeldung entgangen.<br>
            Vielleicht hilft euch die noch weiter.<br>
            SQL Error: MSSQL - Ein char-Wert kann nicht in einen money-Wert konvertiert werden. Die Syntax des char-Wertes ist falsch.<br>
            Ach so, die Werte stehen nicht mit Punkt sondern Komma drin... also 3000,5<br>
            <br>
            Gruß,

            D

            Comment


            • #7
              Ist doch immerhin schon eine Fehlermeldung.
              Geh die Felder einzeln durch und mach eine Fallunterscheidung:
              <SNIP NOT TESTED>
              <PRE>
              for i := 0 to dstTable.FieldCount-1 do
              begin
              case dstTable.Fields[i].DataType of
              ftCurrency: dstTable.Fields[i].AsCurrency := srcTable.Fields[i].AsCurrency;
              else dstTable.Fields[i].Value := srcTable.Fields[i].Value;
              end;
              end;
              </PRE>
              </SNIP&gt

              Comment

              Working...
              X