![]() |
Introduction aux ensembles record |
|
Un objet d'ensemble record |
|
Introduction |
|
Après avoir créé une table, vous pouvez la remplir de disques comme nous avons fait dans les leçons précédentes. Voici un exemple :
|
|
Nous avons également vu dans les leçons précédentes que vous pourriez créer une question qui choisit quelques disques à partir d'une table. Les disques qu'une table ou une question tient désigné sous le nom d'un ensemble de disques ou d'un ensemble record. Pour considérer tous comme entité, le Microsoft Access fournit un objet appelé un Recordset. La majeure partie du temps, vous employez un objet de Recordset sans se rendre compte parce que le moteur de base de données manipule toutes les ou la plupart routines nécessaires dans les coulisses. Dans quelques autres cas, vous devez créer ou lancer un objet de Recordset afin de l'employer. Pour faire ceci, vous avez de diverses solutions de rechange. En fait, la manière que vous créez un objet de Recordset peut dépendre de la bibliothèque vous employez lorsque vous devez « saisir » l'ensemble de disques.
Normalement, vous créez premièrement un ensemble record en peuplant une table avec les valeurs désirées. Sans compter que cette technique, nous avons mentionné dans la première leçon qu'il y avait de diverses bibliothèques que vous pouvez employer pour créer votre base de données. Chacune de ces bibliothèques fournit des moyens de créer un ensemble record. Pour être un lotisseur efficace de base de données, vous devriez savoir comment et quand créer un Recordset objectez. Dans le sens strict, vous ne pouvez pas visuellement créer un Recordset dans le Microsoft Access, c'est-à-dire, de la fenêtre de base de données. Au lieu de cela vous devez écrire le code. Pour créer programmatically un objet de Recordset en utilisant la bibliothèque des programmes résultants de Microsoft Access, vous pouvez commencer par déclarer une variable de type Recordset. Voici un exemple : Private Sub cmdRecordset_Click()
' Create a recordset
Dim rstVideos As Recordset
End Sub
C'est essentiellement la même technique que vous employez dans DAO sauf que vous devez déclarer la variable en tant qu'étant du type DAO.Recordset. Pour créer un ensemble record en utilisant l'AGITATION, commencer par déclarer une variable du type ADODB.Recordset. Voici un exemple : Private Sub cmdSetOfRecords_Click()
Dim rstVideos As ADODB.Recordset
End Sub
Avant d'employer l'ensemble record, employer le nouvel opérateur pour assigner la mémoire pour elle. Voici un exemple: Private Sub cmdSetOfRecords_Click()
Dim rstVideos As ADODB.Recordset
Set rstVideos = New ADODB.Recordset
End Sub
Après la déclaration de la variable, vous devez définir la source de ses disques. Naturellement, vous avez de diverses solutions de rechange.
Dans des leçons précédentes, nous avons vu que quelques commandes, telles que la boîte combo ou la boîte de liste, ont été censées pour tenir une liste de valeurs. Nous savons également qu'une forme ou un rapport est principalement créée pour montrer un ou plusieurs disques. De telles commandes tiennent leur propre ensemble record. Si vous créez un objet de Recordset et voulez l'initialiser avec les valeurs tenues sous la forme où il s'appelle, vous pouvez simplement lui assigner Me.Recordset. Voici un exemple : Private Sub cmdRecordset_Click()
' Create a recordset
Dim rstVideos As Recordset
' Specify that the record set points to the records of this form
Set rstVideos = Me.Recordset
End Sub
Quand une forme est équipée pour montrer les valeurs d'une liste, cette forme a un objet de Recordset qui représente ses disques. De nouveau, se rappeler qu'il y a de diverses autres manières que vous pouvez initialiser un objet de Recordset. Par exemple, si vous employez l'AGITATION, pour employer les disques de la forme qui l'appelle, vous pouvez assigner Me.Recordset à votre objet de Recordset. Voici un exemple : Private Sub cmdSetOfRecords_Click()
Dim rstVideos As ADODB.Recordset
Set rstVideos = Me.Recordset
End Sub
Nous avons vu que les commandes de Windows sur une forme pourraient être employées pour montrer des données d'une table. Ceci est fait en indiquant une liste de valeurs dans la propriété de RecordSource de la forme. Pour obtenir l'ensemble de disques que la propriété de RecordSource d'une forme tient, vous pouvez accéder à sa propriété de RecordsetClone.
Pour travailler sur un ensemble record, vous devez communiquer au moteur de base de données quelles règles votre ensemble suivra pour être considéré en tant que tels. Dans les Leçons 8 et 9, nous scie comment créer une table et ses colonnes. Dans la Leçon 12, nous avons vu comment peupler une table avec des données. Nous avons vu qu'une table dans la Leçon 10 ou une question dans la Leçon 15 pourrait être employée comme source record de forme (ou en tant que cela d'un rapport). Une fois que la table a été créée, on le considère un ensemble record. Vous pouvez l'employer pendant que le contenu d'un Recordset objecte. Après avoir créé un ensemble record, vous pouvez vouloir savoir le nombre réel de disques qu'il contient. Cette information est stockée dans une propriété appelée RecordCount. Sur une forme, obtenir le nombre de disques qu'il contient, vous peut accéder à la propriété de RecordCount de son objet de RecordsetClone. Ceci pourrait être fait comme suit : RecordsetClone.RecordCount Ceci produirait tout le nombre de disques qu'une forme tient. De la même manière, l'objet de Recordset de la bibliothèque d'ADO fournit la propriété de RecordCount. Jusqu'ici, c'est-à-dire, dans les leçons précédentes, nous avons été concernés par une base de données accédée par un utilisateur. Dans beaucoup d'environnements, une base de données devra être accédée par plus d'un ordinateur. Ceci signifie que, en créant un objet de Recordset, vous devez maintenir différents facteurs dans l'esprit. Par exemple, vous (réellement votre utilisateur) pouvez accéder à un disque ou à des séries de disques en même temps avec quelqu'un d'autre à partir d'un autre ordinateur. Dans certains cas, il peut habituellement y avoir seulement une personne employant une base de données et il pourrait de temps en temps y avoir quelqu'un d'autre mais de peu probable, bien que possible. Dans quelques autres cas, comme sur l'Internet ou à une grande entreprise, il pourrait y a beaucoup de personnes accédant, ou essayant d'accéder, une base de données, ou un ensemble spécifique de disques, en même temps. Imaginer que vous travaillez sur une grande base de données telle qu'une application de banque qui a des milliers ou des millions de disques (tels que des milliers ou des millions de clients). Si vous voulez effectuer une opération sur les clients, vous pouvez devoir traiter beaucoup ou tous des disques. Vous pouvez également devoir traiter le fait que d'autres accèdent aux mêmes disques comme toi, en même temps. Normalement, quelques opérations n'exigent pas de toi d'avoir accès à tous les disques, au moins non toute heure. En travaillant aux disques, ainsi en créant un objet de Recordset, vous pouvez indiquer une manière d'isoler une gamme des disques et de traiter seulement cette gamme. La gamme des disques que vous choisi s'appelle un curseur. Puisqu'un curseur joue un rôle énorme dans un ensemble record, il y a différentes options en utilisant le. Pour soutenir ces options, il y a de divers types de curseurs:
Dans la Leçon 4, nous avons présenté des raccordements de base de données et avons montré différentes manières de créer dessus. Nous avons employé ces techniques depuis la leçon 4. En créant un ensemble record, dans certains cas, particulièrement en utilisant l'AGITATION, vous pouvez devoir indiquer quel raccordement l'objet de Recordset emploierait. Imaginer que, après avoir créé un ensemble record et avoir travaillé à lui, vous voulez commander qui autrement peut avoir accès aux disques de l'ensemble que vous employez. Pour exercer cette commande, vous pouvez créer une « serrure ». Ceci te permet, par exemple, d'empêcher d'autres de changer les disques jusqu'à ce que vous ayez fini avec eux. Pour soutenir fermant à clef, la bibliothèque d'AGITATION fournit de diverses options :
Avec la bibliothèque des programmes résultants de Microsoft Access ou le DAO, pour créer un objet de Recordset en utilisant une table ou une question qui est associée à une base de données, vous pouvez appeler la méthode d'OpenRecordset () de cette base de données. La syntaxe de cette méthode est : Set Variable = Database.OpenRecordset(Source[, Type [, Options [, Lockedits ]]]) Le facteur variable peut être une variable d'objet que vous auriez déclarée comme placeholder pour un objet de Recordset. Le facteur de base de données doit représenter une base de données valide. Il peut être la base de données courante ou encore. le seul argument exigé de cette méthode est la source, qui est passée comme corde. Ceci peut être le nom d'une table ou d'une question. Voici un exemple : Private Sub cmdGetVideos_Click()
Dim dbVideoCollection As Object
Dim rstVideos As Object
Set dbVideoCollection = CurrentDb
Set rstVideos = dbVideoCollection.OpenRecordset("Videos")
End Sub
Quand cette méthode s'exécute, elle recherche les disques stockés dans une table ou une question appelée Videos et crée un ensemble record de elle. Au lieu d'une table ou d'une question entière, c'est-à-dire, au lieu d'inclure toutes les colonnes d'une table ou d'une question, vous pouvez vouloir choisir seulement une ou quelque colonnes pour mémoire réglées. Pour faire ceci, créer un rapport CHOISI de SQL et le passer à la méthode d'OpenRecordset (). Voici un exemple : Private Sub cmdGetVideos_Click()
Dim dbVideoCollection As Object
Dim rstVideos As Object
Set dbVideoCollection = CurrentDb
Set rstVideos = dbVideoCollection.OpenRecordset("SELECT Title, " & _
"CopyrightYear, Rating FROM Videos")
End Sub
Cette fois, seulement quelques colonnes seraient considérées dans l'objet de Recordset.
Le code ci-dessus suppose que vous passeriez par une base de données pour créer un ensemble record. Il peut être employé pour créer un ensemble record de la base de données courante ou d'une base de données fermée. Si vous travaillez dans une base de données qui fait vouloir ses propres objets et toi créer un ensemble record en utilisant un de ces objets, vous ne devez pas passer par l'objet de base de données. Chaque objet de base de données qui peut agir en tant qu'un point d'émission de données, y compris des tables et des questions, est équipé d'une méthode d'OpenRecordset (). Sa syntaxe est : Set Variable = object.OpenRecordset([Type [, Options [, Lockedits ]]]) Noter que, cette fois, vous n'indiquent ni la base de données ni le nom de l'objet. Voici curDatabase Private Sub cmdRstNames_Click()
Dim curDatabase As Object
Dim rstCustomers As Object
Dim tblCustomers As Object
' Get a reference to the current database
Set curDatabase = CurrentDb
' Get a reference to a table named Customers
Set tblCustomers = curDatabase.TableDefs("Customers")
' Create a Recordset object from the specified table
Set rstCustomers = tblCustomers.OpenRecordset
End Sub
Quand ce code fonctionne, il recherche les disques d'une table appelée Customers et crée un ensemble record de lui.
Considérer la table suivante:
Plus tôt, nous avons vu que, en créant un ensemble record, vous pouvez devoir prendre en compte de divers facteurs. Pour considérer ces facteurs, l'objet de Recordset de la bibliothèque d'AGITATION est équipé () de la méthode ouverte. Sa syntaxe est : recordset.Open Source, ActiveConnection, CursorType, LockType, Options Tous les arguments sont facultatifs. Au lieu de l'appeler et fournir l'argument, vous peut d'abord indiquer chaque facteur en utilisant la propriété appropriée car nous verrons sous peu. Puis, après l'indication des propriétés, vous pouvez appeler la méthode sans n'importe quel argument en utilisant la syntaxe suivante : recordset.Open Le facteur de recordset peut être une variable de Recordset que vous avez précédemment déclarée. Le premier argument, source, peut être un rapport de SQL qui sera employé pour choisir les disques. Voici un exemple : Private Sub cmdAnalyzeVideos_Click()
Dim rstVideos As ADODB.Recordset
Set rstVideos = New ADODB.Recordset
rstVideos.Open "SELECT Title, Director, CopyrightYear, Rating FROM Videos"
End Sub
La source peut également inclure un facultatif OÙ la condition qui indique quels disques seraient considérés. Au lieu d'appeler () la version ouverte de méthode qui s'attend à l'argument, vous pouvez d'abord indiquer la source de données. Pour soutenir ceci, l'objet de Recordset est équipé d'une propriété appelée Source qui est de type corde et qui peut recevoir la corde du point d'émission de données. Voici un exemple de l'employer : Private Sub cmdVideoAnalyze_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Source = "SELECT Title, Director, CopyrightYear, Rating FROM Videos"
rstVideos.Open
End Sub
Le deuxième argument de la méthode de Recordset.Open (), ActiveConnection, indique le raccordement par lequel l'ensemble record sera accédé. Ce peut être un raccordement comme ceux que nous avons vus dans les leçons précédentes. Voici un exemple qui emploie le raccordement à la base de données courante : Private Sub cmdAnalyzeVideos_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "SELECT Title, Director, CopyrightYear, Rating FROM Videos", _
Application.CodeProject.Connection
End Sub
Au lieu de passer le raccordement à l'objet de Recordset, vous pouvez l'indiquer en tant que son propre objet. Pour soutenir ceci, l'objet de Recordset est équipé d'une propriété appelée ActiveConnection et c'est de type raccordement. Ce peut également être un raccordement valide comme ceux que nous avons employés jusqu'ici. Voici un exemple : Private Sub cmdVideoAnalyze_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Source = "SELECT Title, Director, CopyrightYear, Rating FROM Videos"
rstVideos.ActiveConnection = Application.CodeProject.Connection
. . .
rstVideos.Open
End Sub
Le troisième argument indique le type de curseur qui contrôlera l'accès à l'ensemble record. Les curseurs disponibles que nous avons passés en revue plus tôt sont des membres d'un agent recenseur (une liste de valeurs constantes) CursorTypeEnum appelé. L'argument de curseur peut juger une des valeurs des curseurs nous scie plus tôt. Voici un exemple : Private Sub cmdAnalyzeVideos_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "SELECT Title, Director, CopyrightYear, Rating FROM Videos", _
Application.CodeProject.Connection, _
adOpenStatic
End Sub
Si vous voulez, vous pouvez indiquer le curseur séparément. C'est possible parce que l'objet de Recordset fournit une propriété appelée CursorType qui est de type CursorTypeEnum. Voici un exemple de l'employer : Private Sub cmdVideoAnalyze_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Source = "SELECT Title, Director, CopyrightYear, Rating FROM Videos"
rstVideos.ActiveConnection = Application.CodeProject.Connection
rstVideos.CursorType = adOpenStatic
rstVideos.Open
End Sub
Le quatrième argument, LockType, représente le type de fermer le système à clef qui sera appliqué sur l'ensemble record. Les types disponibles sont stockés dans un agent recenseur appelé LockTypeEnum. Les membres de cet agent recenseur sont ceux que nous avons passés en revue plus tôt. Voici un exemple de passer le quatrième argument : Private Sub cmdAnalyzeVideos_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "SELECT Title, Director, CopyrightYear, Rating FROM Videos", _
Application.CodeProject.Connection, _
adOpenStatic, adLockOptimistic
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Name
Next
End Sub
Le dernier argument est employé pour identifier le type de l'argument de source. Les valeurs de cet argument sont des membres d'un agent recenseur appelé CommandTypeEnum. Si la source est un rapport de SQL comme nous l'avons employé jusqu'ici, cet argument peut être passage comme adCmdText. Voici un exemple : Private Sub cmdAnalyzeVideos_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "SELECT Title, Director, CopyrightYear, Rating FROM Videos", _
Application.CodeProject.Connection, _
adOpenStatic, adLockOptimistic, adCmdText
End Sub
Jusqu'ici, nous avons indiqué le facteur de source comme rapport de SQL. L'AGITATION te permet d'employer le nom d'une table comme source. Si vous faites ceci, le moteur de base de données accomplirait la source avec un rapport CHOISI. Par exemple, si vous passez la source comme table appelée Videos, le moteur de base de données le convertirait en SELECT * FROM Videos; Si vous passez le facteur de source comme nom d'une table, alors le dernier argument () de la méthode ouverte peut être passé comme adCmdTable. Voici un exemple : Private Sub cmdVideoData_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "Videos", _
Application.CodeProject.Connection, _
adOpenStatic, adLockOptimistic, adCmdTable
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Name
Next
End Sub
Après avoir employé un objet de Recordset, vous devriez (fortement) le fermer. Pour fermer un ensemble record, vous pouvez appeler sa méthode Close(). Voici un exemple : Private Sub cmdVideoData_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "Videos", _
Application.CodeProject.Connection, _
adOpenStatic, adLockOptimistic, adCmdTable
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Name
Next
rstVideos.Close
End Sub
Après fermeture l'ensemble record, vous devriez libérer les ressources qu'il employait et les rendre disponibles à d'autres applications qui auraient besoin de elles. Pour faire ceci, assigner au rien la valeur à l'objet de Recordset. Voici un exemple : Private Sub cmdVideoData_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "Videos", _
Application.CodeProject.Connection, _
adOpenStatic, adLockOptimistic, adCmdTable
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Name
Next
rstVideos.Close
Set rstVideos = Nothing
End Sub
Dans la leçon 4, nous avons vu que, après avoir employé un raccordement, vous devriez également le fermer en appelant sa () méthode étroite et vous devrions libérer ses ressources. Si vous aviez l'habitude la propriété d'ActiveConnection pour se relier à la base de données courante, pour la fermer, l'objet de Recordset est équipé d'une propriété appelée ActiveConnection. Avant fermeture l'objet de Recordset, vous devriez d'abord n'assigner rien à sa propriété d'ActiveConnection.
Des techniques l'unes des nous avons employé ci-dessus, si en utilisant la méthode d'OpenRecordset () d'objet, un rapport de SQL ou le nom d'une table passée () à la méthode ouverte d'objet de Recordset, est employé pour choisir les disques. Les disques sont principalement identifiés par les colonnes qui les organisent., pour identifier les colonnes d'un ensemble record, chaque objet de Recordset des bibliothèques que nous avons jusqu'ici est équipés des zones identification d'une propriété, qui est une collection des colonnes de l'ensemble record. Pour visiter des champs collection, vous pouvez employer a pour chacun… dans… le rapport Suivant conditionnel.
Chaque colonne de la collection de champs est un objet du type champ, qui est le nom commun d'une colonne dans des systèmes de base de données. En notre introduction aux colonnes dans la leçon 9, nous avons vu qu'un nom était sa caractéristique plus fondamentale. Pour identifier le nom d'une colonne, l'objet de champ est équipé de Name appelé par propriété. Voici un exemple de lui accéder : Private Sub cmdVideoData_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Open "Videos", _
Application.CodeProject.Connection, _
adOpenStatic, adLockOptimistic, adCmdTable
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Name
Next
rstVideos.Close
Set rstVideos = Nothing
End Sub
Quand ce code s'exécute, il montrera le nom de chaque colonne dans une boîte de message, un par un.
Dans la leçon 12, nous avons vu qu'un disque a été créé en écrivant une valeur sous une colonne dans une table ou dans une commande de Windows d'une forme. Pour identifier la valeur tenue par une colonne, l'objet de champ est équipé d'une propriété appelée Value. Voici un exemple de l'employer : Private Sub cmdVideoAnalyze_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Source = "SELECT Title, Director, CopyrightYear, Rating FROM Videos"
rstVideos.ActiveConnection = Application.CodeProject.Connection
rstVideos.CursorType = adOpenStatic
rstVideos.LockType = adLockOptimistic
rstVideos.Open
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Value
Next
rstVideos.Close
Set rstVideos = Nothing
End Sub
Quand ce code s'exécute, il visite chaque colonne, recherche sa valeur, et la montre dans une boîte de message.
La navigation par un ensemble record se compose visiter ses disques. C'est semblable à utiliser les boutons de navigation au fond d'une table, d'une question, d'une forme ou d'un rapport. Nous scie comment à faire ceci manuellement. Nous avons également vu comment à faire ceci employant programmatically l'objet de DoCmd. L'objet de Recordset des appuis de bibliothèque d'AGITATION enregistrent la navigation par de diverses méthodes. Toutes les fois qu'effectuant une opération sur un disque, vous devriez savoir votre position dans l'ensemble. Toutes les fois que dans le doute, vous pouvez remettre à zéro votre position en se déplaçant au premier disque. Pour soutenir ceci, l'objet de Recordset est équipé d'une méthode appelée MoveFirst. Cette méthode ne prend aucun argument. Voici un exemple de l'appeler : Private Sub cmdVideoAnalyze_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Source = "SELECT Title, Director, CopyrightYear, Rating FROM Videos"
rstVideos.ActiveConnection = Application.CodeProject.Connection
rstVideos.CursorType = adOpenStatic
rstVideos.LockType = adLockOptimistic
rstVideos.Open
rstVideos.MoveFirst
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Value
Next
rstVideos.Close
Set rstVideos = Nothing
End Sub
Sans compter que le premier disque, une autre position extrême que vous pouvez se déplacer à est le dernier disque. Pour faire ceci, vous pouvez appeler la méthode de MoveLast () d'objet de Recordset. Pour se déplacer d'un disque au prochain, vous pouvez appeler la méthode de MoveNext () d'objet de Recordset. Voici un exemple de l'appeler : Private Sub cmdVideoAnalyze_Click()
Dim rstVideos As ADODB.Recordset
Dim fldEach As ADODB.Field
Set rstVideos = New ADODB.Recordset
rstVideos.Source = "SELECT Title, Director, CopyrightYear, Rating FROM Videos"
rstVideos.ActiveConnection = Application.CodeProject.Connection
rstVideos.CursorType = adOpenStatic
rstVideos.LockType = adLockOptimistic
rstVideos.Open
rstVideos.MoveFirst
rstVideos.MoveNext
For Each fldEach In rstVideos.Fields
MsgBox fldEach.Value
Next
rstVideos.Close
Set rstVideos = Nothing
End Sub
Quand ce code s'exécute, la position record est d'abord déplacée à la première. Alors elle se déplace immédiatement au deuxième disque. Alors elle visite chaque colonne, recherche sa valeur correspondant au deuxième disque et la montre dans une boîte de message. Pour se déplacer au disque précédent dans l'ensemble, appeler la méthode de MovePrevious () d'objet de Recordset. Les méthodes de MoveFirst () et de MoveLast () te permettent de diriger un disque à la fois jusqu'à ce que vous obteniez à un certain disque. Si vous êtes placés à un certain disque et vous voulez sauter un certain nombre de disques en avant ou vous voulez s'écarter par un certain nombre de disques, vous pouvez appeler la méthode de mouvement (). Sa syntaxe est : recordset.Move NumRecords, Start Le premier argument est exigé. Son indique le nombre de disques pour sauter à. Si vous passez une valeur positive, la position serait déplacée en avant par ce nombre. Voici un exemple : Private Sub cmdEditRecord_Click()
Dim dbCustomers As Object
Dim rstCustomers As Object
Set dbCustomers = CurrentDb
Set rstCustomers = dbCustomers.OpenRecordset("Customers")
rstCustomers.Move 4
End Sub Quand ce code s'exécute, il sauterait 4 disques en avant du disque courant d'une table appelée Customers. Vous pouvez également passer une valeur négative. Dans ce cas-ci la position serait déplacée derrière le disque courant par la valeur passée. Si l'ensemble record ne contient aucun disque quand vous appelez la méthode de Move(), vous obtiendriez une erreur 3021 :
Certains, sinon la plupart des opérations exigent que vous restez dans la marge des valeurs de l'ensemble record. Si vous vous déplacez au-dessous du premier disque de disque, vous (réellement l'utilisateur) pouvez recevoir une erreur. De la même manière, si vous vous déplacez au delà du dernier disque, vous recevriez une erreur. Pour vous aider avec vérifier si vous êtes dans le premier disque, l'objet de Recordset fournit la méthode de BOF (). Cette méthode renvoie une valeur booléenne comme suit :
D'une part, si vous voulez vérifier si vous êtes à la position la plus élevée des disques, vous pouvez appeler la méthode d'EOF () d'objet de Recordset. Il renvoie également une valeur booléenne comme suit :
|




Private Sub cboColumnNames2_AfterUpdate()
On Error GoTo cboColumnNames2_Err
Dim strValues As String
Dim rstStudents As ADODB.Recordset
Dim conStudents As ADODB.Connection
Dim iCounter As Integer
Set rstStudents = New ADODB.Recordset
Set conStudents = CurrentProject.Connection
rstStudents.Open "SELECT " & [cboColumnNames2] & " FROM Students", conStudents, adOpenKeyset, adLockOptimistic
' If the user selects a MI, display each letter of the alphabet
' in the Values combo box
If cboColumnNames2.Text = "MI" Then
For iCounter = 65 To 90 Step 1
strValues = strValues & Chr(iCounter) & ";"
Me.cboValues.Visible = True
Me.cboValues.Enabled = True
Me.cboOperators.Enabled = True
Me.txtRegularString.Visible = False
Next
' If the user selects DOB, then hide the Values combo box
' and display the text box so the user can enter a date
ElseIf cboColumnNames2.Text = "DOB" Then
Me.cboValues.Visible = False
Me.cboOperators.Enabled = True
Me.txtRegularString.Visible = True
Me.txtRegularString.Enabled = True
' If the user selects Gender, then
' enter only the available options
ElseIf cboColumnNames2.Text = "Gender" Then
strValues = "Female;Male;Unknown;"
Me.cboValues.Visible = True
Me.cboValues.Enabled = True
Me.cboOperators.Enabled = True
Me.txtRegularString.Visible = False
' Addresses are too long
ElseIf cboColumnNames2.Text = "Address" Then
Me.cboOperators.Enabled = False
Me.cboValues.Enabled = False
Me.txtRegularString.Enabled = False
' If the user selects State, then
' enter only the state close to Washington, DC
ElseIf cboColumnNames2.Text = "State" Then
strValues = "DC;MD;VA;WV;"
Me.cboValues.Visible = True
Me.cboValues.Enabled = True
Me.cboOperators.Enabled = True
Me.txtRegularString.Visible = False
' If the user selects ZIPCode, then hide the Values combo box
' and display the text box so the user can enter a ZIP Code
ElseIf cboColumnNames2.Text = "ZIPCode" Then
Me.cboValues.Visible = False
Me.cboOperators.Enabled = True
Me.txtRegularString.Visible = True
' For all the other text-based options
Else
Do
strValues = strValues & rstStudents.Fields(cboColumnNames2.Text) & ";"
rstStudents.MoveNext
Loop While Not rstStudents.EOF
Me.cboValues.Visible = True
Me.cboValues.Enabled = True
Me.cboOperators.Enabled = True
Me.txtRegularString.Visible = False
End If
cboValues.RowSource = strValues
Exit Sub
cboColumnNames2_Err:
MsgBox "There was an error when filtering the records." & vbCrLf & _
"Error #: " & Err.Number & vbCrLf & _
"Description: " & Err.Description & vbCrLf & _
"Please contact the program vendor if " & _
"he is not sleeping at this time."
Resume Next
End Sub
|
Private Sub cmdSumbmitFilter_Click()
On Error GoTo cmdSumbmitFilter_Error
Dim strFilter As String
' If the user selected DOB, then the filter should use # symbols
If cboColumnNames2 = "DOB" Then
strFilter = "" & cboColumnNames2 & " " & cboOperators & "#" & Me.txtRegularString & "#"
Else
strFilter = "" & cboColumnNames2 & " " & cboOperators & "'" & cboValues & "'"
End If
Me.Filter = strFilter
Me.FilterOn = True
Exit Sub
cmdSumbmitFilter_Error:
MsgBox "There was an error when filtering the records." & vbCrLf & _
"Error #: " & Err.Number & vbCrLf & _
"Description: " & Err.Description & vbCrLf & _
"Please contact the program vendor."
Resume Next
End Sub
|
|
|
||
| Précédent | Copyright © Yevol, 2007 | Suivant |
|
|
||