![]() |
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; |
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. |
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; |
AW: Firebird CreateTable Fehlermeldung
Was bedeutet "ohne Erfolg"? Fehlermeldung? Keine Tabelle? Fehlerhafte Tabelle?
|
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. |
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 |
AW: Firebird CreateTable Fehlermeldung
Die Eigenschaft "Auto Commit ist auf "true" gesetzt!
|
AW: Firebird CreateTable Fehlermeldung
Vielleicht schaust du dir mal
![]()
Delphi-Quellcode:
und einem abschließendem
IBTransaction1.StartTransaction;
Delphi-Quellcode:
arbeitet.
IBTransaction1.Commit;
|
AW: Firebird CreateTable Fehlermeldung
Delphi-Quellcode:
Autoinc dann per Generator+Trigger.
SQL.Add(' ID bigint not null,');
|
AW: Firebird CreateTable Fehlermeldung
Zitat:
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. |
AW: Firebird CreateTable Fehlermeldung
Das mit den " " ist sicherlich eher ungünstig/völlig unnötig. Würde ich auch weglassen. Oder warum muss man da auf Gross/Kleinschreibung achten ? Auch unnötig finde ich, dass der User genötigt wird wohl eine Abfrage zu bestätigen, um eine Datenbank anzulegen, ohne die er wohl kaum loslegen könnte. Oder wird die DB automatisch erzeugt, sofern keine da ist ? Dann sehe ich überhaupt keinen Sinn mehr, die DB mit einem Delphi-Programm zu erzeugen. Lege doch die DB mit IBExpert an und fertig. Sich eine leere Datenbank anlegen zu müssen, das muss man nun wirklich nicht einem Endanwender zumuten. Die kriegen das womöglich so hin, dass nichts mehr geht. Kommt Abfrage, dann könnte ich mir sogar vorstellen, dass die Datenbank gar nicht installiert wird. Die Leute sind heute sehr vorsichtig damit, "irgendetwas" zu installieren, wenn sie nicht genau wissen warum. Geh mal auf die Strasse irgendjemand fragen, ob er weiss, was eine Datenbank ist. :shock: Allerdings taucht diese u.ä. Fragen hier desöfteren auf. Vielleicht kann mir mal jemand erklären, worin der Vorteil besteht, eine DB bei der Installation erst zu erzeugen, anstatt sie selber zu erzeugen, mitzuliefern und lediglich zu kopieren ? 8-)
|
AW: Firebird CreateTable Fehlermeldung
Zitat:
|
AW: Firebird CreateTable Fehlermeldung
Kommt darauf an, eine "Datenbank" für 300-400 Parameter oder ähnliche Kleinigkeiten, gerne als Kopie. "Richtige" Datenbanken nur als Script ! Nur dann haben wir im Vorfeld die Möglichkeit die Datenbank in die vorhandene Infrastruktur einzupassen.
Gruß K-H P.S. vor ein paar Jahren hatte ich mit zwei Datenbanken zu tun, die sich gegenseitig ins Gehege kamen, da mußte dann von Hand ein wenig "getrickst" werden um beide parallel ans Laufen zu bekommen. Das möchte ich bei ichtigen Brocken nicht machen müssen. |
AW: Firebird CreateTable Fehlermeldung
Zitat:
Zitat:
Zitat:
Zitat:
Übrigens. ich finde unnötig das du bei Fragesätzen ein Leerzeichen vor dem Fragezeichen einfügst. Das mag fürs Französische gültig sein. Im Deutschen ist es einfach nur falsch. |
AW: Firebird CreateTable Fehlermeldung
Zitat:
Zitat:
Allerdings gibt es da noch einen gewaltigen Unterschied für den Enduser und das sollte man auch nicht unterschätzen. Kommt beim Kopieren ein Fehler, dann wird derjenige, der kopiert wohl denken, Datei scheint kaputt zu sein, "die sollen die neu schicken". Kommt die Fehlermeldung wiederholt direkt beim Programmstart, dann heisst es eventuell : Program läuft nicht, wird direkt wieder gelöscht. Ich schätze mal, Quote für letzteres liegt deutlich über 50 %. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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-2025 by Thomas Breitkreuz