Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FieldDefs.AddFieldDef.Datatype funktioniert nicht (https://www.delphipraxis.net/56582-fielddefs-addfielddef-datatype-funktioniert-nicht.html)

mato 8. Nov 2005 10:39

Datenbank: firebird • Version: 1.5 • Zugriff über: interbasekomponenten

FieldDefs.AddFieldDef.Datatype funktioniert nicht
 
hallo leute

folgender code funktioniert nicht


Delphi-Quellcode:
t.active := false;
t.database := ibdatabase1;
t.tablename := 'newtable';
t.fielddefs.addfielddef.name := 'neu';
t.fielddefs.addfielddef.datatype := ftstring;
t.fielddefs.addfielddef.size := 15;
t.createTable;
folgende fehlermeldung
"EIBClientError 'nicht unterstützter feldtyp'"

benutze firebird 1.5, keinen plan woran es liegt. wenn ich ein query benutze dann geht es, dann natürlich mit sql.

mato

Der_Unwissende 8. Nov 2005 10:50

Re: FieldDefs.AddFieldDef.Datatype funktioniert nicht
 
Hi,
leider hab ich nicht wirklich was mit Interbase und / oder Firebird gemacht, aber ich glaube da ist ein Fehler in
Zitat:

Zitat von mato
Delphi-Quellcode:
t.fielddefs.addfielddef.name := 'neu';
t.fielddefs.addfielddef.datatype := ftstring;
t.fielddefs.addfielddef.size := 15;

t.fielddefs.AddFieldDef ist eine Funktion und liefert dir damit ein neues Element. Vielleicht ist es ja wirklich absicht, aber du legst damit drei neue FieldDefs an, von denen einer den Namen 'neu', einer den Datatype ftString und einer die Size 15 hat, der Rest ist wohl undefiniert.
Versuch es mal mit

Delphi-Quellcode:
var fieldDef : TFieldDef;
begin
fieldDef := t.fieldDefs.addFieldDef;
fieldDef.name := 'neu';
fieldDef.datatype := ftstring;
fieldDef.size := 15;
end;
Wahrscheinlich ist bei zweien deiner FieldDefs der Datatype auf ftUnknown gesetzt und ob der dann unterstüzt wird...

Gruß Der Unwissende

dfried 8. Nov 2005 10:51

Re: FieldDefs.AddFieldDef.Datatype funktioniert nicht
 
Delphi-Quellcode:
t.active := false;
t.fielddefs.addfielddef.name := 'neu';
t.fielddefs.addfielddef.datatype := ftstring;
t.fielddefs.addfielddef.size := 15;
Mit dem Code legst du im Prinzip 3 Felder an. Probiers mal damit (aus der OH):

Delphi-Quellcode:
with t.fielddefs.AddFieldDef do begin
  Name := 'neu';
  DataType := ftstring;
  size := 15;
end;

mato 8. Nov 2005 11:08

Re: FieldDefs.AddFieldDef.Datatype funktioniert nicht
 
danke erstmal, das wars, peinlicher denkfehler meinerseits. die fehlermeldung ist weg, aber die tabelle wird nicht angelegt. muss die tabelle schon vorhanden sein?

dfried 8. Nov 2005 12:22

Re: FieldDefs.AddFieldDef.Datatype funktioniert nicht
 
Bin mir nicht sicher, ob das mit Firebird so überhaupt funktioniert, da das ja eine SQL-Datenbank ist. Auf jeden Fall funktionieren wird es, wenn du dir ein "Create TABLE ..." Statement zusammenbastelst und das an die Datenbank schickst.

EDIT:

Hab grad in der OH zu TIBTAble ncohmal nachgeschaut, also eigentlich müsste es auch mit CreateTable funktionieren...

mato 8. Nov 2005 15:14

Re: FieldDefs.AddFieldDef.Datatype funktioniert nicht
 
na ja, danke erstmal für deine bemühungen. das es funktionieren sollte ist ja schön und gut, hilft mir im moment aber nicht so richtig weiter.
der punkt ist, ich möchte die tabellenstruktur von beliebigen datenbanken in eine firebird/interbase - db kopieren, wahlweise mit oder ohne daten. da ich dummerweise mit ado(access) angefangen habe kann ich mit, ich glaube es war 'TBatchMove', nicht viel machen, zumindest nach meinem stand der dinge. ich werde nochmal versuchen erst die tabellen einzeln und danach die felder reinzuquetchen, vielleicht geht es ja dann. alles ein wenig verwirrend, aber ich werde es schon hinkriegen. doch wenn irgend jemand noch eine idee hat, ich bin für alles offen.
mato

****************************

habe jetzt herausgefunden das sich firebird an dem ftString gestört hat. nur den scheint er nicht zu wollen. bei ftinteger oder ftFixedChar macht er keine probleme. muss mich nochmal wegen den feldtypen kundig machen, welche nun unterstützt werden und welche nicht.

***************************

und gleich nochmal, weil es so schön war. jetzt macht er es doch, warum auch immer. habe mal mit der -Size- rumgebastelt. wollte ja immer eine länge von -15- haben, hat er aber echt nicht gemacht. habe ich also mit -1- angefangen und mit einer schleife bis 14 laufen lassen und siehe da ... er tuts. das komische daran ist nur, habe die schleife bis 25 erhöht und er tuts immernoch. auch die -15- alleine bei nich existierender tabelle macht er mir jetzt. ich habe echt nichts weiter verändert, ist schon komisch. na wenn ich noch drauf komme gebe ich mal laut.
mato


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.

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