AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ersetzen von "." durch "," mit SQL
Thema durchsuchen
Ansicht
Themen-Optionen

Ersetzen von "." durch "," mit SQL

Ein Thema von Alfonso · begonnen am 7. Nov 2007 · letzter Beitrag vom 8. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Alfonso

Registriert seit: 10. Jan 2006
250 Beiträge
 
Delphi 11 Alexandria
 
#1

Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 17:03
Datenbank: MS Access • Version: 2000 • Zugriff über: ADO
Ich habe eine Tabelle in der in einer Spalte vom Typ TEXT Zahlen stehen. Diese haben das amerikanische Format, also "." anstatt "," als Dezimaltrennzeichen.
Beispiel:
1.45
4
2.4
etc.
Nun möchte ich überall den Punkt durch einen Komma ersetzen. Gibt es dafür eine SQL UPDATE Syntax?

Gruß
Alfonso
Alfonso
Seit Turbo Pascal 3.0 dabei!
Ewiger Pascal Fan!
  Mit Zitat antworten Zitat
Faxman

Registriert seit: 9. Jun 2006
Ort: Mainz
17 Beiträge
 
Delphi 7 Architect
 
#2

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 17:16
ändere das format für das feld in der access tabelle auf #.##0,00" €";-#.##0,00 €"
und schon ist das problem gelöst bzw. wandele das textfeld zuerst in ein numerisches um.


mfg
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 17:18
T-SQL im MSSQL Server unterstützt die Funktion Replace. Vielleicht gibts das ja auch bei Access.

Hast du eventuell schonmal versucht zu casten. Denn was hat ein Float in einem Feldtypen TEXT zu suchen
  Mit Zitat antworten Zitat
Alfonso

Registriert seit: 10. Jan 2006
250 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 17:27
Zitat von Jelly:
... Hast du eventuell schonmal versucht zu casten. Denn was hat ein Float in einem Feldtypen TEXT zu suchen
Ja, das ist komplett korrekt, dass ein Float nichts im Text-Feld sucht. Die Original-DB ist nicht von mir und ich will über einen INSERT INTO Statement den Inhalt in eine neue Tabelle kopieren, wo das Zielfeld Float ist. Das Problem ist nur, dass dann die "." ignoriert werden und aus "5.23" plötzlich die Zahl 523 wird!

Deswegen will ich es vorher konvertieren.

Hat jemand eine idee?

Gruß
Alfonso
Alfonso
Seit Turbo Pascal 3.0 dabei!
Ewiger Pascal Fan!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 17:29
Hallo,

ich denke auch, dass da etwas schief gelaufen ist. Gut dass die Werte im internen Format gespeichert sind:

ALTER TABLE t ALTER COLUMN c FLOAT So wird die Spalte c in eine FLOAT-Spalte gewandelt und danach liefert ein einfaches SELECT c FROM t die lokalisierte Ausgabe.

Edit: Bei der Übernahme kann CAST(c AS FLOAT) eingesetzt werden.

Grüße vom marabu
  Mit Zitat antworten Zitat
Alfonso

Registriert seit: 10. Jan 2006
250 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 17:54
Ich kann/darf die Source Tabelle nicht mit ALTER Table ändern.

Ich habe folgendes unter Access direkt zum laufen gebracht:
UPDATE TBL_ORIG SET CI_POWER = REPLACE(CI_POWER,".",",") Von ADO aus erhalte ich jedoch einen Fehler, dass es Replace nicht kennt.
Alfonso
Seit Turbo Pascal 3.0 dabei!
Ewiger Pascal Fan!
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 18:42
Hallo Alfonso,
Replace würde in Delphi funktionieren...
Dein Vorhaben kann ich jetzt im Detail nicht genau abschätzen.
Ich würde 2 Varianten in Betracht ziehen:
1.) mach es mit Delphi. Du kannst dort alles ändern wie du es benötigst und bist da nicht durch Access beschränkt.
2.) exportiere in ein csv-File. Dann den Punkt ersetzen. Wenn du mehr wie 65535 Datensätze hast kannst du Excel nicht verwenden (außer Excel 2007). Dann verwende z.B. den Ultra Edit (gibts auch als Testversion). Da kann man auch Spaltenbereiche markieren und innerhlab der Markierung mit Suchen/Ersetzen arbeiten

Das bearbeitete csv-File dann einfach in eine neue (Access?)Tabelle einlesen (externe Daten importieren)
(meistens ist diese Q+D-Methode schneller als Access dazu zu bewegen, dass zu tun was man erreichen will)
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#8

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 22:49
Zitat von Alfonso:
Ich habe eine Tabelle in der in einer Spalte vom Typ TEXT Zahlen stehen. Diese haben das amerikanische Format, also "." anstatt "," als Dezimaltrennzeichen.
Beispiel:
1.45
4
2.4
etc.
Nun möchte ich überall den Punkt durch einen Komma ersetzen. Gibt es dafür eine SQL UPDATE Syntax?

Gruß
Alfonso
sorry, das ist nicht das amerikanische format, sondern das ISO format. alle umrechenfunktionen, solange sie nicht lokalisiert sind, werden damit zurecht kommen.

wenn du alleine die datenbankbearbeiten kannst, was steht dann dagegen, die tabelle einzulesen, die spalte zu droppen und 'ne neue zu erstellen (als zahl) um anschliessend die daten im richtigen format zurückzuschreiben?????

wär doch 'ne überlegung wert, oder...
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: Ersetzen von "." durch "," mit SQL

  Alt 7. Nov 2007, 22:51
Zitat von Alfonso:
Ich kann/darf die Source Tabelle nicht mit ALTER Table ändern.

Ich habe folgendes unter Access direkt zum laufen gebracht:
UPDATE TBL_ORIG SET CI_POWER = REPLACE(CI_POWER,".",",") Von ADO aus erhalte ich jedoch einen Fehler, dass es Replace nicht kennt.
sehe gerade dein problem. was hälste davon, eine nicht lokalisierte konvertierungsfunktion dazwischenzuschalten... dann klappt alles, ohne dass du viel machen musst... (näheres in der OH)
  Mit Zitat antworten Zitat
Alfonso

Registriert seit: 10. Jan 2006
250 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Ersetzen von "." durch "," mit SQL

  Alt 8. Nov 2007, 16:37
Hallo,

hilft alles nichts. Ich habe gelesen, dass REPLACE nur in Access direkt geht. Eine Konvertierungsroutine, die in einer Schleife durch alle Datensätze geht und dann mit ADOtmp.Edit; ... ADOtmp.Post; die Werte ändert dauert ewig (über 100.000 Datensätze).
Wenn ich den Datentyp ändere, wie vorgeschlagen mit ALTER TABLE, passiert der gleiche Fehler: "." wird ignoriert und aus 5.12 wird 512.

Einzige gefundene unschöne Lösung bisher: Vor der Umwandlung tausche ich in der Systemsteuerung unter Ländereinstellungen die Bedeutung von "." und "," aus. Dann konvertiert er richtig. Anschließend muss ich es wieder umstellen. Kann man das automatisiert machen?

Oder hat noch jemand eine Kluge Idee?

Gruß
Alfonso
Alfonso
Seit Turbo Pascal 3.0 dabei!
Ewiger Pascal Fan!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:32 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