Seite 1 von 1

FoxCdx und Feldnamenlängen

Verfasst: Do, 12. Apr 2018 17:31
von Manfred
Irgendwo habe ich mal vor längerer Zeit gelesen, seit der 2.0er ist der Foxcdx Treiber in der Lage mehr als 10 Zeichen Länge für Felnamen ermöglichen. Stimmt das? Ich finde dazu nichts.

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 7:09
von brandelh
Unter New Features in der 2.00 Hilfe steht das:
Xbase++ Hilfe hat geschrieben:New: Long field names for DBF tables with FOXDBE
The FOXDBE DatabaseEngine now detects an existing DBC and loads the table-specific meta information from the Visual FoxPro database containers. Long field names are therefore supported.
die Deutung überlasse ich euch ;-)

DBC ?

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 7:21
von Martin Altmann
Wird wohl (wie weiter hinten in Deinem Zitat ersichtlich) für DataBase Container stehen.

Viele Grüße,
Martin

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 7:37
von brandelh
Die reinen Buchstaben habe ich dem Teil auch zugeordnet, aber was das ist und wie man damit umgeht ist für mich eher nebulös ;-)

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 9:07
von HaPe
Hallo Zusammen !
Wird wohl (wie weiter hinten in Deinem Zitat ersichtlich) für DataBase Container stehen.
Die reinen Buchstaben habe ich dem Teil auch zugeordnet, aber was das ist und wie man damit umgeht ist für mich eher nebulös ;-)
Das ist nicht nebulös. [-X
Das ist einfach eine weitere DBF-Tabelle (was sonst) in der Metainformationen zu allen Tabellen eines Projektes stehen.
Dazu gehören lange Feldnamen, Format-Maske, Eingabe-Maske, Caption, Regel, Meldung, Default-Wert, AutoInkrement-Wert, zugeordnete Klasse zur Anzeige der Daten, der Kommentar zu einem Feld aber auch zur gesamten Tabelle. Dann noch ein INSERT-, UPDATE-, und DELETE-Trigger für die Tabelle in denen man eigenen Code hinterlegen kann sowie einen Alias-Namen der Tabelle.
Ein DataDictionary also wie es ein SQL-Server zur Verwaltung auch hat.

Wie Ihr seht, alles sehr nützlich Dinge die man nicht selbst dazu bauen muss.
Ich übernehme davon zahlreiche Daten in die MS-SQL- sowie PostgreSQL-Datenbank.
Das wichtigste sind dabei die Beschreibung (Caption) des Feldes sowie der zugehörige Kommentar.
In meiner generischen Suchklasse muss ich nur diese Daten auslesen und nicht für jede Tabelle selbst diese Daten zuordnen.

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 9:36
von brandelh
Ich schrieb ja "für mich" ;-)

aber ich denke, dass jemand ohne FoxPro damit auch wenig anfangen kann, daher die allgemeine Frage, obwohl ICH das nicht brauche .... ;-)

Kann man OHNE die FoxPro Hilfsmittel diese Beschreibungsdatei einfach anlegen, welche Felder und Inhalte sind nötig ? ;-)
Das könnte dann ein Xbase++ Entwickler nutzen um in seiner Sprache lange Feldnamen zu verwenden ... ;-)
Ich frage mich allerdings, ob der dann auch im DBF Header steht, vermutlich nicht und damit gibt es doch dann 2 Namen, einen kurzen und einen langen.
Für die IDE von FoxPro super, denn die weiß was sie tut, aber was bringt das uns außer Inkompatibilität ?

Du siehst ... vom Kleinen Finger zur Ganzen Hand, alles in einem Satz KFZGH :D

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 12:03
von HaPe
Hallo Hubert !
Kann man OHNE die FoxPro Hilfsmittel diese Beschreibungsdatei einfach anlegen, welche Felder und Inhalte sind nötig ? ;-)
Ja, kann man.
Nur wird man nicht ohne weiteres zb. die Trigger nutzen können.
Aber die langen Feldnamen, die Beschreibung (Caption), der Kommentar ist einfachst auszulesen, da DBF-Tabelle.
Es gibt im DBC einen Verweis auf die Tabelle und in der Tabelle im DBF-Header den Verweis auf den zugehörigen DBC.
Hier mal die Struktur des DBC:

Code: Alles auswählen

Feld  Feldname                                                           Typ       Breite 
   1  OBJECTID     Laufende Nummer                                       Integer        4 
   2  PARENTID     Verweis auf den Parent, zb. Feld auf Tabelle          Integer        4 
   3  OBJECTTYPE   Database/Table/Field/Index                            Zeichen       10 
   4  OBJECTNAME   Tabellen-Alias/Feld-Name (bis 128 Zeichen)            Zeichen      128 
   5  PROPERTY     Kompletter Dateinamen/Standardwert-Funktion           Memo           4 
                   Caption/Kommentar/...
                   Leider nicht im INI-Format
   6  CODE         QuellCode zb. für Trigger                             Memo           4 
   7  RIINFO       Info für referentielle Integrität                     Zeichen        6 
   8  USER         Frei vom Entwickler nutzbar                           Memo           4 
Tag: OBJECTNAME Key: STR(PARENTID)+OBJECTTYPE+LOWER(OBJECTNAME)
Tag: OBJECTTYPE Key: STR(PARENTID)+OBJECTTYPE
Das könnte dann ein Xbase++ Entwickler nutzen um in seiner Sprache lange Feldnamen zu verwenden ... ;-)
Das wäre möglich.
Ich selber nutze keine langen Feldnamen; das hat historische und technische Gründe.

Ich frage mich allerdings, ob der dann auch im DBF Header steht, vermutlich nicht und damit gibt es doch dann 2 Namen, einen kurzen und einen langen.
Natürlich nicht, weil dort je Feldnamen nur 10 Zeichen Platz ist :-)

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 12:47
von Manfred
Antwort von Alaska

es stimmt: die Unterstützung für lange Feldnamen wurde für die Kompatibilität mit Visual FoxPro hinzugefügt. Dazu ist ein ein Datenbank-Container (.dbc) nötig, der zusätzlich mit der .dbf vorliegen muss. Dieser Container lässt sich aus Xbase++ heraus leider nicht so einfach erzeugen. Das Merkmal ist also sozusagen "read-only".

Ich hoffe, das beantwortet Deine Frage.

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 12:54
von Jan
Ich versteh das jetzt also so, das die dbf selber eigentlich keine langen Feldnamen kann. Aber man (ich drück das jetzt mal bildlich aus) eine Übersetzungs-dbf hat, in der die langen Feldname stehen, inkl. Verweis auf den realen kurzen Feldnamen?

Jan

Re: FoxCdx und Feldnamenlängen

Verfasst: Fr, 13. Apr 2018 13:10
von HaPe
Hallo Jan !
Ich versteh das jetzt also so, das die dbf selber eigentlich keine langen Feldnamen kann. Aber man (ich drück das jetzt mal bildlich aus) eine Übersetzungs-dbf hat, in der die langen Feldname stehen, inkl. Verweis auf den realen kurzen Feldnamen?
Ganz genau so läuft das :D