Unterschied zwischen RemoteDataBook reload und fetchAll

Allgemeine Fragen zur Entwicklung von und mit JVx.

Unterschied zwischen RemoteDataBook reload und fetchAll

Postby jvxdev » Fri Mar 04, 2016 5:03 pm

Wo genau liegt der Unterschied zwischen einem reload und dem fetchAll, eines DataBooks?
jvxdev
 
Posts: 19
Joined: Fri Mar 04, 2016 12:40 pm

Re: Unterschied zwischenRemoteDataBook reload und fetch

Postby Development@SIB » Fri Mar 04, 2016 5:19 pm

Details zu saveSelectedRow

Die Methode saveSelectedRow() speichert die aktuell selektierte Zeile über die verknüpfte Storage am Server. Dabei wird der aktuelle Zustand der Zeile automatisch aus der Datenbank refetched, und dem Client übergeben. Dieser kann die Änderungen dann auch gleich für die Anzeige verwenden.

Ausnahme: Es ist technisch nicht möglich die Werte zu refetchen.

Das kann z.B. passieren, wenn
  • in eine View gespeichert wird, die returning clause von Oracle nicht erlaubt ist
  • kein eindeutiger Primärschlüssel gesetzt oder erkannt wurde

Die Konfiguration der Server-side Storage muss immer korrekt sein, um Fehler zu vermeiden.


Details zu fetchAll

Das DataBook arbeitet standardmässig mit Row Level Fetch-On-Demand. Dadurch werden nur Zeilen vom Server gefetched, die auch wirklich benötigt werden. Also beispielsweise wenn die Daten in einer Tabelle angezeigt, oder in einer Prozedure mit getDataRow(zeile#) oder mit setSelectedRow(zeile#), direkt, angesprochen werden.

Ob alle Daten gefetched wunden/sind, kann mit der Methode isAllFetched() geprüft werden. Die Methode fetchAll() kann in eigenen Prozeduren aufgerufen werden, um sicherzustellen das alle Zeilen geladen wurden. Das kann z.B. in einer for Scheife verwendet werden, um die Zeilen zu iterieren.


Details zu reload

Mit reload() werden alle Daten die vom DataBook bereits geladen wurden, vollständig verworfen.

Somit müssen alle Daten, erneut vom Server geladen werden. Natürlich wiederum nur die Daten die auch tatsächlich benötigt werden.

Der SelectionMode (FIRST_ROW, DESELECTED, CURRENT_ROW (Standardwert)) bestimmt, ob die ein Datensatz anhand des Primärschlüsseld erneut selektiert werden soll, oder, ob kein oder immer der erste Datensatz selektiert werden soll.
User avatar
Development@SIB
 
Posts: 311
Joined: Mon Sep 28, 2009 1:54 pm


Return to Entwicklung