Aujourd'hui, parlons des propriétés de l'objet Recordset
1. Attribut CursorType
AdOpenForwardOnly : curseur avant uniquement, valeur par défaut. Identique à un curseur statique, sauf qu'il ne peut que faire défiler les enregistrements vers l'avant. Utilisez-le pour améliorer les performances lorsqu'un seul mouvement à sens unique dans le jeu d'enregistrements est requis. (Comme son nom l'indique, ce curseur ne peut qu'avancer. Cependant, en raison de ses fonctionnalités limitées, il est très efficace lorsqu'il est utilisé avec les ressources système.)
AdOpenKeyset : curseur de jeu de clés. Bien que les enregistrements supprimés par d'autres utilisateurs ne soient pas accessibles à partir de votre jeu d'enregistrements, les curseurs de jeu de touches sont similaires aux curseurs dynamiques, sauf que les enregistrements ajoutés par d'autres utilisateurs ne peuvent pas être affichés. Les données modifiées par d'autres utilisateurs sont toujours visibles. (Un curseur KeySet vous permet de voir les modifications apportées par d'autres utilisateurs depuis sa création, mais vous ne pouvez pas voir les enregistrements ajoutés ou supprimés par d'autres utilisateurs.)
AdOpenDynamic : curseur dynamique. Peut voir les ajouts, les modifications et les suppressions effectués par d'autres utilisateurs. Tous les types de déplacements au sein du jeu d'enregistrements sont autorisés, à l'exception des opérations de signet qui ne sont pas prises en charge par le fournisseur. (Ce type de curseur est puissant et consomme le plus de ressources système. Les curseurs dynamiques peuvent voir toutes les modifications apportées aux collections d'enregistrements qu'ils enregistrent. Les utilisateurs utilisant des curseurs dynamiques peuvent voir les modifications, ajouts et suppressions effectués par d'autres utilisateurs. Si les fournisseurs de données qui permettre à ce type de curseur de prendre en charge cette visibilité en récupérant les données de la source de données à intervalles réguliers nécessitera sans doute beaucoup de ressources.)
AdOpenStatic : curseur statique. Copie statique d'une collection d'enregistrements pouvant être utilisée pour rechercher des données ou générer des rapports. De plus, les ajouts, modifications ou suppressions effectués par d'autres utilisateurs ne sont pas visibles. (Un curseur de classe statique n'est qu'un instantané des données. Autrement dit, il ne peut pas voir les modifications apportées au RecordSet par d'autres utilisateurs depuis sa création. Avec ce type de curseur, vous pouvez naviguer vers l'avant et vers l'arrière. En raison de sa simplicité, Les besoins en ressources sont inférieurs à ceux de Dynamic !)
Remarque : Une fois le RecordSet ouvert, vous ne pouvez pas modifier la propriété CursorType. Cependant, si vous fermez d’abord le RecordSet, modifiez la propriété CursorType, puis rouvrez le RecordSet, vous pouvez toujours modifier efficacement le type du curseur !
2. Attribut LockType Dans toute application de base de données pouvant être modifiée par plusieurs utilisateurs en même temps, vous devez gérer la situation qui peut survenir lorsque plusieurs utilisateurs opèrent sur le même enregistrement en même temps. Lorsque cela se produit, l'intégrité des données est compromise car un utilisateur peut, sans le savoir, écraser les modifications apportées par quelqu'un d'autre lors de l'enregistrement des siennes. À ce moment-là, vous aurez l’impression de ne rien faire. Pour gérer cette situation. ADO vous permet de déterminer le type de contrôle d'événements simultanés lors de la mise à jour d'un objet RecordSet et comment verrouiller les enregistrements par un utilisateur pendant qu'il est en train de modifier. Ceci est déterminé par l'attribut LockType. Cet attribut a quatre valeurs :
adLockReadonly : valeur par défaut, en lecture seule. Les données ne peuvent pas être modifiées. (Il s'agit de la valeur par défaut de RecordSet. Si vous définissez la méthode de verrouillage sur cette valeur, vous ne pourrez pas mettre à jour le Recordset.)
adLockPessimistic : verrouillage conservateur des enregistrements (entrée par entrée). Le fournisseur effectue les actions nécessaires pour garantir la réussite de la modification de l'enregistrement, généralement en verrouillant immédiatement l'enregistrement dans la source de données lors de la modification. (Si ce type de verrouillage est défini, l'enregistrement est verrouillé et n'est accessible qu'aux utilisateurs qui modifient entre le moment où la modification est lancée et le moment où la mise à jour de l'enregistrement est soumise au fournisseur de données !)
adLockOptimistic : verrouillage d'enregistrement ouvert (enregistrement par enregistrement). Le fournisseur utilise le verrouillage ouvert et verrouille les enregistrements uniquement lorsque la méthode Update est appelée. (Les enregistrements ne sont verrouillés qu'au moment où les données sont soumises au fournisseur de données.)
adlockBatchOptimistic : mise à jour par lots ouverte. Utilisé pour le mode de mise à jour par lots par opposition au mode de mise à jour immédiate. (Un RecordSet défini sur ce type de mode de verrouillage sera appelé mode de mise à jour par lots du RecordSet. Il peut accélérer la vitesse de mise à jour du RecordSet pour modifier les données, mais comme plusieurs enregistrements sont mis à jour en même temps, il sera également aggraver les problèmes liés aux accès concurrents !)
3 ,Propriété AbsolutePage
L'attribut AbsolutePage définit le numéro de page de la page où se trouve l'enregistrement actuel ; utilisez l'attribut PageSize pour diviser l'objet Recordset en pages logiques. Le nombre d'enregistrements sur chaque page est PageSize (sauf que la dernière page peut en avoir moins que PageSize. nombre d'enregistrements). Il convient de noter ici que tous les fournisseurs de données ne prennent pas en charge cet attribut, utilisez-le donc avec prudence.
Identique à la propriété AbsolutePosition, la propriété AbsolutePage commence par 1. Si l'enregistrement actuel est la première ligne de Recordset, AbsolutePage vaut 1. Vous pouvez définir la propriété AbsolutePage pour qu'elle se déplace vers la première ligne d'enregistrements sur une page spécifiée.
4. Attribut AbsolutePosition Si vous devez déterminer la position de l'indicateur actuel dans le RecordSet, vous pouvez utiliser l'attribut AbsolutePosition.
La valeur de l'attribut AbsolutePosition est la position de l'indicateur actuel par rapport à la première transaction, à partir de 1, c'est-à-dire que la position absolue de la première transaction est 1.
Notez que lors de l’accès à un RecordSet, rien ne garantit que le RecordSet apparaîtra dans le même ordre à chaque fois.
Pour activer AbsolutePosition, vous devez d'abord le configurer pour utiliser le curseur client (pointeur) : rs.CursorLocation=3
5. Attribut PageCount Utilisez l'attribut PageCount pour déterminer le nombre de « pages » de données incluses par l'objet Recordset. La « page » ici est une collection d'enregistrements de données avec une taille égale au paramètre de la propriété PageSize Même si le nombre d'enregistrements sur la dernière page est inférieur à la valeur de PageSize, la dernière page est également considérée comme une page de. Nombre de pages. Il convient de noter que tous les fournisseurs de données ne prennent pas en charge cet attribut.
6. Attribut PageSize
L'attribut PageSize est la clé pour déterminer comment afficher les pages lorsque ADO accède à la base de données. Vous pouvez l'utiliser pour déterminer combien d'enregistrements forment une « page » logique. Définit et crée une taille de page qui permet de passer au premier enregistrement d'une autre page logique à l'aide de la propriété AbsolutePage. La propriété PageSize peut être définie à tout moment.
7. Attribut RecordCount C'est également un attribut très couramment utilisé et important. Nous utilisons souvent l'attribut RecordCount pour savoir combien d'enregistrements contient un objet Recordset. Utilisez la propriété RecordCount pour déterminer le nombre d'enregistrements dans un objet Recordset. Cette propriété renvoie –1 lorsque ADO ne peut pas déterminer le nombre d'enregistrements ou si le fournisseur ou le type de curseur ne prend pas en charge RecordCount. La lecture de la propriété RecordCount sur un Recordset fermé générera une erreur. Le type de curseur de l'objet Recordset détermine si le nombre d'enregistrements peut être déterminé. La propriété RecordCount renvoie -1 pour les curseurs avant uniquement, le nombre réel pour les curseurs statiques ou à jeu de clés et -1 ou le nombre réel pour les curseurs dynamiques en fonction de la source de données.
8. Attributs BOF et EOF. Habituellement, nous écrivons du code dans le programme ASP pour vérifier les attributs BOF et EOF, afin de connaître l'emplacement du RecordSet actuellement pointé par l'indicateur. En utilisant les attributs BOF et EOF, nous pouvons savoir si un. L'objet Recordset contient des enregistrements ou savoir si la ligne d'enregistrement déplacée a dépassé la plage de l'objet Recordset.
Si la position de l'enregistrement actuel est avant la première ligne d'un objet Recordset, la propriété BOF renvoie vrai, sinon elle renvoie faux.
Si la position de l'enregistrement actuel se situe après la dernière ligne d'un objet Recordset, la propriété EOF renvoie vrai, sinon elle renvoie faux.
(BOF et EOF sont tous deux True, ce qui indique qu'il n'y a aucun enregistrement dans le RecordSet.)
9. L'attribut Filter spécifie les conditions de filtrage des données dans le Recordset. Utilisez l'attribut Filter pour bloquer de manière sélective les enregistrements dans l'objet Recordset filtré. deviendra le curseur actuel.
Cela affectera d'autres propriétés basées sur la valeur de retour actuelle du curseur, telles que AbsolutePosition, AbsolutePage, RecordCount et PageCount, car la définition de la propriété Filter sur une valeur
spécifique
déplace l'enregistrement actuel vers le premier enregistrement qui satisfait la nouvelle valeur.
Je pense que cet attribut est très utile. Parfois, après avoir ouvert le Recordset et formulé certains jugements, nous souhaitons filtrer les enregistrements, c'est-à-dire réajuster l'instruction SQL. Devons-nous fermer le Recordset et l'ouvrir avec une nouvelle instruction SQL ? Non, nous utilisons l'attribut Filter pour filtrer, par exemple
rs.open exec, conn, 1,1
si .... alors rs.filter="name='xxx'"
au lieu de
rs.open exec, conn, 1,1
si... alors
rs.fermer
exec=exec&" où nom='xxx'"
rs.open exec, conn, 1,1
finir si
En fait, Filter doit être utilisé dans de nombreux endroits. Il sera mentionné dans les futures compétences ASP. Vous pouvez également y penser.
Demain, nous continuerons à parler des méthodes de l'objet Recordset.