AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FB Double Precision zu Decimal(9,2) ohne Datenverlust ?
Thema durchsuchen
Ansicht
Themen-Optionen

FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

Offene Frage von "DataCool"
Ein Thema von DataCool · begonnen am 23. Jan 2008 · letzter Beitrag vom 24. Jan 2008
Antwort Antwort
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 15:32
Datenbank: Firebird • Version: 1.0.0.794 • Zugriff über: BDE
Hi Leute,

möchte meine Datenbankstruktur wie im Titel schon beschrieben anpassen:

Dabei möchte ich mehere Felder vom Typ Double Precision zum Typ DECIMAL(9,2) umwandeln.
OHNE dabei die DAten zu verlieren.

Hatte gehofft das :

SQL-Code:
ALTER TABLE XYZ

  ALTER COLUMN BANK_EINZAHLUNG TYPE DECIMAL(9,2);
Leider wird dieses Statement nicht angenommen.

Jemand eine Idee ?

Danke und Gruß

Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 15:33
Füge temporär eine weitere Spalte hinzu.
Markus Kinzler
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 15:35
Zitat von DataCool:
Jemand eine Idee ?
Keine elegante, aber ja:

1) neue spalte anlegen
2) daten aus der alten spalte mit nem cast einfügen (sollte ja funktionieren, '9,2' liegt im double-bereich)
3) alte spalte löschen, neue umbenennen und gegebenenfalls not null setzen

schritt 3 würde ich erst nach einem check ausführen (sum(abs(alt-neu)) = 0 oder sowas)
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 15:40
Hi,

ok zwar nicht schön aber das funktioniert bestimmt.
Muss mir jetzt nur nen kleines Tool bauen,
was das ganze über mehere Tabellen und Felder automatisch macht.

Falls aber jemand noch auf eine "elegantere" Lösung kommt,
immer raus damit

Vielen Dank,

Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 16:16
Hi Data,

ab Version 1.5 geht es auf jeden Fall auch so:

1. Neue Domain anlegen
2. Update auf Systemtabellen:
SQL-Code:
CREATE DOMAIN D_NUMERIC_9_2 AS NUMERIC(9,2);

update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'D_NUMERIC_9_2where
      (RDB$FIELD_NAME = 'BANK_EINZAHLUNG') and (RDB$RELATION_NAME = 'XYZ');
Ob es unter 1.0x funktioniert, musst du mal testen.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 16:58
Hi,

werde ich morgen testen,
jetzt muss ich mich erstmal um andere Belange kümmern.

Danke an alle,

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 19:50
Hallo,

ibexpert (personal) runterladen.
Die Spalte ändern -> die benötigte Query wird angezeigt.

Zum Numeric(9,2), probier das erst mal aus.

Kleinere Numeric, z.B. numeric(8,2) werden von Firebird intern als Integer gespeichert.

siehe auch

http://www.ibexpert.info/documentati...CIMAL/458.html


Warum willst du das double precision denn ändern ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 23. Jan 2008, 23:15
1. Geh in IBExpert hin und extrahiere die Metadaten inkl. Datatables.
2. ändere den Datentyp im SQL-Script.
3. Tabelle neu erzeugen, alte vorher löschen
4. Daten neu einfügen und fertig.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: FB Double Precision zu Decimal(9,2) ohne Datenverlust ?

  Alt 24. Jan 2008, 12:20
Hi Hansa,

von Prinzip auf jeden Fall machbar;
Leider in der Praxis nicht so umsetzbar,
betrifft ca. 100 Standorte mit jeweils lokaler DB.
Wollte die Umwandlung eigentlich automatisch innerhalb eines Programm-Updates durchführen.

Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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