![]() |
korrekte Verwendung der UserSession bei Intraweb-Projekten?
Hallo zusammen,
ich habe glaube ich ein Verständnisproblem. Ich habe ein Intraweb-Projekt erstellt und es wird dabei ja automatisch eine UserSession erzeugt. So wie ich die Doku verstehe, stellt diese das Datenmodell bereit und trennt bei mehreren aktiven Benutzern die Sessions voneinander, so dass sich die Anwender nicht in die Quere kommen. Daher habe ich - wie ich es sonst auch bei "normalen" Anwendungen mache - meine Datenbankobjekte (TQuery) in der Usersession platziert. Im Hauptfenster liegen datensensitive Controls (z.B. DBGrid) und eine Datasource in der usersession stellt die Verbindung her. So weit so gut, das funktioniert auch alles noch. Wenn ich aber z.B. die Anzahl der Datensätze im Hauptfenster anzeigen will und dazu in der Usersession eine Methode showRecCount() schreibe (im Public-Zweig der Klasse), die dann aus dem Hauptfenster aufgerufen wird, dann bekomme ich beim Zugriff auf die recordCount-Methode der TQuery eine Zugriffsverletzung. Lege ich die TQuery in das Hauptfenster und greife dort auf Recordcount zu, geht das. mal mit einem Quelltextbeispiel: Im Hauptfenster aufgerufen mit qryBuch im Hauptfenster geht es:
Delphi-Quellcode:
In der usersession aufgerufen mit qryBuch in der Usersession gibt es eine Schutzverletzung beim Zugriff auf qryBuch:
procedure TIWForm1.IWDBGrid1Columns1Click(ASender: TObject;
const AValue: string); begin WebApplication.ShowMessage(IntToStr(qryBuch.RecordCount)); end;
Delphi-Quellcode:
Procedure TIWUserSession.showRecCount;
begin WebApplication.ShowMessage(IntToStr(qryBuch.RecordCount)); end; Wo liegt da mein Denkfehler?? |
Re: korrekte Verwendung der UserSession bei Intraweb-Projekt
Es kann sein, das in der usersession die Variable WebApplication = nil ist? also nicht zugewissen?
oder die Variable qryBuch (also das TQuery) = nil ist? Am Besten du setzt mal als test
Delphi-Quellcode:
Das wäre meine erste Überlegung. Wenn net versuch mal das
If Assigned(WebApplication) then
//und/oder If Assigned(qryBuch) then
Delphi-Quellcode:
procedure TIWForm1.IWDBGrid1Columns1Click(ASender: TObject;
const AValue: string); begin WebApplication.ShowMessage(IntToStr(IWUserSession.qryBuch.RecordCount)); //Fals das usersession- Modul so heist end; |
Re: korrekte Verwendung der UserSession bei Intraweb-Projekt
Hallo NickelM,
schon If Assigned(WebApplication) führt zur Schutzverletzung. Aber vielleicht habe ich das Ganze ja auch falsch verstanden und das TWIUserSession-Objekt ist gar nicht dazu geeignet, die Datenbank-Komponenten aufzunehmen??? Der Zugriff auf RecordCount ist ja nur ein Beispiel, eigentlich soll die gesamte Steuerung (Blättern durch die Datenmenge, Sortierung, Filter setzen (neues SQL) etc.) als Methoden des TIWUserSession-Objektes erstellt werden. In der IntraWeb - Beispiel-Anwendung FishFactDM wird das mit einem ClientDataSet gemacht und funktioniert auch, darum wundert es mich schon, warum es mit einer TQuery nicht auch gehen soll. Wenn's aber schon bei so einfachen Dingen wie dem Zugriff auf die Query scheitert :-(. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz