AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Tabelle mittels ADO-Command erstellen

Tabelle mittels ADO-Command erstellen

Ein Thema von markon · begonnen am 29. Nov 2004 · letzter Beitrag vom 30. Nov 2004
Antwort Antwort
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#1

Tabelle mittels ADO-Command erstellen

  Alt 29. Nov 2004, 17:32
hallo.
möchte mittels ado-command eine tabelle in einer db erstellen.

wenn ich es statisch mache funzt es:
Code:
sql:= 'CREATE TABLE fp5 (' +
         'ID INT,' +
         'Anrede VARCHAR(30))';

    ADOCommand1.CommandText :=sql;
    ADOCommand1.Execute;
aber wenn ich den namen der tabelle variabel halten möchte funzt es nimmer:
Code:
   fp := 'FP' + inttostr(nr_fp);

  sql:= 'CREATE TABLE %fp (' +
         'ID INT,' +
         'Anrede VARCHAR(30))';

    ADOCommand1.CommandText :=sql;
    ADOCommand1.Execute;
es kommt die meldung "syntax-fehler in create-table-anweisung".
fp ist vom typ string.

thx

++++++++++++++++++++++++++++++
nachtrag:
sql-befelh gefunden:
er muss lauten:
Code:
  sql:= 'CREATE TABLE ' + fp + '(' +
         'ID INT,' +
         'Anrede VARCHAR(30))';
kann man die id gleich beim erstellen der tabelle mit not null und auto inkrement versehen?
wenn ja, wie muss der befehl lauten
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Tabelle mittels ADO-Command erstellen

  Alt 29. Nov 2004, 19:17
Hallo,

welche DB?

In MySQL geht es folgebdermassen:
Delphi-Quellcode:
   sql:= 'CREATE TABLE ' + fp + '(' +
         'ID INT NOT NULL AUTO_INCREMENT,' +
         'Anrede VARCHAR(30))';
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Tabelle mittels ADO-Command erstellen

  Alt 29. Nov 2004, 19:33
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;
Andreas
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#4

Re: Tabelle mittels ADO-Command erstellen

  Alt 30. Nov 2004, 09:13
Zitat:
...
welche DB?
...
sorry.. vergessen.. nutze in diesem falle ado und als db ms-access...

werde jetzt mal die adoconnection probieren...
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#5

Re: Tabelle mittels ADO-Command erstellen

  Alt 30. Nov 2004, 09:38
Zitat von shmia:
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(); // und Feuer
end;
danke für deine antwort.

bei der adoconnection gibt es kein execute..?!

habe das problem folgendermasen gelöst bekommen:
Code:
  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;
jetzt bräuchte ich nur noch die festlegung der standardwerte.. not null und so... primary key..

+++++++
nachtrag:
der sql muss lauten:
Code:
  sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' +
         'Anrede VARCHAR(30) NOT NULL)';
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Tabelle mittels ADO-Command erstellen

  Alt 30. Nov 2004, 10:00
Zitat von markon:
bei der adoconnection gibt es kein execute..?!
Doch, gibt es! Es muss natürlich heisen: ADOConnection1.Execute(sql); beim 1. Posting hatte
ich das Argument weggelassen.
Zitat von markon:
jetzt bräuchte ich nur noch die festlegung der standardwerte.. not null und so... primary key..
ALTER TABLE Tabelle28 ADD CONSTRAINT PK_Tabelle28 PRIMARY KEY (IdPKFeld)
Andreas
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#7

Re: Tabelle mittels ADO-Command erstellen

  Alt 30. Nov 2004, 10:02
ok.. danke dir..

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:
  sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' +
         'StartZeit VARCHAR(30) NOT NULL)' +
         'StartTag INT NOT NULL)';
das problem liegt in der zeile
Code:
'StartTag INT NOT NULL)';
wenn ich diese zeile weglasse funzt die erstellung...
  Mit Zitat antworten Zitat
clues1

Registriert seit: 11. Feb 2004
97 Beiträge
 
#8

Re: Tabelle mittels ADO-Command erstellen

  Alt 30. Nov 2004, 12:58
Zitat:
sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' +
'StartZeit VARCHAR(30) NOT NULL)' +
'StartTag INT NOT NULL)';
...

das problem liegt in der zeileQuellcode: markieren
'StartTag INT NOT NULL)'
Du hast da nach dem Not NULL von StartZeit ein ) dadurch kommt der Fehler. So muss es aus sehen

[code]
sql := 'CREATE TABLE %s (ID INT NOT NULL IDENTITY PRIMARY KEY,' +
'StartZeit VARCHAR(30) NOT NULL' + << Einfach nur die klammer weg
'StartTag INT NOT NULL)';
[/quote]

PS: Fehlermeldungen beziehen sich immer auf den Text vor dem Text der in der Fehlermeldung steht . Also Fehler = Fehlertext -1 ^^
  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 13:42 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