AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenstruktur von zwei Tabellen ändern

Datenstruktur von zwei Tabellen ändern

Ein Thema von CG2003 · begonnen am 12. Mär 2006 · letzter Beitrag vom 13. Mär 2006
Antwort Antwort
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#1

Datenstruktur von zwei Tabellen ändern

  Alt 12. Mär 2006, 23:17
Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos-Komponenten
Hallo liebe DP,

ich habe ein Problem und zwar bezüglich dieses Threads: SELECT BETWEEN funktioniert nur in einem geringen Zeitraum?.

Auf Grund der letzten Antworten, habe ich mich entschlossen, meine Datumswerte nun doch als DATE und Warenbestände nur noch als INTEHER zu speichern anstatt als VARCHAR.

Ich habe also zwei Tabellen, "Buchungen" und "Wareineingang".

Felder in der Tabelle "Buchungen":
PartDatum - alter Feldtyp: VARCHAR - neuer Feldtyp: DATE
AlterBestand - alter Feldtyp: VARCHAR - neuer Feldtyp: INTEGER
NeuerBestand - alter Feldtyp: VARCHAR - neuer Feldtyp: INTEGER

Felder in der Tabelle "Wareneingang":
Eingangsdatum - alter Feldtyp: VARCHAR - neuer Feldtyp: DATE
Buchungsdatum - alter Feldtyp: VARCHAR - neuer Feldtyp: DATE

Meine Frage wäre nun, wie ich diese Feldtypenänderung mit den Zeos-Komponenten relaisieren kann, da ich die als VARCHAR gespeicherten Datumswerte ja vorher noch mittels FormatDateTime('yyyy-mm-dd') konvertieren muss.

Wenn ich den Feldtypen jedoch direkt ändere, gehen meine gespeicherten Daten verloren, bzw. werden auf null gesetzt.

Wie ändere ich nun also den Feldtypen, ohne die Tabelle zu zerstören, bzw. meine gespeicherten Daten zu verlieren?

Bin für jede Hilfe sehr dankbar!
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
marabu

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

Re: Datenstruktur von zwei Tabellen ändern

  Alt 13. Mär 2006, 00:23
Hallo Sebastian,

Zitat:
Wenn ich den Feldtypen jedoch direkt ändere, gehen meine gespeicherten Daten verloren, bzw. werden auf null gesetzt.
wer behauptet denn sowas? Mache eine Sicherung von der Datenbank und probiere das hier:

SQL-Code:
alter table buchungen
  change partdatum partdatum date,
  change alterbestand alterbestand integer,
  change neuerbestand neuerbestand integer
Grüße vom marabu
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Datenstruktur von zwei Tabellen ändern

  Alt 13. Mär 2006, 04:44
Zitat von marabu:
wer behauptet denn sowas? Mache eine Sicherung von der Datenbank und probiere das hier:

SQL-Code:
alter table buchungen
  change partdatum partdatum date,
  change alterbestand alterbestand integer,
  change neuerbestand neuerbestand integer
Grüße vom marabu
Nun ja, für die VARCHAR-Werte, die in Integer konvertiert werden, funktioniert es einwandfrei. Vielen Dank schon mal dafür.

Für die VARCHAR-Werte, die in DATE konvertiert werden, jedoch leider nicht. Ich bekomme für jeden Record
einen Datumswert in der Form "0000-00-00" wieder. Gibt es eine Möglichkeit, die alten Datumswerte von
VARCHAR in das DATE-Format zu konvertieren, ohne das es auf null gesetzt wird?
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
marabu

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

Re: Datenstruktur von zwei Tabellen ändern

  Alt 13. Mär 2006, 06:14
Guten Morgen.

Zitat:
Nun ja
Ist das Skepsis oder Depression? Kopf hoch - noch ist Polen nicht verloren.

MySQL erwartet Datumsangaben im Format '2006-03-13' - wie hast du sie gespeichert? Eventuell musst du den String vor dem Wechsel des Datentyps neu arrangieren, was mit einem UPDATE Statement möglich sein sollte - ungetestet:

SQL-Code:
/* 13.03.2006 --> 2006-03-13 */
update buchungen set
  partdatum = concat( right(partdatum, 2), "-", mid(partdatum, 4, 2), "-", left(partdatum, 4) )
marabu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datenstruktur von zwei Tabellen ändern

  Alt 13. Mär 2006, 07:07
Eine weitere Möglichkeit wäre es im ersten Schritt ein weiteres Feld des neuen Type einzufügen, dieses mit den Werten des alten Felds zu füllen.Bei Erfolg kann dann das alte Feld gelöscht werden.
Markus Kinzler
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Datenstruktur von zwei Tabellen ändern

  Alt 13. Mär 2006, 14:19
Zitat von mkinzler:
Eine weitere Möglichkeit wäre es im ersten Schritt ein weiteres Feld des neuen Type einzufügen, dieses mit den Werten des alten Felds zu füllen.Bei Erfolg kann dann das alte Feld gelöscht werden.
Genauso habe ich es nun gemacht. Ich habe erst entsprechend Felder mit Ihren neuen Datentypen hinzugefügt, dann die alten Feldinhalte konvertiert und in die neuen Felder eingefügt, und dann die alten Felder gelöscht.

Manchmal ist die Lösung so nah...

Vielen Dank, Euch allen.
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:44 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