dbf-Typen im ADS bestimmen

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

dbf-Typen im ADS bestimmen

Beitrag von Jan »

Hallo,

wenn ich mit dem ADS arbeite, benutze ich die ADSCDX. Im ADS werden die dbf als FoxPro eingelesen. Soweit so gut.

Wenn ich aber im ADS eine neue dbf erstellen möchte durch ein DbCreate() - wie bestimme ich dann, das die erstmal FOXCDX sein soll? Aber dennoch natürlich sofort im ADS registriert sein soll?

Warum ich das frage: Ich habe schon stapelweise neue dbf im ADS auf diesem Weg erstellt. Das hat auch immer geklappt. Aber jetzt habe ich zum ersten Mal eine dbf mit Memofeld erstellt - und die hat dann eine dbt bekommen! Und ich konnte die daher natürlich auch manuell nicht als Typ Foxpro in den ADS integrieren.

Wenn ich DbCreate() als dritten Parameter das FOXCDX mitgebe, dann klappt das im ADS nicht, weil der natürlich eine ADSCDX haben möchte. Ich habe mir jetzt erstmal so beholfen, das ich die dbf per 3. Parameter woanders erzeugt habe, und dann manuell in den ADS-Datenbereich kopiert und in den ADS eingebunden habe. Aber Sinn der Sache ist das natürlich nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: dbf-Typen im ADS bestimmen

Beitrag von ramses »

Hallo Jan

ich denke du musst der ADSDBE mit folgenden Befehlen:

DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_CDX )
DbeInfo( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX )

mitteilen dass Sie (die ADSDBE) als Standard CDX verwendet.
Dann kannst du dem dbcreate() als 3. Parameter "ADSDBE" übergeben.

Cu Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf-Typen im ADS bestimmen

Beitrag von Jan »

Hallo Carlo,

implementiert ein ADSCDX automatisch, das die dbf FOX ist?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: dbf-Typen im ADS bestimmen

Beitrag von ramses »

Hallo Jan

müsste eigentlich. Ich verwende seit einiger Zeit nur noch DBF und NTX ob es jetzt noch so ist musst du testen.
Schau mal in der ads20.chm da sind die Parameter beschrieben.

Cu Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: dbf-Typen im ADS bestimmen

Beitrag von Tom »

DbCreate() erzeugt immer eine Tabelle mit der aktuellen DBE, es sei denn, es wird via VIA eine andere angegeben, wobei diese DBE auch geladen sein muss. Ob Dein "ADSCDX" Fox-Tabellen mit Fox-Indexen erzeugt oder dB-Tabellen mit Fox-Indexen, was nicht eben wahrscheinlich ist, hängt von der Konfiguration der DBE ab. Da es sich um eine zusammengesetzte DBE handeln dürfte, müsstest Du das in Deinem Code sehen können. Wichtig sind Dinge wie DbeInfo(COMPONENT_DATA,ADSDBE_TBL_MODE) und ähnliche. Fox-Tabellen kann man zuweilen öffnen, wenn man eigentlich Standard-DBF erwartet, vorausgesetzt, es gibt keine Memos, keine Autoincrements oder ähnliche Spezialitäten.
Und dann ist da noch die Sache mit dem Zeichensatz. :wink:
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbf-Typen im ADS bestimmen

Beitrag von Jan »

Sorry, das es doch länger gedauert hat.

So sieht der ADS-Eintrag in der dbesys aus:

Code: Alles auswählen

DbeInfo(COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_PROPRIETARY_LOCKING)                              // dbf nur über ADS bearbeitbar
DbeInfo(COMPONENT_DATA, ADSDBE_TBL_MODE, ADSDBE_CDX)
DbeInfo(COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX)
DbeInfo(COMPONENT_DATA, ADSDBE_RIGHTS_MODE, ADSDBE_IGNORERIGHTS )
DbeInfo(COMPONENT_DATA, ADSDBE_TABLENAME_IS_ALIAS, .T.)
DbeSetDefault("ADSDBE")
In der dbesys erstelle ich auf die DBFNTX und die FOXCDX. Erstere könnte ich inzwischen auch rauswerfen, die FOXCDX brauche ich ab und an für externe dbf.

Ich habe das noch mal nachgeprüft: Es werden eindeutig DBFNTX erzeugt im ADS. Was nicht sonderlich erquickend ist.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten