Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TTable: In vorhandener Datenbank Spalte hinzufügen/löschen (https://www.delphipraxis.net/127022-ttable-vorhandener-datenbank-spalte-hinzufuegen-loeschen.html)

Helmi 7. Jan 2009 11:51

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:
 
szName: DBINAME;

Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
pFlds: pFLDDesc;
pOp: pCROpType;
also DBINAME, CURProps, hDBIDb, CRTblDesc, pFLDDesc, pCROpType

Woher bekomm ich die?

hoika 7. Jan 2009 13:20

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

Helmi 7. Jan 2009 13:23

Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
 
Zitat:

Zitat von hoika
meistens ist das die Unit BDE.

Extakt diese Unit war es :-)

Danke

hoika 7. Jan 2009 13:53

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

Helmi 7. Jan 2009 14:03

Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
 
Zitat:

Zitat von hoika
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;

Ja - schaut natürlich einfacher aus.

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:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Schulungsmanager.exe ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Tabelle nicht vorhanden
Datei oder Verzeichnis nicht vorhanden
Datei: E:\Schulungsmanager\Programm\Schulungsindex.DB
Datei: E:\Schulungsmanager\Programm\Schulungsindex.DBF
Datei: E:\Schulungsmanager\Programm\Schulungsindex.txt
Datei: E:\Schulungsmanager\Programm\Schulungsindex'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Ganz klar natürlich, weil die nicht im Ordner "Programm" liegt, sondern bei mir unter "E:\Schulungsmanager\Programm\Datenbank".

[Edit]
Kann es sein, dass in deinem SQL-Text eine geschlossene Klammer fehlt?

mkinzler 7. Jan 2009 14:11

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;

khh 7. Jan 2009 14:15

Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
 
Zitat:

Zitat von Helmi
Zitat:

Zitat von hoika
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;

Ja - schaut natürlich einfacher aus.

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:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Schulungsmanager.exe ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Tabelle nicht vorhanden
Datei oder Verzeichnis nicht vorhanden
Datei: E:\Schulungsmanager\Programm\Schulungsindex.DB
Datei: E:\Schulungsmanager\Programm\Schulungsindex.DBF
Datei: E:\Schulungsmanager\Programm\Schulungsindex.txt
Datei: E:\Schulungsmanager\Programm\Schulungsindex'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Ganz klar natürlich, weil die nicht im Ordner "Programm" liegt, sondern bei mir unter "E:\Schulungsmanager\Programm\Datenbank".

[Edit]
Kann es sein, dass in deinem SQL-Text eine geschlossene Klammer fehlt?

kann es sein, dass du Datenbank mit Tabelle verwechselt hast?

Gruss Kh

Helmi 7. Jan 2009 14:18

Re: TTable: In vorhandener Datenbank Spalte hinzufügen/lösch
 
Zitat:

Zitat von khh
kann es sein, dass du Datenbank mit Tabelle verwechselt hast?

Ich denke, man merkt, dass ich kaum was mit Datenbanken zuvor zu tun hatte :-)
Ja - ich denke dass ich Datenbank mit Tabelle verwechsle

hoika 7. Jan 2009 14:18

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:
with Query do
begin
  DataBaseName:= 'c:\blabla\bla';
  SQL.Clear;
  SQL.Add('alter table table1 add name(char(50))');
  ExecSQL,
end;
Übrigens funktioniert der Befehl nur, wenn die Tabelle geschlossen ist
(das alter table oder DbiDoRestructure braucht exclusiven Zugriff)


Heiko

Helmi 7. Jan 2009 15:54

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:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Schulungsmanager.exe ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Ungültiges Schlüsselwort
Symbol-String: (char(50))
Zeilennummer: 1'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Was mach ich falsch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.
Seite 2 von 5     12 34     Letzte »    

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