[XMLRAD]
Bonjour,
Est-il possible de récuperer la valeur du RecordCount après avoir executé une requête, tout en affichant les enregistrements par paquets de 10 ?
[XMLRAD]
Bonjour,
Est-il possible de récuperer la valeur du RecordCount après avoir executé une requête, tout en affichant les enregistrements par paquets de 10 ?
A mon avis, tu dois ajouter une clause count(*) as champ_toto dans ta requête Select (la requête concernée du XMLGram devrait je dire, afin de pouvoir inclure cette information dans le context.
Sylvain
Comme le dit Sylvain, il vaut mieux utiliser une requête slect count(*) pour récupérér le nombre d'enregistrement. Meme en Delphi il n'est pas conseillé d'utilisé cette propriété.
la requête tu peux effectivement la faire dans le XMLGram et réupérer la valeur dans le Context
Exemple:
SELECT Count(*) AS NbRecord
FROM MyTable
et pour récupérer la valeur dans l'événement AfterXMLInstruction:
RecordCount := StrToInt(Context.GetValue('NbREcord"));
Par rapport au travail des données renvoyés par des requetes :
En y regardant de plus près, il s'avère que les données génerées par le serveur lors de commandes sql sont des datasets encapsulés dans des objets propiétaires qui ne permettent pas :
- d'obtenir le recordcount
de reculer le curseur
de faire un first
C'est surement dû au mode déconnecté.
Mais il est possible de modifier le code source
pour y integrer ces fonctionnalités.
J'ai fait un essai de modif mais malheureusement,
ca ne marche pas systèmatiquement...
( options de curseurs, protection des accès, ...)
L'idée autour de cette problèmatique serait d'avoir la possibilité de
conserver un curseur sur les données du serveur, attribué à un
client et de pouvoir déplacer ce curseur librement.
Parce que d'après ce que j'ai compris du fonctionnement,
lorsque que l'on récupère un bloc de ligne du style
: de 10 à 21, le curseur est replacé au début des données (réinitialisation), fait 10 next, puis renvoi les résultats.
le top serait :
D'éviter les 10 next et de pouvoir partager ces données entre plusieurs users (comme un cache).
Je sais pas si tout cela est clair,![]()
Effectivement du au mode déconnecté, on est obligé de fetcher les enregistrement que l'on a besoin avant de refermer le curseur.
je vous déconseille de modifier le source pour rajoutés ces fonctionnalités qui ne sont pas nécessaires.
Comme on est en mode déconnecté on ne peut garder un curseur ouvert sur le SGBD, de plus ca utiliserai des ressources qui ne seraitpas dispo pour d'autres utilisateurs et ca reduit d'autant la monté en charge de l'application. De plus si on se redéplace avec le curseur sur le SGBD refetch a chaque fois les enregistrements ce n'est pas mieux que de relancer une requête....
Concernant le comportement du 10emem rengistrements au 21 c'est effectivement ca qui se passe, mais la requête est re lancé à chaque fois.
Si c'est données ne sont pas modifiés (table de références par exmeple) vous pouvez utiliser l'instuction Cache qui permet de garder en mémoire sur le serveur les enregistrements qui onté été récupérés lors de la première requête.
Partager