AW: RemObjects Data Abstract Feldnamen werde bei TDBEdit zur Auswahl nicht angeboten
10. Dez 2012, 14:36
*kopfkratz*Also, es ist schon ne ganze Weile her, dass ich den Wizzard eingesetzt habe, von daher weiß ich gerade nicht, was da alles so automatisch gesetzt wird...
Bei mir werden beim Login die ConnectionNames als Parameter mit übergeben, da sich ein User durchaus an unterschiedlichen Datenbanken anmelden können soll, z.B. per Auswahl aus einer Combobox im Logindialog des Clients. Diese Angaben werden dann in der Login-Methode auf dem Server in die Session geschrieben, wie in deinem Beispiel mit der UserID, also z.B. Session[sess_ISECONNECTIONNAME] = <als Parameter übergebener ConnectionName der Datenbank ISE> - natürlich erst, nachdem geprüft wurde, ob der User überhaupt auf die Connection zugreifen darf... sess_ISECONNECTIONNAME ist als eine Konstante im Server definiert/hinterlegt. Den entsprechenden Wert lese ich wie gezeigt in BeforeAcquireConnection aus - dann paßt das auch mit der Connection, wenn sich die Bedingungen ändern (Testserver, lokaler Server, Produktionsserver - alles unterschiedliche Connections).
Du solltest auf jeden Fall von vornherein den Wert für RequireSession wieder in allen Services ausser dem LoginServe auf True stellen, um Sicherheit im System zu haben - später vergißt man es nur (ich zumindest).
Die Verwendung der TDADesigntimeCall ist denkbar einfach, aber hilfreich in Verbindung mit session-gesicherten Servern:
- Falls noch nicht vorhanden: Eine TRORemoteService-Komponente für den Login-Service auf das Client-Datenmodul ziehen und mit Channel und Message-Komponenten verbinden. Danach den Servicenamen auf den LoginService setzen
- TDADesigntimeCall-Komponente auf das Datenmodule ziehen und mit der LoginService-TRORemoteService-Komponente verbinden
- In der Komponente dann das Property MethodName auf die Login-Methode, die du verwenden möchtest/mußt, stellen
- In der Auflistung Params werden dann die Parameter der Login-Methode gezeigt, die du dann mit Werten vorbelegen kannst, also UserName und Spaßwort, vielleicht auch die ConnectionNames usw., welche du während der Entwicklung verwenden möchtest.
Fertig.
Wenn du dann auf die Komponente (bei laufendem Server, natürlich) doppelklickst oder erst per rechter Maustaste das Kontextmenü aurufst und da MakeCall anklickst, meldet sich die Komponente mit den eingegebenen Daten beim Server an und stellt im Erfolgsfall die Informationen durch ein bisserl Magic im Hintergrund allen anderen RODA-Komponenten zur Verfügung - solange, bis der Server neu gestartet wird, dann muss der Call erneut ausgeführt werden. Ist als eine echte Arbeitserleichterung gedacht, sonst kommt der Login-Dialog alle naslang hoch. Übrigens: Wenn beim Ausführen des Calls trotzdem der Login-Dialog angezeigt wird, ist das ein untrügliches Zeichen dafür, dass mit deinen hinterlegten Daten was nicht stimmt - das Login ist dann fehlgeschlagen.
Udo Treichel
|