![]() |
Datenbank: Paradox • Zugriff über: TTable, BDE
TTable: In vorhandener Datenbank Spalte hinzufügen/löschen
Hallo,
wie kann ich bei einer TTable ein Feld (Spalte) bei einer schon vorhandenen Datenbank hinzufügen bzw. löschen? |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Die BDE hab ich gedanklich schon längst begraben, sollte aber mit Table.FieldDefs.Add gehen
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
mit Table.FieldDefs.Add füg ich schon welche hinzu. Wenn ich aber danach CreateTable ausführe, werden alle vorhandenen Einträge gelöscht. Ich will aber nur eine Spalte hinzufügen, ohne die Einträge zu löschen. Wie kann ich das realisieren? |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Vielleicht per SQL ( TQuery)
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
[OT]
Zitat:
Versuch mal: - Table.FieldDefs.Insert(Index) (siehe Hilfe) oder - Table.FieldDefs.Add(const Name: string; DataType: TFieldType; Size: Integer; Required: Boolean) :hi: |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
wenn du es dir schwer machen willst, nimmst du halt TTable. Unter der folgenden URL gibt es auch ein AddField Bsp. ![]() Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Danke für den Hinweis!
Eine Frage hab ich noch. In dem Code sind folgende Typen angegeben:
Delphi-Quellcode:
also DBINAME, CURProps, hDBIDb, CRTblDesc, pFLDDesc, pCROpTypeszName: DBINAME; Props: CURProps; hDb: hDBIDb; TableDesc: CRTblDesc; pFlds: pFLDDesc; pOp: pCROpType; Woher bekomm ich die? |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
meistens ist das die Unit BDE. Geh einfach mal ein DBTables, suche nach einer der Strukturen und klicke auf Ctrl + linke Maustaste. Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
Danke |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
und nun sieh mal dazu das an:
Delphi-Quellcode:
with Query do
begin SQL.Clear; SQL.Add('alter table table1 add name(char(50)'); ExecSQL, end; Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
Nur hab ich damit ein paar Probleme: 1. Mein Datenbankname ändert sich - das heisst, ich hab mehrere Datenbanken (davon ist aber nur immer Eine offen) 2. Meine Datenbanken sind nicht im gleichen Ordner wie die Exe, sondern in einem Unterordner. Ich hab deinen Code mal getestet, table1 gegen eine von mir gerade geöffnete Datenbank ersetzt. Nur bekomm ich dann einen Fehler: Zitat:
[Edit] Kann es sein, dass in deinem SQL-Text eine geschlossene Klammer fehlt? |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Delphi-Quellcode:
with Query do
begin SQL.Text := 'alter table table1 add name char(50);'; ExecSQL; end; |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
Gruss Kh |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
Ja - ich denke dass ich Datenbank mit Tabelle verwechsle |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
> Kann es sein, dass in deinem SQL-Text eine geschlossene Klammer fehlt? > na ein bissel Arbeit solltest du auch haben ;)
Delphi-Quellcode:
Übrigens funktioniert der Befehl nur, wenn die Tabelle geschlossen ist
with Query do
begin DataBaseName:= 'c:\blabla\bla'; SQL.Clear; SQL.Add('alter table table1 add name(char(50))'); ExecSQL, end; (das alter table oder DbiDoRestructure braucht exclusiven Zugriff) Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Ich traus mir ja kaum zu schreiben, aber ich hab mit mir selbst gerungen, und auch gewonnen, und hab jetzt Query eingesetzt.
Soweit geht das ja ganz gut, nur wollt ich den SQL-Text mit Variablen versehen. Dazu hab ich folgendes gebaut:
Delphi-Quellcode:
Query.SQL.Add(Format('alter table %s add %s(char(%s))', [Datenbank, Spalte, Laenge]));
Leider bekomm ich aber diese Fehlermeldung: Zitat:
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Von welchem Typ ist Laenge?
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Sorry - vergaß zu sagen, dass alles drei Variablen (Datenbank, Spalte, Laenge) vom Typ String sind
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
Delphi-Quellcode:
Query.SQL.Add(Format('alter table %s add %s char(%s)', [Datenbank, Spalte, Laenge]));
Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Warum macht ihr immer .Clear()/.Add() statt .Text?
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Wenn man nach Codezeilen bezahlt wird, macht man das so ;)
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Zitat:
Aber du hast recht - ist einfacher |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
mit Clear / Add kann man die SQL-Statements schön in einer Schleife zusammenbauen. Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Geht bei direkter Zuweisung zu .Text doch auch
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
sieht aber nicht so schön aus ;) Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Eine Frage hätt ich noch:
Wie kann ich eine Spalte wieder löschen? |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
SQL-Code:
ALTER TABLE Tabelle DROP Feld
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
oh - danke :-)
[Edit] Auch auf die Gefahr hin, geprügelt zu werden, aber gibts irgendwo ne Übersicht der SQL-Befehle? |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Nur eine Seite von vielen:
![]() |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Merci :-)
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
SQL-Code:
alter table table_1 drop field_name
Heiko [edit=mkinzler] Danke für die vergessenen Tags, so kann ich die Funktion testen :zwinker: Mfg, mkinzler[/edit] |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Bissel spät, wie :mrgreen:?
|
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Hallo,
;( Heiko |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
Frage:will mit turbo delphi datenbank erstellen
wenn: with Query do begin SQL.Text := 'alter table table1 add name char(50);'; ExecSQL; end; dann erscheint die spalte erst, wenn das programm neu gestartet wird. wieso? |
Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
...in Glaskugel schau... 8)
ich vermute mal, daß das Feld zwar in der Datenbank (Tabelle) hinzugefügt wurde aber in deiner Query (für die Visualisierung) noch der alte Bestand liegt. :gruebel: Query aktualisieren bzw neu öffnen. :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz