Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird CreateTable Fehlermeldung (https://www.delphipraxis.net/183738-firebird-createtable-fehlermeldung.html)

strom 1. Feb 2015 13:12

Datenbank: Firebird • Version: 2.5 • Zugriff über: IBC

Firebird CreateTable Fehlermeldung
 
Hallo,

die Table wird in der Database nicht angelegt!

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
 if FileExists(ExtractFilePath(Application.ExeName)+'ELP.fdb') then
  begin
   //IBCTable1.TableName := 'EINSATZ';
   //IBCTAble1.Active := true;
  end else
begin
  IBCConnection1.Database := ExtractFilePath(Application.ExeName)+'ELP.fdb';
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER ''SYSDBA''');
  IBCConnection1.Params.Add('PASSWORD ''masterkey''');
  IBCConnection1.Params.Add('PAGE_SIZE 4096');
  IBCConnection1.Params.Add('DEFAULT CHARACTER SET WIN1250');
  IBCConnection1.CreateDatabase;
  IBCConnection1.Connected := false;
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER_NAME=SYSDBA');
  IBCConnection1.Params.Add('PASSWORD=masterkey');
  IBCConnection1.Connected := true;
  IBCTransaction1.Active := true;
   with IBCTable1 do begin
     active:=false;
    TableName:='EINSATZ';
     with FieldDefs do begin
      clear;
       Add('ID', ftInteger, 0, false); // AUTOINC Gibt es nicht, folgt später!!!
       Add('ICON', ftString, 20, false);
       Add('EINSATZNR', ftString, 10, false);
       Add('DATUM', ftString, 10, false);
       Add('ZEIT', ftString, 10, false);
       Add('EINSATZSTATUS', ftString, 10, false);
       Add('EINSATZSTICHWORT', ftString, 20, false);
       Add('EINSATZSTADT', ftString, 40, false);
       Add('EINSATZORT', ftString, 40, false);
       Add('EINSATZADRESSE', ftString, 40, false);
       Add('EINSATZMELDUNG', ftString, 100, false);
       Add('ELPNAME', ftString, 40, false);
       Add('ELPIP', ftString, 40, false);
       Add('EINSATZHINWEIS', ftString, 40, false);
       Add('EINSATZOBJEKT', ftString, 100, false);
   end;
    CreateTable; // Undeklarierter Bezeichner ???
  end;
 end;
end;

strom 1. Feb 2015 13:29

AW: Firebird CreateTable Fehlermeldung
 
Verstehe es einfach nicht! Müsste doch gehen oder nicht!

Code:
Data.DB.TDataSet.FieldDefs
Übergeordnet: TDataSet
Delphi
property FieldDefs: TFieldDefs read FFieldDefs write SetFieldDefs;

C++ 
__property TFieldDefs* FieldDefs = {read=FFieldDefs, write=SetFieldDefs};

Eigenschaften

Typ

Sichtbarkeit

Quelle

Unit

Übergeordnet

property public
Data.DB.pas

Data.DB.hpp
Data.DB TDataSet

Beschreibung

Zeigt auf die Liste der Felddefinitionen für die Datenmenge.

FieldDefs enthält die Felddefinitionen einer Datenmenge. Sie können diesen Wert in Ihren Anwendungen zwar lesen, um die Felddefinitionen zu ermitteln, sollten die Definitionen aber nur beim Erstellen einer neuen Tabelle mit CreateTable oder CreateDataSet ändern.

Um auf die Felder und Feldwerte in einer Datenmenge zuzugreifen, verwenden Sie die Eigenschaften Fields, AggFields und FieldValues sowie die Methode FieldsByName.

Anmerkung: Wenn die Datenmenge Objektfelder enthält, repräsentiert FieldDefs eine hierarchische Ansicht der Daten. Um die Definitionen als nichthierarchische Ansicht abzurufen, verwenden Sie stattdessen FieldDefList.

strom 1. Feb 2015 13:44

AW: Firebird CreateTable Fehlermeldung
 
auch mit einer Query ohne Erfolg! Was mache ich falsch?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
 if FileExists(ExtractFilePath(Application.ExeName)+'ELP.fdb') then
  begin
   IBCTable1.TableName := 'EINSATZ';
   IBCTAble1.Active := true;
  end else
begin
  IBCConnection1.Database := ExtractFilePath(Application.ExeName)+'ELP.fdb';
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER ''SYSDBA''');
  IBCConnection1.Params.Add('PASSWORD ''masterkey''');
  IBCConnection1.Params.Add('PAGE_SIZE 4096');
  IBCConnection1.Params.Add('DEFAULT CHARACTER SET WIN1250');
  IBCConnection1.CreateDatabase;
  IBCConnection1.Connected := false;
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER_NAME=SYSDBA');
  IBCConnection1.Params.Add('PASSWORD=masterkey');
  IBCConnection1.Connected := true;
  IBCTransaction1.Active := true;
  with IBCQuery1 do
begin
   SQL.Clear;
   SQL.Add('create table "EINSATZ"');
   SQL.Add('(');
   SQL.Add(' ID autoinc,');
   SQL.Add(' Gruppe char(20),');
   SQL.Add(' Name char(30),');
   SQL.Add(' Vorname char(30),');
   SQL.Add(' Strasse char(30),');
   SQL.Add(' Hausnr char(10),');
   SQL.Add(' PLZ Char(10),');
   SQL.Add(' Ort char(20),');
   SQL.Add(' Telefon char(30),');
   SQL.Add(' primary key(ID)');
   SQL.Add(')');

   execsql;
end;

Perlsau 1. Feb 2015 13:59

AW: Firebird CreateTable Fehlermeldung
 
Was bedeutet "ohne Erfolg"? Fehlermeldung? Keine Tabelle? Fehlerhafte Tabelle?

strom 1. Feb 2015 14:10

AW: Firebird CreateTable Fehlermeldung
 
Also die Database ist da (ELP.fdb) aber
in der Database ist keine Tabelle vorhanden!

Fehlermeldung:

Dynamic SQL Error SQL error code= -204 Table unknown EINSATZ At line1, column15.

hstreicher 1. Feb 2015 14:19

AW: Firebird CreateTable Fehlermeldung
 
Firebird ist eine Transactionsorientierte Datenbank

Ohne abschließendes Commit oder Autocommit (nicht empfehlenswert) in den Einstellungen
werden Änderungen nicht sichtbar

Wie sind die Einstellungen der Transactionskomponente

strom 1. Feb 2015 14:29

AW: Firebird CreateTable Fehlermeldung
 
Die Eigenschaft "Auto Commit ist auf "true" gesetzt!

Perlsau 1. Feb 2015 16:10

AW: Firebird CreateTable Fehlermeldung
 
Vielleicht schaust du dir mal dieses Beispiel an, das zwar zur Geschwindigkeitsmessung entworfen wurde, aber ebenfalls eine Firebird-Tabelle erstellt, das mit einem vorausgehendem
Delphi-Quellcode:
IBTransaction1.StartTransaction;
und einem abschließendem
Delphi-Quellcode:
IBTransaction1.Commit;
arbeitet.

mkinzler 1. Feb 2015 17:14

AW: Firebird CreateTable Fehlermeldung
 
Delphi-Quellcode:
SQL.Add(' ID bigint not null,');
Autoinc dann per Generator+Trigger.

jobo 1. Feb 2015 17:59

AW: Firebird CreateTable Fehlermeldung
 
Zitat:

Zitat von strom (Beitrag 1288469)
Also die Database ist da (ELP.fdb) aber
in der Database ist keine Tabelle vorhanden!

Fehlermeldung:

Dynamic SQL Error SQL error code= -204 Table unknown EINSATZ At line1, column15.

Neben den bereits genannten Punkten:

Wieso steht der Tabellenname in doppelten Anführungsstrichen?

Hab kein Firebird am Start zum Test, aber wenn Du die Tabelle mit Quotes anlegst, musst Du sie auch genau so abfragen. Oder wie stellst Du die Existenz der Tabelle fest?
Lieber die Quotes weglassen, dann ist GroßKleinSchreibung beim Abfragen (DML) egal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.
Seite 1 von 2  1 2      

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