Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Create Table Probleme (https://www.delphipraxis.net/144946-sql-create-table-probleme.html)

Privateer3000 20. Dez 2009 13:09

Datenbank: mdb • Zugriff über: ado

SQL Create Table Probleme
 
Moin Moin,

sieht jemand im unten stehenden SQLText einen Fehler?
Delphi-Quellcode:
SQL.Text:='Create TABLE abschluss' +
              ' (id LONG NOT NULL AUTO_INCREMENT,betrag SINGLE,'+
              ' stempel DATETIME,zeit TEXT(50),abnum TEXT(50),PRIMARY KEY (id),UNIQUE (id))';
In den dokus die ich bisher gesehen habe, fand ich keine weiteren Infos über SINGLE,DATE usw.
zB wie das setzen der Nachkommestellen.
In der DDL Doku von MS sind auch nur oberflächliche Angaben, Beispiele beziehen sich meißt auf Textfelder,
aber spezielle wie Fließkommazahlen oder gar Currency sehe ich nicht.


Schönen 4. Advent der Gemeinde!

RWarnecke 20. Dez 2009 13:31

Re: SQL Create Table Probleme
 
Gehört Primary Key und UNIQUE nicht ausserhalb der Klammer von der Felddeklaration ?

Privateer3000 20. Dez 2009 13:43

Re: SQL Create Table Probleme
 
Nein, eigentlich muss es so gehen. HAbe andere SQLStatements die so funktionieren!

RWarnecke 20. Dez 2009 14:07

Re: SQL Create Table Probleme
 
Wo meckert er denn den Fehler an in dem SQL-Statement ?

Privateer3000 20. Dez 2009 15:05

Re: SQL Create Table Probleme
 
Syntaxfehler in CREATE TABLE-Anweisung

Jürgen Thomas 20. Dez 2009 15:07

Re: SQL Create Table Probleme
 
Hallo,

was ist "mdb"? Access oder MS-SQL Server oder was? Davon hängt auch ab, welche Varianten sinnvoll und/oder möglich sind. Welche Datentypen möchtest du eigentlich haben?

Auf Unique kannst du verzichten, das ist ein PrimaryKey (PK) zwangsläufig.

Der PK kann sowohl direkt bei der Spalte, als eigene Zeile innerhalb von CREATE TABLE oder nachträglich durch ALTER TABLE festgelegt werden; möglich ist alles. Siehe auch Wikibooks: Einführung in SQL.

Im übrigen hat Rolf recht mit seinen Nachfragen: Was für ein Fehler soll denn vorhanden sein? Streich zunächst den Unique-Anteil; das könnte schon reichen. Aber hat die Fehlermeldung nicht mehr Informationen, z.B. so etwas wie "in der Nähe von"?

Gruß Jürgen

sx2008 20. Dez 2009 15:39

Re: SQL Create Table Probleme
 
Warum gehst du nicht nach Sherlock Holmes Manier vor?
Also zuerst bekommt die Tabelle nur ein Feld.
Delphi-Quellcode:
SQL.Text:='Create TABLE abschluss2' +
              ' (id LONG NOT NULL AUTO_INCREMENT)';
Und dann Schritt für Schritt immer ein weiteres Feld dazu und den Tabellenname jeweils ändern.
So findest du ganz leicht heraus, wo genau es klemmt.

Privateer3000 20. Dez 2009 16:50

Re: SQL Create Table Probleme
 
Nein, hat alles nichts gebracht, schon ein einziges Feld reicht aus.
Liegt es vllt. daran das ich mehrere "Create"s hintereinander mache?
Allerdings verpacke ich diese in eine Transaktion:

Delphi-Quellcode:
BeginTrans
 try
  Drop Table xxx
  Drop Table ....
  Create Table xxx
  Create Table....
 CommitTrans
 except
 Rollback
.....
Aber normalerweise sollte das kein Problem darstellen...

BlackbirdBerlin 20. Dez 2009 17:25

Re: SQL Create Table Probleme
 
Zitat:

Zitat von Privateer3000
Nein, hat alles nichts gebracht, schon ein einziges Feld reicht aus.
Liegt es vllt. daran das ich mehrere "Create"s hintereinander mache?
Allerdings verpacke ich diese in eine Transaktion:

Delphi-Quellcode:
BeginTrans
 try
  Drop Table xxx
  Drop Table ....
  Create Table xxx
  Create Table....
 CommitTrans
 except
 Rollback
.....
Aber normalerweise sollte das kein Problem darstellen...

Hi,

m.E. sollte der PRIMARY KEY nicht noch durch das UNIQUE auf das gleiche Feld angewendet werden. Primary Key erzwingt per se UNIQUE auf ID.

Kannst Du mal die ganze Code-Sequenz posten, die Du verwendest?
DDL ist nicht transaktional, d.h. die ungebende Transaktionssteuerung mit BeginTrans und Commit... wirkt sich auf DDL nicht aus, sondern nur auf DML-Statements.

VG, Tim

Jürgen Thomas 20. Dez 2009 17:28

Re: SQL Create Table Probleme
 
Offensichtlich schon. Du musst sicherstellen, dass das DBMS (ich weiß immer noch nicht, welches du hast) die verschiedenen CREATE-Befehle getrennt versteht und hintereinander ausführen kann. In deinem o.g. Code fehlt beispielsweise das abschließende Semikolon; der MS-SQL Server verlangt ein eigenständiges GO. Manche Systeme können auch nur einen einzelnen DDL-Befehl ausführen (wie auch Tim sagt).

Gruß Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:05 Uhr.
Seite 1 von 3  1 23      

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