dbf-Typen im ADS bestimmen

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

dbf-Typen im ADS bestimmen

Beitragvon Jan » Mo, 09. Jan 2017 10:56

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11762
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: dbf-Typen im ADS bestimmen

Beitragvon ramses » Mo, 09. Jan 2017 11:37

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
ramses
1000 working lines a day
1000 working lines a day
 
Beiträge: 514
Registriert: Mi, 28. Jul 2010 17:16

Re: dbf-Typen im ADS bestimmen

Beitragvon Jan » Mo, 09. Jan 2017 11:57

Hallo Carlo,

implementiert ein ADSCDX automatisch, das die dbf FOX ist?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11762
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: dbf-Typen im ADS bestimmen

Beitragvon ramses » Mo, 09. Jan 2017 12:41

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
ramses
1000 working lines a day
1000 working lines a day
 
Beiträge: 514
Registriert: Mi, 28. Jul 2010 17:16

Re: dbf-Typen im ADS bestimmen

Beitragvon Tom » Mo, 09. Jan 2017 12:54

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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6707
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin

Re: dbf-Typen im ADS bestimmen

Beitragvon Jan » Mo, 16. Jan 2017 13:39

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11762
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle


Zurück zu Daten und Tabellen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste