Aujourd'hui, parlons de quelques méthodes de l'objet Recordset.
1. La méthode AddNew crée de nouveaux enregistrements pouvant mettre à jour l'objet Recordset.
recordset.AddNew FieldList, valeurs
Liste de champs Facultatif. Un nom unique, un ensemble de noms ou la position ordinale du champ dans le nouvel enregistrement.
Les valeurs sont facultatives. Un seul ou un ensemble de valeurs pour un champ dans le nouvel enregistrement. Si Fields est un tableau, Values doit également être un tableau avec le même nombre de membres, sinon une erreur se produira. L'ordre des noms de champs doit correspondre à l'ordre des valeurs de champ dans chaque tableau.
Nous sommes habituellement
rs.addnew
rs("xx")=xx
rs("xx")=xx
rs.mise à jour
Notez qu'en mode de mise à jour immédiate (le fournisseur écrit les modifications dans la source de données sous-jacente immédiatement lorsque la méthode Update est appelée), l'appel de la méthode AddNew sans paramètres définit la propriété EditMode sur adEditAdd. Le fournisseur met en cache localement toute modification apportée aux valeurs des champs. Appelez la méthode Update pour transmettre le nouvel enregistrement à la base de données et réinitialiser la propriété EditMode sur adEditNone. Si les paramètres Fields et Values sont transmis, ADO transmet immédiatement le nouvel enregistrement à la base de données (sans appeler Update) et la valeur de la propriété EditMode ne change pas (adEditNone).
Vous vous demandez peut-être quelle est la différence entre l'utilisation de la méthode AddNew d'ADO dans ASP et l'utilisation directe de l'instruction "Insérer dans..." ? Quelle est la meilleure solution ? Réponse : La méthode AddNew d'ADO encapsule uniquement l'instruction "Insérer dans". Par conséquent, lorsque vous travaillez sur une grande quantité de données, l'utilisation directe d'instructions SQL accélère considérablement l'accès aux données car elle réduit le temps de "traduction" d'ADO.
2. La méthode Supprimer supprime l'enregistrement ou le groupe d'enregistrements actuel.
recordset.Delete AffectRecords
AffectRecords La valeur AffectEnum détermine le nombre d'enregistrements affectés par la méthode Supprimer. Cette valeur peut être l'une des constantes suivantes.
AdAffectCurrent par défaut. Supprimez uniquement l'enregistrement actuel.
AdAffectGroup supprime les enregistrements qui répondent au paramètre de propriété de filtre actuel. Pour utiliser cette option, la propriété Filter doit être définie sur l'une des constantes prédéfinies valides.
adAffectAll supprime tous les enregistrements.
adAffectAllChapters Supprime tous les enregistrements du sous-ensemble.
L'utilisation du mode de mise à jour immédiate entraînera une suppression immédiate dans la base de données, sinon l'enregistrement sera marqué pour suppression du cache et la suppression réelle se produira lorsque la méthode Update sera appelée.
3. La méthode Update enregistre toutes les modifications apportées à l'enregistrement actuel de l'objet Recordset.
recordset.Update Champs, valeurs
Les champs sont facultatifs. Type de variante, représentant un nom unique ; ou tableau de type variante, représentant la position du nom et du numéro de série du champ (un ou plusieurs) qui doit être modifié.
Les valeurs sont facultatives. Type de variante, représentant une valeur unique ; ou tableau de type variante, représentant les valeurs de champ (simples ou multiples) dans le nouvel enregistrement.
Si vous souhaitez annuler toute modification apportée à l'enregistrement actuel ou supprimer les enregistrements nouvellement ajoutés, vous devez appeler la méthode CancelUpdate.
4. Méthode CancelUpdate
recordset.CancelUpdate
Utilisez la méthode CancelUpdate pour annuler toute modification apportée à l’enregistrement actuel ou supprimer les enregistrements nouvellement ajoutés. Les modifications apportées à l'enregistrement actuel ou aux nouveaux enregistrements ne peuvent pas être annulées après l'appel de la méthode Update. Si un nouvel enregistrement est ajouté lors de l'appel de la méthode CancelUpdate, l'enregistrement actuel avant l'appel de AddNew redeviendra l'enregistrement actuel. Si l'enregistrement actuel n'a pas été modifié ou qu'un nouvel enregistrement a été ajouté, l'appel de la méthode CancelUpdate générera une erreur.
5. La méthode Find recherche dans le Recordset les enregistrements qui répondent aux critères spécifiés. Si les critères sont remplis, la position du jeu d'enregistrements est définie sur l'enregistrement trouvé, sinon la position est définie à la fin du jeu d'enregistrements.
Rechercher (critères, SkipRows, searchDirection, start)
critères Une chaîne contenant des instructions qui spécifient les noms de colonnes, les opérateurs de comparaison et les valeurs pour la recherche.
SkipRows Valeur entière longue et facultative, dont la valeur par défaut est zéro, qui spécifie le décalage de la ligne actuelle ou le signet de début pour lancer la recherche.
searchDirection Valeur SearchDirectionEnum facultative qui spécifie si la recherche doit commencer à la ligne actuelle ou à la prochaine ligne valide. Sa valeur peut être adSearchForward ou
adSearchBackward. Le fait que la recherche se termine au début ou à la fin du jeu d'enregistrements est déterminé par la valeur searchDirection.
start Facultatif, variante de signet, utilisé comme position de départ de la recherche.
critères "Opérateur de comparaison" peut être ">" (supérieur à), "<" (inférieur à), "=" (égal à), ">=" (supérieur ou égal à), "<=" (inférieur à ou égal à), " <>"
(différent de) ou "like" (correspondance de modèle). Les valeurs des critères peuvent être des chaînes, des nombres à virgule flottante ou des dates. Les valeurs de chaîne sont délimitées par des guillemets simples (par exemple "state = 'WA'").
Les valeurs de date sont délimitées par "#" (symboles numériques) (par exemple "start_date > #7/22/97#").
Il convient de noter que find ne prend pas en charge plusieurs champs. Mais cela peut être réalisé en utilisant des filtres. "name='abc'" AND "city='sh'" n'est pas autorisé
6. La méthode Move déplace la position de l'enregistrement actuel dans l'objet Recordset
recordset.Déplacer NumRecords, Démarrer
NumRecords Expression entière longue signée qui spécifie le nombre d'enregistrements à déplacer depuis la position actuelle de l'enregistrement.
Début facultatif, de type chaîne ou variante, utilisé pour calculer les signets. Peut également être l'une des valeurs suivantes :
AdBookmarkCurrent par défaut. Commencez à partir de l'enregistrement actuel.
AdBookmarkFirst commence par le premier enregistrement.
AdBookmarkLast démarre à partir du dernier enregistrement.
Les choses à noter sont :
(1) Si le paramètre NumRecords est supérieur à zéro, la position actuelle de l'enregistrement avancera (vers la fin de l'ensemble d'enregistrements). Si NumRecords est inférieur à zéro, la position actuelle de l'enregistrement est déplacée vers l'arrière (vers le début du jeu d'enregistrements).
(2) L'appel de la méthode Move à partir d'un objet Recordset vide générera une erreur.
(3) Si l'appel Move déplace la position de l'enregistrement actuel avant le premier enregistrement, ADO placera l'enregistrement actuel avant le premier enregistrement du jeu d'enregistrements (BOF est True). Tenter de revenir en arrière alors que la propriété BOF est déjà True générera une erreur ; si l'appel Move déplace la position de l'enregistrement actuel après l'enregistrement de fin, ADO place l'enregistrement actuel après l'enregistrement de fin du jeu d'enregistrements (EOF est True). Tenter d'avancer alors que l'attribut EOF est déjà True générera une erreur.
7. Les méthodes MoveFirst, MoveLast, MoveNext et MovePrevious se déplacent vers le premier, le dernier, le suivant ou le précédent enregistrement de l'objet Recordset spécifié et font de l'enregistrement l'enregistrement actuel.
jeu d'enregistrements.{MoveFirst | MoveLast | MoveNext |
Les choses à noter sont :
(1) Utilisez la méthode MoveNext pour avancer l'enregistrement actuel d'un enregistrement (vers le bas du Recordset). Si le dernier enregistrement est l'enregistrement actuel et que la méthode MoveNext est appelée, ADO définit l'enregistrement actuel après l'enregistrement final du Recordset (EOF est True). Tenter d'avancer alors que l'attribut EOF est déjà True générera une erreur.
(2) Utilisez la méthode MovePrevious pour déplacer la position d'enregistrement actuelle vers l'arrière d'un enregistrement (vers le haut de l'ensemble d'enregistrements). L'objet Recordset doit prendre en charge le mouvement du curseur vers l'arrière ; sinon l'appel de méthode générera une erreur. Si le premier enregistrement est l'enregistrement actuel et que la méthode MovePrevious est appelée, ADO définit l'enregistrement actuel avant le premier enregistrement du Recordset (BOF est True). Lorsque l'attribut BOF est True, un retour en arrière générera une erreur.
8. La méthode Clone crée un objet Recordset en double identique à l'objet Recordset existant. Spécifiez éventuellement que le réplica est en lecture seule.
Définir rstDuplicate = rstOriginal.Clone
Variable d'objet rstDuplicate qui identifie l'objet Recordset en double en cours de création.
La variable d'objet rstOriginal identifie l'objet Recordset à copier.
Utilisez la méthode Clone pour créer plusieurs copies d'un objet Recordset, ce qui est utile si vous souhaitez conserver plusieurs enregistrements actuels dans un groupe d'enregistrements donné. L'utilisation de la méthode Clone est bien plus efficace que la création et l'ouverture d'un nouvel objet Recordset avec la même définition que la définition initiale.
C'est à dire
rs.open exec, conn, 1,1
rs2.open exec, conn, 1,1
Il faudrait le réécrire comme ça
rs.open exec, conn, 1,1
rs2=rs.clone
doit être noté que :
(1) L'enregistrement actuel de la copie nouvellement créée sera défini comme premier enregistrement.
(2) La fermeture du Recordset d'origine ne ferme pas sa copie, et la fermeture d'une copie ne fermera pas le Recordset d'origine ou toute autre copie.
9. La méthode Close ferme l'objet ouvert et tous les objets associés.
objet.Fermer
Les choses à noter sont :
(1) Utilisez la méthode Close pour fermer l'objet Recordset afin de libérer toutes les ressources système associées. La fermeture d'un objet ne le supprime pas de la mémoire ; vous pouvez modifier ses paramètres de propriété et
le rouvrir ultérieurement. Pour supprimer complètement l'objet de la mémoire, définissez la variable objet sur Nothing.
(2) Si vous effectuez une modification en mode de mise à jour immédiate, l'appel de la méthode Close générera une erreur et vous devez d'abord appeler la méthode Update ou CancelUpdate.
10. Méthode ouverte, pourquoi disons-nous cela en dernier ? Parce que les méthodes d'attributs précédentes ne sont pas claires, nous ne comprendrons pas le paramètre CursorType.
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Les objets Recordset peuvent se connecter aux objets Command via la propriété Source. Le paramètre Source peut être un nom d'objet Command, une commande SQL, un nom de table de données spécifié ou une procédure stockée. Si ce paramètre est omis, le système utilise la propriété Source de l'objet Recordset.
ActiveConnection
Recordset peuvent se connecter aux objets Connection via la propriété ActiveConnection. L'ActiveConnection ici peut être un objet Connection ou une chaîne de paramètres de chaîne contenant des informations de connexion
à la base de données
(ConnectionString).CursorType
Le paramètre CursorType de la méthode Open de l'objet Recordset indique le type de curseur avec lequel les données seront démarrées, notamment adOpenForwardOnly, adOpenKeyset, adOpenDynamic et ad
OpenStatic, qui sont décrits comme suit :
---------- ------- ----------------------------------------------- -----
Description
de la valeur constante constante-
--------------------------------------------------- ----------
adOpenForwardOnly 0 Valeur par défaut, démarre un curseur qui ne peut avancer que (Avant uniquement).
adOpenKeyset 1 démarre un curseur de type Keyset.
adOpenDynamic 2 démarre un curseur de type dynamique.
adOpenStatic 3 démarre un curseur de type statique.
-------------------------------------------------- -----------
Les types de curseur ci-dessus affecteront directement toutes les propriétés et méthodes de l'objet Recordset. La liste suivante explique les différences entre eux.
Propriétés du jeu d'enregistrements adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
AbsolutePage Non pris en charge Non pris en charge Lisible et inscriptible Lisible et inscriptible
AbsolutePosition Non pris en charge Non pris en charge Lisible et inscriptible Lisible et inscriptible
BOF Lecture seule Lecture seule Lecture seule
CursorType Lecture-écriture Lecture-écriture Lecture-écriture Lecture-écriture
EOF Lecture seule Lecture -only Lecture seule
Filtre Lecture et écriture Lecture et écriture Lecture et écriture Lecture et écriture
LockType Lecture et écriture Lecture et écriture Lecture et écriture Lecture et écriture
PageCount Non pris en charge Non pris en charge Lecture seule Lecture seule
PageSize Lecture et écriture Lecture et écriture Lecture et écriture Lecture Write
RecordCount Non pris en charge Non pris en charge Lecture seule Lecture seule
AddNew Pris
encharge Pris en charge Pris en charge Pris en charge CancelBatch Pris en charge Pris en charge Pris en charge Pris en charge CancelUpdate Pris en charge Pris en charge Pris en charge Pris en charge Fermer Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge Supprimer Pris en
charge Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
Pris
en charge Déplacer
Non pris en charge Pris en charge Pris en charge Prise en charge Prise en charge
MoveFirst Prise en
charge Prise en charge Prise en charge Prise en charge MoveLast Non prise en charge Prise en charge Prise en charge Prise en charge Prise en charge
MoveNext Prise en charge Prise en charge Prise en charge Prise en
charge MovePrevious Non prise en charge Prise en charge Prise en
charge Prise en charge Open Prise en charge Prise en charge Prise en charge
Mise à jour Prise en charge Prise en charge Prise en charge Prise en charge
UpdateBatch Prise en charge Prise en charge Prise en
charge ------ ---------------------- ---------------------------- ---------
Le paramètre LockType de la méthode Open de l'objet Recordset indique que le type Lock Si ce paramètre est omis, le système utilisera la propriété LockType de l'objet Recordset comme valeur par défaut. Les paramètres LockType incluent adLockReadOnly, adLockPrssimistic, adLockOptimistic et adLockBatchOptimistic, etc., qui sont décrits comme suit :
Description de la valeur constante
--------------------------- ------ --------------------------------
adLockReadOnly 1 Valeur par défaut, l'objet Recordset est démarré en lecture -mode uniquement et ne peut pas exécuter les méthodes AddNew, Update et Delete
adLockPrssimistic 2 Lorsque la source de données est mise à jour, le système verrouille temporairement les actions des autres utilisateurs pour maintenir la cohérence des données.
adLockOptimistic 3 Lorsque la source de données est en cours de mise à jour, le système ne verrouillera pas les actions des autres utilisateurs et ces derniers pourront ajouter, supprimer et modifier des données.
adLockBatchOptimistic 4 Lorsque la source de données est mise à jour, les autres utilisateurs doivent remplacer l'attribut CursorLocation par adUdeClientBatch pour ajouter, supprimer ou modifier des données.
Les choses à noter sont :
Si la source de données ne renvoie aucun enregistrement, le fournisseur définit les propriétés BOF et EOF sur True et ne définit pas la position actuelle de l'enregistrement. Si le type de curseur le permet, de nouvelles données peuvent toujours être ajoutées à l'objet Recordset vide.