![]() |
SQL in Delphi mit TQuery - Komponente
Guten Morgen euch zusammen!
Ich hab da ein kleines Problem, unzwar versuche ich in meinem Program über eine TQuery-Komoponente eine neue Tabelle zu erstellen aber irgendwie klappt das nicht. :(
Code:
Danke im voraus
with Form1.Query1 do
begin with SQL do begin clear; Add(' CREATE TABLE ''test_db'' '); Add(' ''ID'' INTEGER ,'); Add(' ''NAME'' VARCHAR(20) ,'); Add(' ''KUERZEL'' VARCHAR(20) ,'); Add(' ''PRIMARY KEY'' (ID) '); ExecSQL; end end; TESTER :) |
Re: SQL in Delphi mit TQuery - Komponente
Was für eine Fehlermeldung bekommst Du denn?
Um welche Datenbank handelt es sich? |
Re: SQL in Delphi mit TQuery - Komponente
Es wäre hilfreich zu wissen, mit welcher Datenbank Du arbeitest, und welche Fehlermeldung kommt.
:coder: |
Re: SQL in Delphi mit TQuery - Komponente
Wollte eigentlich eine dbase tabelle erstellen.
Fehlermeldung : Ungültiges Schlüsselwort Symbol String : 'ID' Zeichennummer : 2 |
Re: SQL in Delphi mit TQuery - Komponente
Add('ID INTEGER,');
und weiter auch so... Gruß 8) Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
Probier mal statt ID was anderes (z.B. "ID_").
|
Re: SQL in Delphi mit TQuery - Komponente
Code:
Dann würde das so stehen, aber das funktioniert auch nicht.with Form1.Query do begin with SQL do begin clear; Add(' CREATE TABLE ''db_test'' '); Add(' ID_ INTEGER,'); Add(' Vorname VARCHAR(20) ,'); Add(' Nachname VARCHAR(20) ,'); Add(' PRIMARY KEY (ID_) '); ExecSQL; end end; Geht das über TQuery vielleicht gar nicht? |
Re: SQL in Delphi mit TQuery - Komponente
Code:
Gruß
with Form1.Query1 do
begin if active then close; with SQL do begin clear; Add('CREATE TABLE ' + #39 + 'test_db' + #39); Add('ID INTEGER,'); Add('NAME VARCHAR(20),'); Add('KUERZEL VARCHAR(20),'); Add('PRIMARY KEY (ID)'); end try ExecSQL; except end end; Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
Wunderbar herzlichen dank! :hello:
Das funktioniert schon mal und wo speichert er die jetzt hin? Denn wenn ich Sie öffnen will, kommt das Tabelle nicht existiert. Was hat der #39 dabei zu bedeuten? Liebe Grüße TESTER |
Re: SQL in Delphi mit TQuery - Komponente
also folgendes fukntioniert bei mir:
Delphi-Quellcode:
Query1.SQL.Text :=
'CREATE TABLE db_test( ' + 'ID_ INTEGER, ' + 'Vorname VARCHAR(20), ' + 'Nachname VARCHAR(20), ' + 'PRIMARY KEY (ID_)) '; Query1.ExecSQL; |
Re: SQL in Delphi mit TQuery - Komponente
Das hatte ich auch probiert.
Ich glaub da gibt es wohl keinen großen Unterschied. Der Fehler lag wohl bei den Hochkommas. Danke! Wirklich Klasse eure Hilfsbereitschaft! :) Gruß TESTER |
Re: SQL in Delphi mit TQuery - Komponente
Hallo Tester 8)
#39 bedeutet hier eine Hochkomma = ’’’ Noch eine Bemerkung... wenn schon dann bitte so: ID Integer NOT NULL das habe ich vorher vergessen… Wo es gespeichert wird weiß ich nicht so genau (ist nicht mein Gebiet) aber ich denke, dass das kannst Du in der BDE in deinem Alias sehen... oder so was... Viele Grüße und viel Erfolg wünscht Dir Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
Danke !
:lol: |
Re: SQL in Delphi mit TQuery - Komponente
@ Paul Jr.
Sorry das ich nochmal nerven muß, aber irgendwie komme ich mit deiner Lösung nicht klar. :oops: Habe das alles so geschrieben aber er legt die Tabelle nicht an. Wo ist der unterschied zu 'mr2' seinem Text, der funktioniert bei mir und mit Select zeigt er auch die erstellte Tabelle an. Nur bei dem, sagt immer wieder Tabelle nicht gefunden. Obwohl ich einen Alias habe wo alle Tabellen drin stehen. Soviel auch zu der Frage wo werden die hin gespeichert, dafür gebe ich ja bei Alias das Verzeichnis an. Lieben Gruß TESTER |
Re: SQL in Delphi mit TQuery - Komponente
Hallo Tester 8)
natürlich wenn Du schon diese Tabelle hast... kannst diese nicht noch einmal anlegen. Darum musst Du diese zuerst löschen z.B. so:
Code:
Gruß
with Form1.Query1 do
begin if active then close; with SQL do begin clear; Add('DROP TABLE ' + #39 + 'test_db' + #39); end try ExecSQL; except end end; Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
sorry
das mus natürlich heissen: Add('CREATE TABLE test_db'); also ohne #39... ich werde älter... :mrgreen: Gruß Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
Hi!
Das ist mir schon klar, aber bei dem was du geschreiben hast, legt er keine Tabelle an, das meine ich damit. Darum kommt auch der Fehler, test.dbf oder wie auch immer, nicht gefunden. - BITTE NICHT BEACHTEN -> WAR NOCH AUF DER 1. SEITE ! :lol: |
Re: SQL in Delphi mit TQuery - Komponente
Hallo Tester,
dann setzte hier zuerst ein anderen Tabellenname und probier damit eine Tabelle zu erzeugen z.B. 'CREATE TABLE FORUM' Gruß Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
Hmh, versteh ich nicht! :x
Hab das auch schon versucht, bzw schon alle Möglichen Varianten, mit Hochkommas. Aber irgendwie geht das nicht, er legt die einfach nicht an. Vielleicht geht das gar nicht mit 'Add' sondern nur mit 'Text'. Wenn du die möglichkeit hast dann kannst du es ja mal bei dir probieren
Code:
Hab NOT NULL jetzt noch weggelassen.
with Form1.Query do
begin if active then close; with SQL do begin clear; //Add('CREATE TABLE ' + #39 + 'test_xxl.dbf' + #39); Add('CREATE TABLE test_db.dbf'); Add('ID INTEGER,'); Add('NAME VARCHAR(20),'); Add('KUERZEL VARCHAR(20),'); Add('PRIMARY KEY (ID)'); end; try ExecSQL; except end; end; Gruß TESTER |
Re: SQL in Delphi mit TQuery - Komponente
Hallo Tester, 8)
vielleicht muss man hier auch ein Pfad eingeben...z.B.: Add('CREATE TABLE c:\test1_db.dbf'); In jedem Fall mach zuerst den Try except Block weg... vielleicht zeigt sich dann eine Fehlermeldung. Ich kann Dir leider nicht mehr hier helfen, da ich mich auf SQL-Server / Oracle /MySQL und Interbase spetzialisiert habe...sorry Gruß Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
Wenn ich den try / except block weg lasse, sind wir wieder beim anfang.
Sprich ein bringt die Fehlermeldung Zitat:
Vielleicht ist das ja wirklich so das, dass nur mit SQL.Text funktioniert. Danke trotzdem für dein Bemühen! Liebe Grüße und die Besten Wünsche TESTER |
Re: SQL in Delphi mit TQuery - Komponente
Code:
Vielleicht so
Add('CREATE TABLE test_db.dbf');
Add('('); Add('ID INTEGER,'); Add('NAME VARCHAR(20),'); Add('KUERZEL VARCHAR(20),'); Add('PRIMARY KEY (ID)'); Add(')'); Gruß Paul Jr. |
Re: SQL in Delphi mit TQuery - Komponente
Es funktioniert!
:dancer: Stimmt die '(' müssen ja extra gesetzt werden, ist ja in SQL auch so. Naja, aufjedenfall rechtherzlichen Dank! Liebe Grüße TESTER |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:15 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