Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kennt sich jemand mit Zeos aus? (https://www.delphipraxis.net/49973-kennt-sich-jemand-mit-zeos-aus.html)

JRegier 19. Jul 2005 07:58

Datenbank: MySQL • Zugriff über: Zeus Compos

Kennt sich jemand mit Zeos aus?
 
Hi, ich möchte mit den Zeos Compos rausfinden welches das AutoInc Feld in der MySQL Tabelle ist! Nun
habe ich es mit FieldType = ftAutoInc und Filds.Fields[J] is TAutoIncField versucht aber in beiden
Fällen bekomme ich das Ergebnis False!

Und dann wollte ich auch testen ob es ein IntegerTyp ist und habe es so gemacht
FieldType in [ftSmallint,ftInteger,ftWord,ftAutoInc,ftLargeint]
aber BigInt wird nicht erkannt ist doch Largeint oder?

Sind die Type bei Zeus Compos anders als bei der BDE! In welcher Datei finde ich den Typen?

RavenIV 19. Jul 2005 08:01

Re: Kennt sich jemand mit Zeus aus?
 
so am rande erwähnt:
die Komponenten heissen ZEOS, nicht ZEUS.

such hier im forum mal nach ZEOS und du wirst hilfe finden.
es gibt auch etliche tutorials dazu hier im DelphiPraxis.

gruessle

JRegier 19. Jul 2005 09:21

Re: Kennt sich jemand mit Zeus aus?
 
Zitat:

Zitat von RavenIV
so am rande erwähnt:
die Komponenten heissen ZEOS, nicht ZEUS.

such hier im forum mal nach ZEOS und du wirst hilfe finden.
es gibt auch etliche tutorials dazu hier im DelphiPraxis.

gruessle

Bitte verrate mir wie ich rausfinde ob ein Feld AutoInc ist! Bitte.. :kiss: ich hab schon viel Zeit vertloren! :kiss:

Matt 23. Jul 2005 15:14

Re: Kennt sich jemand mit Zeos aus?
 
Hallo JRegier,

um herauszufinden welche Indexe (Primary/Secondary) in deiner Tabelle enthalten sind würde ich eine Query über die Tabelle laufen lassen und den ersten Wert (Primary) abfragen:

Delphi-Quellcode:
TZQuery.sql.clear;
TZQuery.sql.add('Show Index from `Datenbank`.`Tabelle`');
TZQuery.open;
oder du fragst das Feld "Extra" ab, ob es den Wert auto_increment enthält:

Delphi-Quellcode:
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
....

Gruß Matt

JRegier 23. Jul 2005 18:13

Re: Kennt sich jemand mit Zeos aus?
 
Zitat:

Zitat von Matt
oder du fragst das Feld "Extra" ab, ob es den Wert auto_increment enthält:
Delphi-Quellcode:
if TZQuery.fieldbyname('Extra').asstring = 'auto_increment' then
aiFeld := TZQuery.fieldbyname('Field').asstring
....

Hi, endlich einer der was davon versteht! :thumb:

Aber ich verstehe nicht ganz! Was ist das Feld "Extra" ist ein Reserviertes Wort
in der DB das diese Information dazu enthält?

Matt 23. Jul 2005 19:15

Re: Kennt sich jemand mit Zeos aus?
 
Ja genau, das gehört zu den (Columns)(Feld)-bezeichnungen von MySQL-Tabellen!

-> Field - Type - Null - Key - Default - Extra - Collation - Privileges - Comment


Gruß Matt

JRegier 24. Jul 2005 07:41

Re: Kennt sich jemand mit Zeos aus?
 
Zitat:

Zitat von Matt
Ja genau, das gehört zu den (Columns)(Feld)-bezeichnungen von MySQL-Tabellen!

-> Field - Type - Null - Key - Default - Extra - Collation - Privileges - Comment


Gruß Matt

Hey, super! Sie sind der beste weit und breit!
Sag nur ist das hier nur Tippfehler? mit doppelten from
Delphi-Quellcode:
TZQuery.sql.add('Show full columns from from `Datenbank`.`Tabelle`');
Und wo kann man dise SQL Befehle nachlesen gibts bei jedem DatenbankTyp eigene zusätzliche Befehle?

Bei anderem Delphi Forum hatten die mir
gesagt das ich mit DataType = ftAutoInc prüfen muß aber ich wußte ja, dass DataType auch auf AutoInc Felder bei verschiedenen
Datentypen von TINYINT - BIGINT immer nur jeweils den Datentyp zurückgibt!

Na ja hatte auch versucht mit:
Delphi-Quellcode:
   Field[J] is TAutoIncField
                    //und
   FieldDefs[J].AutoGenerateValue = arAutoInc
das alles hatte ja nichts gebracht!

Nun habe ich noch einige Fragen:

AutoInc kann immer nur erstes Feld sein?
Kann eine Tabelle mehrere AutoInc Felder haben? // was überaus sinnlos erscheinen mag aber nicht
//wenn wir die nächste Frage betrachten man weiß ja nie
//wer sich was ausgedacht hat z.B. wenn man mehrere
//AutoInc zu einer größeren Zahl addieren will

Kann eine Tabelle von mehreren Schlüßeln abhängig sein?

Ich kenne einen guten Programmierer, der gab mir den Tip FieldDefs[J].AutoGenerateValue = arAutoInc
aber er sagte mir auch dass er keine AutoInc Felder verwendet wenn er eine DB entwickelt
er meint das wäre besser! Stimmt das? Ich weiß nicht der Aufwand wäre ja etwas größer wenn
man jedes mal den Schlüßel prüfen muß?

Sharky 24. Jul 2005 08:57

Re: Kennt sich jemand mit Zeos aus?
 
Hai JRegier,

das mit dem doppelten FROM ist ein Teppfihler ;-)

Bei mySQL kann immer nur ein Feld vom Typ Auto-Inc sein. Dieses Feld muss ausserdem ein Primärschlüssel sein.
Das Auto-Inc Feld muss nicht das erste in der Tabelle sein.
Eine Tabele kann mehrere Schlüssrl haben.

Das mit dem AutoInc ist so eine Sache. Da mySQL (zur Zeit) noch keine StoredProc bzw Trigger unterstützt gibt es eigentlich keine Alternative. Wobei ich selber den PK einer Tabelle fast immer auf ein AutoInc-Feld lege.

Natürlich hat jedes DBMS neben den "Standard-SQL-Befehlen" auch immer noch jede Menge eigene.
Für mySQL kannst Du dir ja hier die Doku als PDF laden. Ist zwar nur bis zur Version 3.x aber das reicht für den Anfang sicher.

JRegier 24. Jul 2005 09:47

Re: Kennt sich jemand mit Zeos aus?
 
Vielen Dank für die Tipps Leute! Ihr seid Klasse!
Sagt mal werden immer nur Felder des gleichen Datentyps verknüpft? Also ich kann mir nicht vorstellen das z.B. ein TINYINT mit BIGINT verknüpft
ist da ja das BIGINT bald über das niveau des TINYINT ist! Oder?

Oder gibts mal DB's wo String und Integer schlüßel sind?


Übrigens ich habe es heute Abend ausprobiert mit den AutoInc Feldern einlesen! Alles super klappt wunderbar!

Vielen Dank für Eure Hilfe!


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