Modification dynamique On peut modifier dynamiquement l'apparence d'un formulaire: avec les propriétés Visible ou Enabled propriété SourceObject d'un sous-formulaire utilisation de boutons "bascules" … Objets DAO
Des Objets pour manipuler la base de données Access Objets DAO
Introduction Access vu du côté "utilisateur" et "concepteur" Visual Basic vu comme un langage de programmation de l'interface graphique Interaction directe avec la base de données Objets DAO
Une approche modulaire Interface utilisateur Access Visual Basic Data Access Objects Interface objet (DAO) JET Engine Moteur de la base de données Système & Réseau Système de fichiers Objets DAO
Objectifs Présentation de la hiérarchie DAO Minimum vital pour développer Centrer sur la mise à jour des tables Illustration par quelques exemples utilité de l'accès "programmé" à la BD Objets DAO
Un aperçu de la hiérarchie DAO DBEngine Workspaces Databases Autres classes TableDefs QueryDefs Recordsets Autres classes Film Autres Retard Autres Fields Fields NumFilm NumK7 Objets DAO
Quelques commentaires DBEngine : c'est le moteur de la base de données (Jet Engine) Workspaces : collection "sessions base de données". On utilisera uniquement la session courante Databases : collection permettant de manipuler une base de données Base courante (càd actuellement ouverte) CurrentDB Objets DAO
Liste des collections Il y a 15 objets ou classes d'objets de manipulation de la base de données + 7 autres spécifiques à la manipulation d'Access. Pour les détails consulter l'aide d'Access (rubrique Objets et Collections de la référence du langage. Nous allons étudier quelques exemples Objets DAO
Exemple 1: nom des tables Sub AfficheNomTable () Dim maBd As Database, I As Integer Dim S As String S = "" Set maBd = CurrentDB For I = 0 To maBd.TableDefs.Count - 1 S = S & maBd.TableDefs(I).name & _ Chr$(13) Next MsgBox S End Sub Objets DAO
Exemple 1 Résultat tables utilisateurs tables systèmes Objets DAO
Exemple 2: Colonnes d'une table Sub AfficheColonne (NomTable As String) Dim maBd As Database Dim maTable As TableDef, i As Integer,_ S As String Set maBd = CurrentDB Set maTable = maBd.TableDefs(NomTable) For i = 0 To maTable.Fields.Count - 1 S = S & maTable.Fields(i).name & _ maTable.Fields(i).Type & Chr$(13) Next MsgBox S End Sub Objets DAO
Exemple 2: Résultat type 10 => String type 8 => Date Objets DAO
Données d'une table Objet : RecordSet recupère les données d'une table ou d'une requête. Il existe trois sortes de RecordSets Dynaset (feuille dynamique) le plus sophistiqué lecture, écriture, mise à jour Snapshot (instantané) Lecture seule : pas de mise à jour dynamique Table correspond exactement à une table (pas de possibilité de requêtes, pas de filtrage). Objets DAO
RecordSet: Méthodes Ouverture: Méthode OpenRecordSet de l'objet DataBase ou QueryDef Set R=Bd.OpenRecordSet(<nom>,<type>) <nom> est le nom de la table ou de la requête qui contient les données <type> vaut DB_OPEN_DYNASET, DB_OPEN_SNAPSHOT ou DB_OPEN_TABLE Objets DAO
RecordSet (suite) Méthodes Fermeture: Close Première ligne de données MoveFirst Prochaine ligne de données MoveNext Dernière ligne de données MoveLast Ligne de données précédente MovePrevious Modification d'une ligne de données Edit Ajout d'une ligne de données AddNew Mise à jour des données Update Objets DAO
RecordSet (suite) Propriétés Test dernière ligne : EOF Test première ligne : BOF Nombre de lignes : RecordCount Objets DAO
Exemple 3 Données d'une table Sub LesFilms() Dim maBD As Database Dim D As Recordset, s As String Set maBD = CurrentDb Set D = maBD.OpenRecordset("Film") s = "" D.MoveFirst Do Until D.EOF s = s & D!NUM_FILM & " " & D!TITRE & Chr$(13) D.MoveNext Loop D.Close MsgBox (s) End Sub Objets DAO
Exemple 3 Résultat Objets DAO
Exemple 4 Mise en majuscule du titre Sub TitreMaj () Dim maBD As Database Dim D As Recordset Set maBD = CurrentDB Set D = maBD.OpenRecordset("Film") D.MoveFirst Do Until D.EOF D.Edit D!Titre = UCase(D!Titre) D.Update D.MoveNext Loop D.Close End Sub Objets DAO
Exemple 4 (Résultat) Objets DAO
Exemple 5 ajout d'une ligne Sub AjouterFilm(T As String) Dim maBD As Database Dim D As Recordset Set maBD = CurrentDb Set D = maBD.OpenRecordset("Film") D.AddNew D!NUM_FILM = NouvNumFilm() D!TITRE = T D.Update D.Close End Sub Objets DAO
Recordset (Dynaset) Autres méthodes Sélection d'information Première ligne de données FindFirst Prochaine ligne de données FindNext Dernière ligne de données FindLast Ligne de données précédante FindPrevious Plus d'enregistrements NoMatch Toutes ces méthodes prennent en argument une condition Objets DAO
Exemple 6: Selection Sub FilmsParDeb (T As String) Dim Bd As Database, S As String, D As Recordset Set Bd = CurrentDB Set D =Bd.OpenRecordset("Film",DB_OPEN_DYNASET) D.FindFirst "Titre like '" & T & "*'" S = "" Do Until D.NoMatch S = S & D!Titre & Chr$(13) D.FindNext "Titre like '" & T & "*'" Loop D.Close MsgBox S End Sub Objets DAO
Exemple 6 Résultat Appel : FilmParDeb "Au" équivalent à mettre Titre like 'Au*' dans la condition d'une requête Objets DAO