Probleme mit dem Advantage Local Server (ALS)

Advantage Database Server

Moderator: Moderatoren

Antworten
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Probleme mit dem Advantage Local Server (ALS)

Beitrag von notloesung »

Hi,

irgendwie „funzt“ es nicht – oder wie Manfred vielleicht passend sagen würde „Hab ein Brett vorm Kopf“. :roll:

Ich versuche irgendwie den ALS zu laufen zu bringen. Und es klappt nicht, und klappt nicht, und …

Hat jem. schon damit Erfahrung gesammelt und kann ein paar Tipps geben?
Zum Beispiel wo genau die Dateien adsloc32.dll und adslocal.cfg liegen müssen. Was ist dabei zu beachten (einfach nur kopieren?).
Und wie sieht dann der typische Verbindungsaufbau mit DacSession():new( ??? ) aus.
Kann ich beim ALS mit :isConnected() feststellen ob die Verbindung erfolgreich war oder geht das nur beim ADS?

Fragen über Fragen. Bin für jeden Tipp dankbar.

Gruß,
Notloesung
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:

Beitrag von Tom »

Hallo, Notloesung.
Zum Beispiel wo genau die Dateien adsloc32.dll und adslocal.cfg liegen müssen.
Im Ausführungsverzeichnis Deiner App (insbesondere letztere); DLLs können aber grundsätzlich irgendwo im System-Suchpfad (nicht im Pfad, der durch SET PATH oder SET DEFAULT Deiner App angegeben wurde!) liegen. Du benötigst außerdem die ADSDBE.DLL und ggf. (falls Du auf deren Funktionen zugreifst) die ADSUTIL.DLL. Außerdem sind die richtigen Client-DLLs ACE32.DLL und AXCWS32.DLL (ggf.) nötig. Wenn Du nur ADS-local machen willst, reichen die aus dem RUNTIME-Verzeichnis der ADSDBE-Installation.
Und wie sieht dann der typische Verbindungsaufbau mit DacSession():new( ??? ) aus.
Zum Beispiel so:

Code: Alles auswählen


FUNCTION StartAds(cMyAdsPath)
LOCAL oAdsSession, lAdsLoaded := .F., cSession
BEGIN SEQUENCE

  IF ! DbeLoad( "ADSDBE" )
    MsgBox( "Fehler beim Laden der ADSDBE")
    BREAK
  ENDIF

  cSession := "DBE=ADSDBE;SERVER=" + cMyAdsPath
  oAdsSession := DacSession():new( cSession )
  IF !oAdsSession:isConnected()
     MsgBox("Fehler beim Verbindungsaufbau zum ADS Server")
    BREAK
  ENDIF
  oAdsSession:SetProperty(ADSDBE_OEM_LANG) // wenn Charset OEM
  DBESETDEFAULT('ADSDBE')
  DbeInfo( COMPONENT_DATA, ADSDBE_TBL_MODE, ADSDBE_NTX)
  DbeInfo( COMPONENT_ORDER, ADSDBE_INDEX_EXT, "NTX")
  AX_AXSLocking(.T.) // wenn ADS-kompatibles Locking gewünscht
  lAdsLoaded := .T.
END SEQUENCE
Return lAdsLoaded
Herzlich,
Tom
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hallo Tom,

danke für deine schnelle und dennoch sehr späte (11:49 pm :sleepy1: ) Antwort.

Der Teufel liegt wie so oft im Detail.
Ich habe bei der Angabe des Servers nicht spezifiziert dass es sich um einen local Server handelt. Und ohne diese Spezifikation läuft bei mir nichts.

Code: Alles auswählen

cSession := "DBE=ADSDBE;SERVER=" + cMyAdsPath + ";ADS_LOCAL_SERVER"
Danach passten noch ein Paar Kleinigkeiten nicht (die Versionen der DLLs waren unterschiedlich und wollten sich nicht miteinander vertragen, etc.) aber diese ließen sich schließlich auch beheben. Und jetzt läuft es!

Schöne Grüße,
Notloesung
Antworten