Beispiel für einen Gopher-Automatisierungsserver
Dieses Beispiel simuliert ein intelligentes Geschäftssuchobjekt, das einen Kunden findet, der in einer von vielen verschiedenen Datenbanken enthalten sein kann. Was tatsächlich erfolgt, ist, dass der Code im BeforeOpenTables-Ereignis der Datenumgebung ein Objekt erzeugt, das auf der Gopher-Klasse basiert und den Benutzer auffordert, eine Datenbank anzugeben, die verwendet werden soll. Der Code in der Gopher-Klasse öffnet die entsprechende Datenbank. Diese Strategie ermöglicht es Ihnen, Visual FoxPro in einem dreistufigen Modell zu verwenden, in dem die Benutzerdienste nicht so eng an die Datendienste gebunden sind, wie dies in vielen der derzeit verwendeten Client/Server-Umgebungen der Fall ist.
Während dieses Beispiel nur die Wahl zwischen den Visual FoxPro-Beispieldatenbanken TESTDATA und Tastrade ermöglicht, können Sie dieses grundlegende Verfahren verwenden, um ein intelligentes Geschäftssuchobjekt bereitzustellen, das weiß, wie und wo benötigte Datenbanken in einem unternehmensweiten Netzwerk gesucht werden müssen.
So öffnen Sie das Projekt für das Gopher-Beispiel
Geben Sie die folgenden Anweisungen in das Befehlsfenster ein:
MODIFY PROJECT (HOME(2) + 'servers\gopher\foxsrch')
So führen Sie das Gopher-Beispiel aus
Öffnen Sie das Projekt Foxsrch.pjx im Visual FoxPro-Ordner …\Samples\Servers\Gopher.
Wählen Sie Srchdata.prg im Projekt-Manager aus, und wählen Sie Ändern.
Ändern Sie die folgende Zeile so, dass FOXHOME so definiert ist, dass es Ihren Visual FoxPro-Beispielordner wiedergibt.
#DEFINE FOXHOME HOME(2)
Speichern und schließen Sie Srchdata.prg.
Klicken Sie im Projekt-Manager auf Erstellen.
Aktivierenen Sie Ausführbare Win32/COM-Server (EXE) im Dialogfeld Erstellungsoptionen, und klicken Sie auf OK, um Foxsearch.exe zu erzeugen. Der Server wird registriert, wenn Sie die ausführbare Datei erzeugen.
Führen Sie Wing1.scx im Visual FoxPro-Ordner …\Samples\Servers\Gopher aus.
Der folgende Code ist im BeforeOpenTable-Ereignis der Datenumgebung in Wing1.scx enthalten:
LOCAL oGopher,lUseRemote
THIS.AddObject('cursor1','cursor')
THIS.cursor1.Alias = 'employee'
lUseRemote=(MESSAGEBOX('Do you want to use Remote Data?',36) = 6)
oGopher=CreateObject('FoxSearch.Gopher')
oGopher.UpdateDE(THIS,m.lUseRemote)
RELEASE oGopher
Der folgende Code definiert die Gopher-Klasse. Die UpdateDE-Methode nimmt einen Objektverweis zu einer Datenumgebung und einen logischen Wert als Parameter. Basierend auf dem Wert des logischen Wertes legt die UpdateDE-Methode verschiedene CursorSource-Werte für einen Cursor in der Datenumgebung fest.
#DEFINE FOXHOME HOME(2)
DEFINE CLASS Gopher AS Custom OLEPUBLIC
oDERef = ''
PROCEDURE UpdateDE
PARAMETER oNewDE,lRemote
IF TYPE('oNewDE')#'O' OR ISNULL(m.oNewDE)
RETURN .F.
ENDIF
THIS.oDERef = m.oNewDE
IF !m.lRemote
* Use local data
THIS.oDERef.cursor1.database = FOXHOME + 'DATA\TESTDATA.DBC'
THIS.oDERef.cursor1.cursorsource = 'Employee'
ELSE
* Use remote data (simiulated)
THIS.oDERef.cursor1.database = FOXHOME + ; 'Tastrade\DATA\Tastrade.DBC'
THIS.oDERef.cursor1.cursorsource = 'Employee'
ENDIF
THIS.oDERef = ''
ENDPROC
ENDDEFINE