![]() |
Tabelle mittels ADO-Command erstellen
hallo.
möchte mittels ado-command eine tabelle in einer db erstellen. wenn ich es statisch mache funzt es:
Code:
aber wenn ich den namen der tabelle variabel halten möchte funzt es nimmer:
sql:= 'CREATE TABLE fp5 (' +
'ID INT,' + 'Anrede VARCHAR(30))'; ADOCommand1.CommandText :=sql; ADOCommand1.Execute;
Code:
es kommt die meldung "syntax-fehler in create-table-anweisung".
fp := 'FP' + inttostr(nr_fp);
sql:= 'CREATE TABLE %fp (' + 'ID INT,' + 'Anrede VARCHAR(30))'; ADOCommand1.CommandText :=sql; ADOCommand1.Execute; fp ist vom typ string. thx ++++++++++++++++++++++++++++++ nachtrag: sql-befelh gefunden: er muss lauten:
Code:
:arrow: kann man die id gleich beim erstellen der tabelle mit not null und auto inkrement versehen?
sql:= 'CREATE TABLE ' + fp + '(' +
'ID INT,' + 'Anrede VARCHAR(30))'; wenn ja, wie muss der befehl lauten :?: |
Re: Tabelle mittels ADO-Command erstellen
Hallo,
welche DB? In MySQL geht es folgebdermassen:
Delphi-Quellcode:
sql:= 'CREATE TABLE ' + fp + '(' +
'ID INT NOT NULL AUTO_INCREMENT,' + 'Anrede VARCHAR(30))'; |
Re: Tabelle mittels ADO-Command erstellen
1.) Parameter funktionieren nicht in DDL (Data Definition Language); dazu gehört z.B. auch CREATE TABLE
2.) Deine SQL-Anweisungen lassen sich am einfachsten direkt über die ADOConnection absetzen:
Delphi-Quellcode:
var
sql : string; begin sql := 'CREATE TABLE %s (ID INT,' + 'Anrede VARCHAR(30))'; // mit der Format-Funktion wird %s durch Tabellennamen ersetzt sql := Format(sql, ['Test99']); ADOConnection1.Execute(sql); // und Feuer // ^^^ end; |
Re: Tabelle mittels ADO-Command erstellen
Zitat:
werde jetzt mal die adoconnection probieren... |
Re: Tabelle mittels ADO-Command erstellen
Zitat:
bei der adoconnection gibt es kein execute..?! habe das problem folgendermasen gelöst bekommen:
Code:
jetzt bräuchte ich nur noch die festlegung der standardwerte.. not null und so... primary key..
fp := 'FP' + inttostr(nr_fp);
sql := 'CREATE TABLE %s (ID INT,' + 'Anrede VARCHAR(30))'; // mit der Format-Funktion wird %s durch Tabellennamen ersetzt sql := Format(sql, [fp]); //ADO_FP.Execute; // und Feuer ADOCommand1.CommandText :=sql; ADOCommand1.Execute; +++++++ nachtrag: der sql muss lauten:
Code:
:thumb:
sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' +
'Anrede VARCHAR(30) NOT NULL)'; |
Re: Tabelle mittels ADO-Command erstellen
Zitat:
ich das Argument weggelassen. Zitat:
SQL-Code:
ALTER TABLE Tabelle28 ADD CONSTRAINT PK_Tabelle28 PRIMARY KEY (IdPKFeld)
|
Re: Tabelle mittels ADO-Command erstellen
ok.. danke dir.. :thumb:
es geht auch so.. gleich beim kreieren kann mans mit angeben:
Code:
++++++++++++++++
sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' +
'Anrede VARCHAR(30) NOT NULL)'; nachtrag: mist.. zu früh gefreut. wenn ich der tabelle ein weiteres feld vom typ integer hinzufügen will, kommt wieder ne fehlermeldung..
Code:
das problem liegt in der zeile
sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' +
'StartZeit VARCHAR(30) NOT NULL)' + 'StartTag INT NOT NULL)';
Code:
wenn ich diese zeile weglasse funzt die erstellung... :gruebel:
'StartTag INT NOT NULL)';
|
Re: Tabelle mittels ADO-Command erstellen
Zitat:
[code] sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' + 'StartZeit VARCHAR(30) NOT NULL' + << Einfach nur die klammer weg :D 'StartTag INT NOT NULL)'; [/quote] PS: Fehlermeldungen beziehen sich immer auf den Text vor dem Text der in der Fehlermeldung steht :D. Also Fehler = Fehlertext -1 ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 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-2025 by Thomas Breitkreuz