[Gelöst] fehlende Einträge in Tabelle Session

3. Januar 2011 13:21

Hallo zusammen,

wir haben gerade ein riesen Problem. Unsere Projektwarteschlange startet nicht mehr. Das Problem ist, dass die entsprechenden Einträge in der Tabelle Session nicht mehr gefunden werden.
Code:
RecRef.OPEN(DATABASE::Session);
WHILE (i < RecRef.FIELDCOUNT) AND NOT found DO BEGIN
  i := i + 1;
  FieldRef := RecRef.FIELDINDEX(i);
  found := FieldRef.NAME = 'My Session';
END;
IF NOT found THEN
  EXIT;
FieldRef.SETRANGE(TRUE);


Beim oben gezeigten Code der CodeUnit 448 läuft die Schleife nur bis i=19, obwohl viel mehr Sessions aktiv sind.
Der Server, auf dem es laufen müsste wurde bereits neu gestartet. Wenn ich mir die Tabelle Session anschaue, sind auch alle Sitzungen enthalten.

Was läuft hier falsch?

Gruß
Alexander
Zuletzt geändert von zannaleer am 3. Januar 2011 15:18, insgesamt 1-mal geändert.

Re: fehlende Einträge in Tabelle Session

3. Januar 2011 14:00

Die WHILE-Schleife durchläuft die Felder des ersten Datensatzes der Tabelle Session , aber nicht die Session-Datensätze insgesamt. Mir ist nicht klar, was du damit erreichen möchtest.

Ferner: Wozu der Umweg über die RecordRefs/FieldRefs? Du kannst auch mit einer Recordvariable arbeiten.

Re: fehlende Einträge in Tabelle Session

3. Januar 2011 14:05

Die gezeigte Programmierung ist der Standard der CodeUnit 480.
Ich habe auch schon versucht, direkt auf die Tabelle Session zuzugreifen. Dort findet das System in der Programmierung den Satz mit meiner Anmeldung aber auch nicht.

Etwas merkwürdig finde ich noch zwei Dinge. Ich möchte die Projektwarteschlange auf einem lokalem Rechner starten, auf dem Navision installiert ist.
Dort funktioniert es nicht, starte ich die Projektwarteschlange auf unserem Citrix-Server läuft es.

Die zweite Merkwürdigkeit ist, dass das System in der Schleife bis 19 läuft und in der Datenbank genau 19 Anmeldungen sind, die noch aus dem letzten Jahr stammen.
Kann es damit zusammenhängen?

Gruß
Alexander

Re: fehlende Einträge in Tabelle Session

3. Januar 2011 14:16

zannaleer hat geschrieben:Ich habe auch schon versucht, direkt auf die Tabelle Session zuzugreifen. Dort findet das System in der Programmierung den Satz mit meiner Anmeldung aber auch nicht.

Bitte den Quelltext dazu zeigen, nicht dass nur ein Flüchtigkeitsfehler daran schuld war.

Etwas merkwürdig finde ich noch zwei Dinge. Ich möchte die Projektwarteschlange auf einem lokalem Rechner starten, auf dem Navision installiert ist.
Dort funktioniert es nicht, starte ich die Projektwarteschlange auf unserem Citrix-Server läuft es.

Projektwarteschlange starten heißt doch, den NAS zu starten? Bitte ggf. in unserem NAS-Forum ein separates Thema öffnen.

Die zweite Merkwürdigkeit ist, dass das System in der Schleife bis 19 läuft und in der Datenbank genau 19 Anmeldungen sind, die noch aus dem letzten Jahr stammen.
Kann es damit zusammenhängen?

Tabelle Session hat 21 Felder (grad nachgezählt).
"i" beginnt bei 0 zu zählen -> die WHILE-Schliefe zählt 20 Felder.
Für mich sieht das eher so aus, als hätte die 19 nichts mit den Datensätzen zu tun - auch wenn nach meiner Aufzählung noch ein Feld fehlt :shock:

Re: fehlende Einträge in Tabelle Session

3. Januar 2011 14:50

Seid ihr Euch sicher, dass das die richtige Baustelle ist?
Müsste nicht eher in der Funktion: HandleRequest nachgeschaut werden, ob da alles richtig läuft?
Schau mal bitte in der Funktion nach und prüfe, ob dort alles so läuft wie es soll und die Records richtig gefunden und verarbeitet werden.

Der gezeigte Codeschnipsel ist eine generische Antwort auf mögliche Änderungen der Tabelle Session in der Zukunft. Dort wird nach dem Feld "My Session" gesucht, und wenn dies gefunden wird, dann wird auf dieses Feld nen setrange(true) gesetzt.
In nichtgenerischer Programmierweise wäre das:
Session.reset;
Session.setrange("My Session", true);
IF Session.Findfirst then...

Re: fehlende Einträge in Tabelle Session

3. Januar 2011 14:58

Unser NSC hat das Problm gefunden.
Wir haben letzte Woche ein Navision Update von build 26084 auf 31781 durchgeführt.
Jetzt heißt das Feld in der Tabelle Session nicht mehr "My Session" sondern "Meine Session".

Wenn man die Stelle
Code:
found := FieldRef.NAME = 'My Session';
auf
Code:
found := FieldRef.NAME = 'Meine Session';
ändert funktioniert es wieder.

Merkwürdig finde ich allerdings noch, dass das Feld auf dem Cirtix-Server weiterhin "My Session" heißt.
Das verstehe ich nicht so ganz, weil die Navision clients auf den Citrix-Servern und die clients auf dem lokalen Rechner auf die gleiche Datenbank zugreifen.

Kann sich dieses Phänomen noch jemand erklären?

Gruß
Alexander

Re: fehlende Einträge in Tabelle Session

3. Januar 2011 15:15

zannaleer hat geschrieben:Das verstehe ich nicht so ganz, weil die Navision clients auf den Citrix-Servern und die clients auf dem lokalen Rechner auf die gleiche Datenbank zugreifen.

Kann sich dieses Phänomen noch jemand erklären?

Naja, die Tabelle Session ist halt keine echte Tabelle in einer Datenbank (und damit mit eindeutigen Feldnamen), sondern eine virtuelle Tabelle. Deshalb ist sie im Object Designer nicht zu finden.
Deren Aufbau und Inhalt wird vom Betriebssystem zur Laufzeit erstellt und wird dabei von den lokalen Ländereinstellungen beeinflusst.

Re: [Gelöst] fehlende Einträge in Tabelle Session

7. Januar 2011 10:39

Müsste das ganze dann nicht jetzt problematisch für Citrix sein, weil nun nur nach "Meine Session" gesucht wird und bei Citric "My Session" steht?

Re: [Gelöst] fehlende Einträge in Tabelle Session

7. Januar 2011 11:26

Theoretisch ja, praktisch nein, weil wir die Projektwarteschlange auf dem Citrix-Server nicht laufen lassen.