Page 1 of 1

Unterschied zwischen RemoteDataBook reload und fetchAll

PostPosted: Fri Mar 04, 2016 5:03 pm
by jvxdev
Wo genau liegt der Unterschied zwischen einem reload und dem fetchAll, eines DataBooks?

Re: Unterschied zwischenRemoteDataBook reload und fetch

PostPosted: Fri Mar 04, 2016 5:19 pm
by Development@SIB
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.