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:
procedure TIWForm1.IWDBGrid1Columns1Click(ASender: TObject;
const AValue: string);
begin
WebApplication.ShowMessage(IntToStr(qryBuch.RecordCount));
end;
In der usersession aufgerufen mit qryBuch in der Usersession gibt es eine Schutzverletzung beim Zugriff auf qryBuch:
Delphi-Quellcode:
Procedure TIWUserSession.showRecCount;
begin
WebApplication.ShowMessage(IntToStr(qryBuch.RecordCount));
end;
Wo liegt da mein Denkfehler??