AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankstruktur zur Laufzeit verändern
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankstruktur zur Laufzeit verändern

Ein Thema von Angel4585 · begonnen am 16. Nov 2005 · letzter Beitrag vom 17. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Datenbankstruktur zur Laufzeit verändern

  Alt 16. Nov 2005, 16:11
Datenbank: Paradox • Version: 7 • Zugriff über: TTable
Hallo zusammen

Ich habe eine Datenbank mit sagen wir mal 10 Felder.

In jedem dieser Felder stehen Daten. ich möchte jetzt 2 Felder der Datenbank hinzufügen und ein altes entfernen. Jemand ne Ahnung wie ich das mache?

Ich habs mit
Delphi-Quellcode:
FieldDefs.Find('Feldname').Delete
Fields.Remove(FieldByName('Feldname').Index)
probiert.

Allerdings sind die Felder danach immernoch da. Hab ich was vergessen?

Ich würde ja mit CreateTable eine neue Tabelle erstellen und die Daten rüber kopieren.
Wenn ich das aber mache sind die Nummern von dem AutoIncFeld wieder ab 0 statt ab 10000. Also wenn mir jemand sagen könnte wie ich die Werte des AutoIncFelds eins zu eins kopieren könnte würde mir das auch schon reichen. Habs mit:

Delphi-Quellcode:
Table1.FieldDefs.Find('Nummer').DataType:=ftInteger;
Table1.Open;
Table2.Open;
Table1.BatchMove(Table2,batCopy);
table2.close;
table1.close;
table1.FieldDefs.Find('Nummer').DataType:=ftAutoInc;
probiert, allerdings werden trotzdem nicht die Werte übernommen sondern es fängt wieder bei 1 an.

Hoffe auf die Mainzelmännchen die heute Abend ein paar gute Ansätze springen lassen.

Ich muss dann los, meld mich Morgen wieder.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
marabu

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

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 16. Nov 2005, 16:43
Hallo Martin,

das machst du am einfachsten über LOCAL-SQL:

SQL-Code:
ALTER TABLE tabelle
  ADD COLUMN spalteA CHAR(20),
  ADD COLUMN spalteB INTEGER,
  DROP COLUMN spalteC
Wenn die Felder Teil eines Index sind, dann wird es etwas aufwendiger.

Grüße vom marabu
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 08:10
SQL bei einer TTable? Wie geht das denn?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
marabu

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

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 08:12
Weißt du nicht, dass du in ein und dem selben Programm sowohl TTable- als auch TQuery-Komponenten einsetzen kannst - sogar mehrere davon?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 08:22
doch klar.. muss ich eben auf Query umstellen
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 08:26
Zitat von marabu:
.... sowohl TTable- als auch TQuery-Komponenten einsetzen kannst ...
Als Ergänzung zu marabus Beitrag möchte ich noch anmerken das Du dir überlegen solltest nicht ganz auf die TTable zu verzichten und ausschliesslich mit TQuerys zu arbeiten. Spätestenz wenn Du mal einge größere Tabelle in der DB hast und diese nicht local auf dem Rechner liegt bedeutet die Verwendung von TTable einen möglichen (großen) Geschwindigkeits verlust.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 08:27
Zitat von Angel4585:
SQL bei einer TTable? Wie geht das denn?
und was steckt wohl hinter einer TTable?
vermutlich eine Tabelle in einer Datenbank!
und eine Tabelle einer Datenbank kann ich sehr wohl mit SQL direkt bearbeiten...

Man muss es ja nicht im Quellcode machen mit TQuery, sondern man kann es ja in einem Datenbank-Tool (DB-Explorer oder so was) machen.

ausserdem ist es eh eine schlechte Idee, TTable zu verwenden (ausser es handelt sich um BDE / Paradox).
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 08:34
@Raven
Es handelt sich um BDE/Paradox
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 08:43
Zitat von Angel4585:
@Raven
Es handelt sich um BDE/Paradox
na und?
wir haben hier in der firma auch noch einige Datenbanken mit BED/Paradox.
und auch diese werden direkt mit SQL und TQuery bearbeitet.
ausserdem: seit wir fast alle TTables eliminiert haben, ist die Software wieder richtig schnell geworden...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Datenbankstruktur zur Laufzeit verändern

  Alt 17. Nov 2005, 09:01
Hä? Ich habs grad irgendwie mit der TTable und den Befehlen von weiter oben zum Laufen gebracht.. keine Ahnung wie aber es geht auf einmal.

Also genauer:

Ich nimm die Struktur der eigentlichen Tabelle.
Entferne die Felder die ich nichtmehr brauche und füge die neuen hinzu und benenne welche einfach um mit :
Delphi-Quellcode:
   FieldDefs.Delete(FieldByName('Feld1').Index);
   Fields.Remove(FieldByName('Feld1'));

   FieldDefs.Find('Feld2').Name:='Feld3';
   FieldDefs.Add('FeldNeu',ftBoolean);
Dann benenne ich die Tabelle um in nen temporären Namen
und danach kopiere ich die Daten aus einer zweiten Tablekomponente in die erste Kompo, lösche danach die original Tabelle und benenne danach die temp Tabelle in die originalTabelle um.

Aber warum schrumpft die Tabelle jetzt so zusammen? von ursprünglich 90 MB auf grademal noch 30?
Martin Weber
Ich bin ein Rüsselmops
  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 10:30 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