ADSDBE andere Index-Ext [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 67
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

ADSDBE andere Index-Ext [ERLEDIGT]

Beitrag von klammerauf »

Hallo,

ich habe einen Kunden, dessen Indexdateien bei ADS die Endung .KEY haben. Er hat aber auch Standard-NTX-Dateien, die er lokal bearbeiten möchte.

Ich dachte an eine DBESYS() wie folgt:

Code: Alles auswählen

#include "DBFDBE.ch"
#include "ADSDBE.ch"

PROCEDURE dbeSys()

	SET COLLATION TO GERMAN

/* DBFNTX -------------------------------------------------------------------- */

	IF ! DbeLoad( "DBFDBE", .T.)
		ALERT( "Database Komponente DBFDBE konnte nicht geladen werden!" , {"OK"} )
	ENDIF

	IF ! DbeLoad( "NTXDBE" , .T.)
		ALERT( "Database Komponente NTXDBE konnte nicht geladen werden!" , {"OK"} )
	ENDIF

	IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
		ALERT( "Database Engine DBFNTX konnte nicht erzeugt werden!" , {"OK"} )
	ENDIF

/* ADSDBE -------------------------------------------------------------------- */

	DBEINFO( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX )
	DBEINFO( COMPONENT_ORDER, ADSDBE_INDEX_EXT, "KEY" )
	DBEINFO( COMPONENT_DATA, ADSDBE_TBL_MODE, ADSDBE_CDX )
	DBEINFO( COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_PROPRIETARY_LOCKING )
	DBEINFO( COMPONENT_DATA, ADSDBE_FREETABLE, .T. )

	IF ! DbeLoad( "ADSDBE" )
		ALERT( "Unable to load ADSDBE", {"Ok"} )
	ENDIF

/* Default -------------------------------------------------------------------- */

	DbeSetDefault( "DBFNTX" )

RETURN

Ein einfaches Öffnen mit

Code: Alles auswählen

USE dbfdatei NEW
SET INDEX TO dbfdatei
sollte dann ganz normal die DBFNTX DBE verwenden.

Und ein

Code: Alles auswählen

USE adsdbf NEW VIA ADSDBE
SET INDEX TO adsdbf
sollte die ADSDBF.DBF mit der ADSDBF.KEY öffnen.

Leider erhalte ich aber eine Fehlermeldung, dass die ADSDBF.NTX nicht gefunden wird.

Wenn ich versuchshalber in der Beschreibung der ADSDBE die Anweisung

Code: Alles auswählen

DBEINFO( COMPONENT_ORDER, DBE_EXTENSION, "KEY" )
einbaue, dann wird schon die dbfdatei.ntx nicht mehr gefunden.

Nun meine Fragen. Warum funktioniert die ADSDBE_INDEX_EXT -Anweisung nicht? Hat jemand die gleiche Erfahrung gemacht? Gibt es bei mir einen Fehler im Code? Kennt jemand einen Workaround?

Danke im voraus.

Sebastian
Zuletzt geändert von klammerauf am Mo, 28. Nov 2011 12:38, insgesamt 1-mal geändert.
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: ADSDBE andere Index-Ext

Beitrag von UliTs »

Hallo Sebastian,

Code: Alles auswählen

DbeInfo()
ändert immer die Einstellungen in der aktuellen Database-Engine!
Ich glaube, die Reihenfolge ist falsch! Du mußt erst die ADSDBE erzeugen, diese als aktuelle Engine auswählen, die DbeInfo()-Befehle ausführen und anschließend die DBFNTX als aktuelle Engine auswählen. Klappt dies?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 67
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Re: ADSDBE andere Index-Ext

Beitrag von klammerauf »

Hallo Uli,

Danke, hatte ich schon probiert. Es scheint ganz egal zu sein, wo die DBEInfo() stehen, gleicher Fehler.

Sebastian
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: ADSDBE andere Index-Ext

Beitrag von UliTs »

Und wenn Du die Kennung beim Dateinamen mit angibst? Klappt es dann?
Wie sieht es aus, wenn Du auf die Macroumsetzung der Befehle verzichtest ( z.B. statt use abc: use( "abc" ) )
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 67
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Re: ADSDBE andere Index-Ext

Beitrag von klammerauf »

Wenn ich

Code: Alles auswählen

USE adsdbf NEW VIA ADSDBE
SET INDEX TO adsdbf.key
verwende, dann klappt es.

Wenn ich

Code: Alles auswählen

USE adsdbf NEW VIA ADSDBE
OrdListAdd( "adsdbf" )
verwende, dann klappt es nicht.

Nochmals danke.
Sebastian
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
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: ADSDBE andere Index-Ext

Beitrag von Jan »

Was ist, wenn Du zwei Database-Engines in der DBESYS erstellst? Beide mit den gleichen Komponenten, aber die eine mit umbenannten Indexdateien? Dann kannst Du die mit dem jeweils passenden VIA öffnen. Ich sag mal als Beispiel ADSDBENTX und ADSDBEKEY.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 67
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Re: ADSDBE andere Index-Ext

Beitrag von klammerauf »

Sorry für die späte Rückmeldung, meine Antwort vom gleichen Tag ist irgendwie verlorgen gegangen.

Danke an Uli, du hattest den richtigen Riecher. Die Reihenfolge war tatsächlich ausschlaggebend.

Hier die funktionierende DBESYS()

Code: Alles auswählen

PROCEDURE dbeSys()

	SET COLLATION TO GERMAN

/* DBFNTX -------------------------------------------------------------------- */

	IF ! DbeLoad( "DBFDBE", .T.)
		ALERT( "Database Komponente DBFDBE konnte nicht geladen werden!" , {"OK"} )
	ENDIF

	IF ! DbeLoad( "NTXDBE" , .T.)
		ALERT( "Database Komponente NTXDBE konnte nicht geladen werden!" , {"OK"} )
	ENDIF

	IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
		ALERT( "Database Engine DBFNTX konnte nicht erzeugt werden!" , {"OK"} )
	ENDIF

/* ADSDBE -------------------------------------------------------------------- */

	IF ! DbeLoad( "ADSDBE" )
		ALERT( "Unable to load ADSDBE", {"Ok"} )
	ENDIF

	DbeSetDefault( "ADSDBE" )

	DBEINFO( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX )
	DBEINFO( COMPONENT_DATA, ADSDBE_TBL_MODE, ADSDBE_CDX )
	DBEINFO( COMPONENT_ORDER, ADSDBE_INDEX_EXT, "KEY" )
	DBEINFO( COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_PROPRIETARY_LOCKING )
	DBEINFO( COMPONENT_DATA, ADSDBE_FREETABLE, .T. )

/* Default -------------------------------------------------------------------- */

	DbeSetDefault( "DBFNTX" )

RETURN
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: ADSDBE andere Index-Ext

Beitrag von UliTs »

Das freut mich 8) .
Jetzt noch das Thema als [ERLEDIGT] markieren :D
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 67
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Re: ADSDBE andere Index-Ext

Beitrag von klammerauf »

Gerne, wie?
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: ADSDBE andere Index-Ext

Beitrag von UliTs »

Indem Du Deinen ersten Eintrag im Thema änderst und an Titel [ERLEDIGT] dranhängst. :wink:
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten