Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Dezimal in Paradox (https://www.delphipraxis.net/14106-dezimal-paradox.html)

mercanery 2. Jan 2004 12:32


Dezimal in Paradox
 
Mache das mit DBGrid und nem Query. Immer wenn die eine Zahl in die Paradox-DB eingefügt werden soll, welche Stellen hinterm Komma hat, kommt bei mir

"Keine Übereinstimmung der Typen im Ausdruck"

Das sagt MIR leider garnix...
Hab die DB mit Access erstellt und das betrffende Feld mit Dezimal "formatiert" undhabe dann die Datenbank als Paradox7-8 exportiert.
Wenn ich die Datenbank wieder importiere steht da dann anstatt dezimal double... :gruebel:

Wat is da los?

MrSpock 2. Jan 2004 13:01

Re: Dezimal in Paradox
 
Hallo mercanery,

tritt der Fehler beim Aufruf von ExecSQL auf? Wie sieht dein SQL Statement aus, das diesen Fehler erzeugt?

Falls du den Typ des entsprechenden Paradoxfeldes nicht sehen kannst (z.B. über DB Oberfläche oder den DB Explorer von Delphi), lege doch einmal ein TTable auf dein Formular, verbinde es mit der Paradoxtabelle und mache einen Rechtsklick auf das Objekt,um alle Felder zu deiner Anwendung hinzuzufügen. Dann wähle das entsprechende Feld aus und schaue im OI nach, welchen Typ es hat.

mercanery 2. Jan 2004 13:33

Re: Dezimal in Paradox
 
Wenn ich das über den Monitor per Hand eingebe, dann wird das korrekt übernommen... :gruebel:

btw: laut Monitor ist das ding vom Typ "number" mit der physikalischen Länge von "8" und die zu importierende Nummer ist immer 4-stellig (eine Variable, die ber
Delphi-Quellcode:
STR()
in ein Edit-Feld eingefügt wurde)

PS: hier noch das SQL-Statement im zusammnehang (habe das schwer im Verdacht;)):
Delphi-Quellcode:
     if Ed_Fechter_1.text=''
        then
        else begin
        sql.clear;
        sql.add('INSERT INTO fechter (name,index_1,index_2) VALUES ('+QuotedStr(Ed_Fechter_1.text)+','+QuotedStr(Ed_Index_1_1.text)+','+QuotedStr(Ed_Index_2_1.text)+');');
        execsql;
             end;

mercanery 2. Jan 2004 16:24

Re: Dezimal in Paradox
 
noch was:

Wenn ich das ganze mit dBase mache ignoriert er die Kommata komplett...(sprich: 1.000 => 1000 und 0.500 => 500 und 0.666 :twisted: => 666)

mercanery 2. Jan 2004 17:24

Re: Dezimal in Paradox
 
nach einigem hin-und-her-geteste:

Werte werden in dBase ausgegeben, als gäbe es kein Komma
ganze zahlen gehen.
Zahlen, die Delphi mir gekürzt hat (0.837) gehen auch

Zahlen, die einen "sinnvollen" Bruch darstellen können (0.5 bzw. 1/2 | 0.333 bzw. 1/3 | 0.666 bzw. 2/3, usw.) geben den Fehler "Keine Übereinstimmung der Typen im Ausdruck"

mikhal 2. Jan 2004 18:47

Re: Dezimal in Paradox
 
NUMBER( 8 ) ist auch eine Zahl ohne Nachkommastellen in dBase. Um Nachkommastellen zuzulassen bedarf es der Definition der Anzahl der Nachkommastellen. Beispiel
SQL-Code:
NUMBER(8,3) -- dBase: Zahlen mit drei Nachkommastellen
NUMBER(10) -- Paradox: laut Hilfe -10^307 - 10^308 als Double mit 15 signifikanten Stellen

Am besten legst du deine Tabelle mit der Datenbankoberfläche an, dann siehst du auch gleich bei der Anlage die Unterschiede.

Grüße
Mikhal

mercanery 2. Jan 2004 19:05

Re: Dezimal in Paradox
 
die gibbet bei mir irgendwie net...also die Datenbankoberfläche...die sollte doch unter tools sein, oder?
SON SCHEISS!!!


kann mir vielleicht jemand seine Datenbankoberfläche per Mail schicken? (nat. nur sofern das legal und möglich ist...!)

mercanery 5. Jan 2004 10:24

Re: Dezimal in Paradox
 
so gehts zumindest mit dBase:
Delphi-Quellcode:
sql.add('INSERT INTO fechter (name,index_1,index_2) VALUES ('+QuotedStr(Ed_Fechter_8.text)+','+Ed_Index_1_8.text+','+QuotedStr(Ed_Index_2_8.text)+');');

MrSpock 5. Jan 2004 17:03

Re: Dezimal in Paradox
 
Hallo mercanery,

wenn index1 und index2 keine Stringfelder sind, darfst du auch nicht mit QuotedStr arbeiten. Besser gesagt du solltest es nicht tun, da du sonst darauf angewiesen bist, wie Paradox Strings in Real umwandelt. Je nach Einstellungen in der BDE könnte dein Problem dann auch sein, dass das Komma als Tausenderseparator und der Punkt als Dezimalpunkt interpretiert würde, was für dich dann so aussieht, als würde er das Komma ignorieren.

Also lass einfach das QuotedStr bei den Zahlenfeldern weg, dann sollte es funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz