Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 13.09.05 12:07 
Hi, was passiert wenn ich in ein AutoInc Feld mit INSERT Befehl rienschreibe?
Verhalten sich die DB's verschieden?

Nun meine Idee ist es bei verschiedenen DB's rauszufinden welches das AutoInc Feld ist,
und dazu will ich irgendwelche Werte in alle Felder einfügen und danach wieder auslesen
um zu prüfen welches Feld hochgezählt hat!

Wie läßt sich das machen?
Marauder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 72



BeitragVerfasst: Di 13.09.05 12:20 
Mach das mal besser über die Systemtabellen, das ist einfacher, da bekommst du alles
was du wissen willst. Systemtabellen gibt's eigentlich überall.

Beim Microsoft-SQL-Server zum Beispiel so:


Select Distinct sysobjects.name as Tabellenname, syscolumns.name as Feldname,syscolumns.length,Systypes.name as TypeName From sysobjects,syscolumns,Systypes Where (sysobjects.id=syscolumns.id
AND sysobjects.type=''U'') and (Syscolumns.xtype=systypes.xtype) ORDER BY sysobjects.name, syscolumns.name


Theoretisch bekommst Du die relevanten Daten auch über entsprechende Datenkomponenten, zum Beispiel
über die ADO-Objekte. Da kannst du die Tabelle laden und auf alle Daten über Eigenschaften drauf zugreifen.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 13.09.05 12:48 
Was sind Systemtables?

OK ich hatte da mit Zeos Komponenten vorerst mal den Zugriff auf MySQL DB und wollte wissen welches das AutoInc Feld ist!
Habe erst mit

ausblenden Delphi-Quelltext
1:
2:
3:
 FieldType = ftAutoInc;
 Fields[J] is TAutoIncField;
 FieldDefs[J].AutoGenerateValue = arAutoInc;


versucht aber ich bekamm immer False

bis mir einer die Lösung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
TZQuery.sql.clear; 
TZQuery.sql.add('Show full columns from from `Datenbank`.`Tabelle`'); 
TZQuery.open; 

... //Datensätze durchlaufen 
...

if TZQuery.fieldbyname('Extra').asstring = 'auto_increment' then 
aiFeld := TZQuery.fieldbyname('Field').asstring 
....


gegeben hat!

Aber ich möchte es über den Weg machen Insert Values und danch select und Werte Prüfen!
OK ich müßte prüfen ob Feld Required und da auch Werte einfügen aber ist ein AutoInc Feld
auch mal Required? Oder wird der bei keiner DB als Requiered angegeben?