Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TQuery --> SQL BEfehler ausführen --> Fehler (https://www.delphipraxis.net/60109-tquery-sql-befehler-ausfuehren-fehler.html)

Christian18 3. Jan 2006 13:12

Datenbank: Access • Version: 2000 • Zugriff über: BDE

TQuery --> SQL BEfehler ausführen --> Fehler
 
Hallo,

ich versuche mit einer TQuery Komponente SQL Befehle Auszuführen. Ich versuche eine Tabelle in eine DB zu erstellen. Das machen ich so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
          Query1.Active:=False;
          Query1.DatabaseName:='Christian';
          Query1.SQL.Clear;
          Query1.SQL.Add('CREATE TABLE Hallo2');
          Query1.SQL.Add('(');
          Query1.SQL.Add('Idx Integer');
          Query1.SQL.Add(')');
          Query1.Active:=True;
end;
Die Tabelle wird auch in der DB erstellt, aber es kommt trotzdem eine Fehlermeldung.

Fehler: Fehler beim erstellen der Cursor-Handle.

DelphiAndreas 3. Jan 2006 13:16

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
so mal völlig ins blaue reingedacht: wie ist es mit ExecSQL?

Christian18 3. Jan 2006 13:21

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Zitat:

Zitat von DelphiAndreas
so mal völlig ins blaue reingedacht: wie ist es mit ExecSQL?

ich verstehe jetzt nicht was du meinst. kannst du das nochmal ein bisschen erläutern???

mfg christian18

Der Jan 3. Jan 2006 13:26

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Nachdem du die Parameter für die Query gesetzt hast, mußt du sie mit ExecSQL ausführen...

Und was für eine Fehlermeldung kommt?

Christian18 3. Jan 2006 13:27

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Zitat:

Zitat von Der Jan
Nachdem du die Parameter für die Query gesetzt hast, mußt du sie mit ExecSQL ausführen...

Und was für eine Fehlermeldung kommt?

hi,

hier der fehler hatte ich oben aber schon geschrieben:

Fehler: Fehler beim erstellen der Cursor-Handle.

Christian18 3. Jan 2006 13:29

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
[quote="Christian18"]
Zitat:

Zitat von Der Jan
Nachdem du die Parameter für die Query gesetzt hast, mußt du sie mit ExecSQL ausführen...

Und was für eine Fehlermeldung kommt?


Hi,

wenn ich

Query1.ExecSQL;

mache, dann kommt kein Fehler. --> funktioniert danke. Kann ich so auch eine Access DB erstellen??? wenn ja wie???

Der Jan 3. Jan 2006 13:37

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Ups. Fehler hatte ich irgendwie übersehen.

Bin mir nicht sicher, ob man mit nem Query eine DB erstellen kann, da das Teil ja an ne DB gebunden ist. (Blöd ausgedrückt, ich weiß :) )
Probier doch einfach mal "CREATE DATABASE..." und die entsprechenden Parameter (User, PW, Charset, etc.) für Access-DB.

Christian18 3. Jan 2006 13:45

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Zitat:

Zitat von Der Jan
Ups. Fehler hatte ich irgendwie übersehen.

Bin mir nicht sicher, ob man mit nem Query eine DB erstellen kann, da das Teil ja an ne DB gebunden ist. (Blöd ausgedrückt, ich weiß :) )
Probier doch einfach mal "CREATE DATABASE..." und die entsprechenden Parameter (User, PW, Charset, etc.) für Access-DB.

wie ist dann der sql befehl um eine access db zu erstellen???
mfg christina18

Der Jan 3. Jan 2006 14:00

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
z.b. so:

SQL-Code:
SET SQL DIALECT 3;

SET NAMES ISO8859_1;

CREATE DATABASE 'C:\Database\Repa\REPA1.FDB'
USER 'username' PASSWORD 'passwort'
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;
Ist allerdings für ne Firebird-DB. Wie es bei Access genau aussieht, weiß ich auch nicht, aber so ähnlich sollte es es sein :)

blablab 3. Jan 2006 14:14

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Ich würde einfach die Komponente TTable nehmen.
Da kannst du dann im Objektinspektor alles einstellen, was für ne Tabelle du willst und wie die aussehen soll.
wenn du das gemacht hast benutzt du einfach den befehl
Delphi-Quellcode:
Table1.CreateTable;
diese Tabelle wird dann erstellt und du kannst dann auch mit SQL mit der arbeiten.


Z.B das in die eigenschaft TQuery1.SQL reinschreiben:

SELECT
...

FROM
"Tabellenname"

WHERE
...

Christian18 3. Jan 2006 14:45

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Hallo,

ich habe jetzt ein neues Probelem, was aber damit zu tun hat. Ich bin gerade dabei ein kleines Programm zu schreiben was mir Paradox 7 Tabellen in eine Access DB Konvertiert. Der flogende Code funktioniert soweit ganz gut, aber es wird die Tabelle DB in der Datenbank Kinder.mdb erstellt. Das soll aber anderesrum sein. Also die Tabelle Kinder in der db.mdb. Ich kann bei mir aber auch keinen Fehler finden. Könnt ihr mir helfen??? Hier ist mein Quellcode:

Delphi-Quellcode:
procedure TFMain.BitBtn1Click(Sender: TObject);
  var i : Integer; // Schleifenvariable
      q : TQuery;  // für SQL Anweisungen
      j : Integer; // Schleifenvariable
      t : TTable;  // Table
      s : String;  // Daten Typ
begin
  if ListBox1.Items.Count = 0 then
    begin
      ShowMessage('Bitte füllen Sie erst die Liste mit den Quellen.');
    end
  else
    begin
      if Edit1.Text = '' then
        begin
          ShowMessage('Bitte wählen Sie erst eine Ziel Datenbank aus.');
        end
      else
        begin
          for i:=1 to ListBox1.Items.Count do
            begin
              q:=TQuery.Create(self);
              q.DatabaseName:='Christian';
              q.SQL.Clear;
              q.SQL.Add('Create Table ' + ExtractFileName(ListBox1.Items[ListBox1.ItemIndex]));
              q.SQL.Add('(');
              t:=TTable.Create(self);
              t.Active:=False;
              t.TableName:=ListBox1.Items[ListBox1.ItemIndex];
              t.Active:=True;
              for j:=0 to t.FieldCount - 1 do
                begin
                  case t.FieldDefList.FieldDefs[j].DataType of
                    ftAutoInc : s:='Counter';
                    ftString  : s:='Char(' + IntToStr(t.FieldDefList.FieldDefs[j].Size) + ')';
                    ftInteger : s:='Integer';
                    ftFloat   : s:='Float';
                    ftMemo    : s:='Memo';
                    ftDate    : s:='Date';
                    ftTime    : s:='Date';
                    ftDateTime : s:='Date';
                  end;
                  if j = t.FieldCount - 1 then
                    begin
                      q.SQL.Add(t.FieldDefList.FieldDefs[j].Name + ' ' + s);
                    end
                  else
                    begin
                      q.SQL.Add(t.FieldDefList.FieldDefs[j].Name + ' ' + s + ',');
                    end;
                end;
              //t.Free;
              q.SQL.Add(')');
              Memo1.Clear;
              Memo1.Lines.Add(q.SQL.GetText);
              q.ExecSQL;
              //q.Free;
            end;
        end;
    end;
end;

Christian18 3. Jan 2006 15:12

Re: TQuery --> SQL BEfehler ausführen --> Fehler
 
Hallo,

ich habe mein Fehler schon selber gefunden. Es lag an meinen Verwendeten Namen für die Tabelle die erzeugt werden sollte. Mann sollte keine Punkte (.) in den Tabellen Namen verwenden.

MFG Christian18


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 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