DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9737
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 127 Mal
Danksagung erhalten: 438 Mal
Kontaktdaten:

DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von Tom »

Ich muss in einer Service-Applikation mit der ADSDBE auf Tabellen zugreifen, die DBFNTX oder FOXCDX sind, aber im selben Ordner liegen und über denselben ADS verwaltet werden (ohne DD). Ich habe also im Prinzip (unter anderem) einmal das hier:

Code: Alles auswählen

DbeInfo( COMPONENT_DATA, ADSDBE_TBL_MODE, ADSDBE_NTX)
und einmal das hier:

Code: Alles auswählen

DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_CDX )
(und dann auch noch für _ORDER).

Was ist der eleganteste Weg? Ich kann mehrere Connections verwalten, das ist kein Problem, aber die Table- und Index-Einstellungen beziehen sich ja auf die DBE und nicht auf die Connection. Baue ich mir eine neue ADSDBE (sowas wie "ADSDBE2") und gebe die dann als Parameter an? Ich weiß bei jeder Tabelle, die genutzt wird, welche DBE sie benötigt, kann also Session oder DBE angeben.

Edit: Thema des Beitrags präzisiert.
Herzlich,
Tom
RolandG
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: Mi, 09. Jan 2019 16:02
Wohnort: Neresheim
Danksagung erhalten: 11 Mal
Kontaktdaten:

Re: DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von RolandG »

Das mit der zweiten ADSDBE habe ich vor kurzem versucht. Zwei Connection Strings usw.
Am Ende habe ich aufgegeben irgendwas ging immer nicht bzw. nicht mehr...

https://www.xbaseforum.de/viewtopic.php?t=12875
Gruß
Roland
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 963
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 47 Mal
Danksagung erhalten: 233 Mal
Kontaktdaten:

Re: DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von Marcus Herz »

Adsclass++ kann das
Gruß Marcus

Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9737
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 127 Mal
Danksagung erhalten: 438 Mal
Kontaktdaten:

Re: DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von Tom »

Hallo, Roland.

Mehrere Connections sind überhaupt kein Problem, aber ich muss die ADSDBE in zwei unterschiedlichen Konfigurationen fahren.

@Marcus: Ich habe nichts anderes von Euch erwartet, aber ich kann nicht für diesen einen Anwendungsfall auf Adsclass++ umstellen. :wink: Ich vermute, Ihr baut eine eigene DBE aus der ADSDBE (MyADSDBE o.ä.) und konfiguriert die dann, oder? Das ist jedenfalls der Weg, den ich versuchen würde.

Frohes Neues!
Herzlich,
Tom
RolandG
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: Mi, 09. Jan 2019 16:02
Wohnort: Neresheim
Danksagung erhalten: 11 Mal
Kontaktdaten:

Re: DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von RolandG »

Tom hat geschrieben: Mi, 01. Jan 2025 12:07 Mehrere Connections sind überhaupt kein Problem, aber ich muss die ADSDBE in zwei unterschiedlichen Konfigurationen fahren...
genau - ich hatte ja geschrieben dass ich das so wie Du das machen willst mit zwei verschiedenen ADSDBE nicht zum Laufen gebracht habe.
Die Multi-Connection-Verwaltung hat gut funktioniert.
Gruß
Roland
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 963
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 47 Mal
Danksagung erhalten: 233 Mal
Kontaktdaten:

Re: DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von Marcus Herz »

Adsclass passiert auf der C-API. Ohne adsdbe. Für ausgelagerten Daten Abgleich evtl. auch für dich interessant. Nicht um eine App auf workarea Basis umzustellen. Ich hab mir auch überlegt, diese Klasse lizenzfrei zu setzen. Mit dem nächsten Update
Gruß Marcus

Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9737
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 127 Mal
Danksagung erhalten: 438 Mal
Kontaktdaten:

Re: DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von Tom »

Der Connection-String für den Aufbau einer DacSession muss immer die DBE-Angabe enthalten (siehe auch hier: https://www.xbaseforum.de/viewtopic.php ... 9&start=25), weshalb meine Idee, eine "MYADSDBE" zu bauen, die dann anders konfiguriert ist als die Standardversion der ADSDBE, daran scheitert, dass bei der Nutzung des neuen DBE-Namens im Connection-String der von Dir, Roland, bereits erwähnte Fehler auftritt: "Die DBE unterstützt die Operation nicht." DacSession():New() akzeptiert als DBE nur "ADSDBE", "PGDBE" und "ODBCDBE", und auch wenn man eine DBE direkt davon abgeleitet hat (DbeBuild('MYDBE','ADSDBE')), wird das zurückgewiesen.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9737
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 127 Mal
Danksagung erhalten: 438 Mal
Kontaktdaten:

Re: DBE zweimal gleichzeitig mit unterschiedlichen Einstellungen, ohne DD

Beitrag von Tom »

Heureka. Dank Alaska-Support und dort insbesondere Andreas Lösung gefunden, wobei ich schon auf dem richtigen Weg war: Beim DbeBuild() muss der fünfte Parameter (DictionaryDBE) angegeben werden, dann kann man quasi eine zweite Instanz der ADSDBE erzeugen und anders konfigurieren als die erste. Ich dachte, ich könne auf diesen Parameter verzichten, da ich kein DD verwende, aber das stimmt ja nur teilweise, weil der ADS seit Version 11 implizit ein Root-DD verwaltet. So oder so, wenn man das hier macht, geht es:

Code: Alles auswählen

DbeBuild('MYADSDBE','ADSDBE','ADSDBE',,'ADSDBE')
o2ndSession := DacSession():new( "DBE=MYADSDBE;SERVER=" + cMyServerPath )
? o2ndSession:IsConnected() // .T.
Wenn ich (vorübergehend) die Dbe mit DbeSetDefault() selektiere, kann ich sie abweichend von der Konfiguration der Standard-ADSDBE parametrisieren, also auch für andere Tabellen- und Indexformate. Und beim Öffnen der Tabellen muss ich nur die jeweilige Session angeben, wenn es nicht die Default-Session ist.

Edit: Offenbar sind zwei unterschiedliche Konfigurationen damit jedoch nicht so leicht abbildbar. Wenn ich sowas mache:

Code: Alles auswählen

DbeInfo( COMPONENT_ORDER, ADSDBE_INDEX_EXT, "CDX")
Wirkt sich das offenbar auf das Original und auf den Build aus, ganz unabhängig davon, welche der beiden DBEs im Moment Default ist. :(
Herzlich,
Tom
Antworten

Zurück zu „ADS“