Eléments techniques Définition








télécharger 103.7 Kb.
titreEléments techniques Définition
page3/4
date de publication12.07.2017
taille103.7 Kb.
typeDocumentos
ar.21-bal.com > droit > Documentos
1   2   3   4

Exemples de Code

Mise en œuvre du modèle objet


Pour utiliser JRO en early binding dans un programme VB ou VBA, on pensera à cocher la référence:
Microsoft Jet and Replication Objects 2.1 Library

en utilisant les menus
Projet  Références de l'interface VB ou
Outils Références de l'éditeur VBA.

Le nom de la librairie est JRO, et le nom du fichier qui implémente cette librairie se nomme msjro.dll. Le fichier d'aide de JRO se nomme Msjro.chm et est situé par défaut dans le répertoire "Program Files\Fichiers communs\System\ado\"

Exemples de code


Dans MSDN, il existe un ensemble d’exemples en VB qui présentent le fonctionnement de JRO. L'article regroupant ces exemples a pour titre " Jet and Replication examples ", et est disponible sur le Web à l'adresse http://msdn.microsoft.com/library/psdk/msjro/jrex28mr.htm.

Voici quelques exemples d’utilisation du modèle JRO pour:

  • Créer un réplica maitre

Sub JROMakeDesignMaster()

   Dim repMaster As New JRO.Replica
   repMaster.MakeReplicable App.Path & "\bd1.mdb", False
   Set repMaster = Nothing

End Sub

Pour tester ce code, on crée avec Microsoft Access 2000 une base de données nommée bd1.mdb, dans laquelle on crée quelques objets (tables, requêtes…). On exécute la procédure JROMakeDesignMaster. Si maintenant on ouvre la base avec Microsoft Access 2000, le titre de fenêtre Microsoft Access est "bd1 : Réplica-Maître", et tous les objets de la base sont marqués comme réplicables.


  • Créer un réplica maître avec pistage des modifications au niveau Colonne
    Le pistage des modifications se fait par défaut au niveau ligne. Cela signifie qu'un conflit sera généré si des modifications sont effectuées dans 2 réplicas différents sur le même enregistrement. Le conflit est généré, même si les modifications ne concernent pas la même colonne.
    Dans le cas d'un pistage au niveau Colonne, la réplication est capable de fusionner deux enregistrements qui ont été modifiés, et ne génère un conflit que si les modifications concernent le même champ du même enregistrement. Dans le cas où les mises à jour concernent très souvent la même ligne, cela peut améliorer les performances. Cette fonctionnalité n'existe pas avec DAO.

Sub JROMakeDesignMaster2()

   Dim repMaster As New JRO.Replica
   repMaster.MakeReplicable App.Path & "\bd1.mdb", True
   Set repMaster = Nothing

End Sub


  • Rendre un objet non réplicable (ou local)
    Pour cela, on utilise la méthode GetObjectReplicability pour déterminer si un objet est réplicable ou non, et la méthode SetObjectReplicability pour rendre un objet réplicable ou non.

Sub JROKeepObjectLocal(strTable As String)

Dim repMaster As New JRO.Replica
repMaster.ActiveConnection = App.Path & "\bd1.mdb"

repMaster.SetObjectReplicability strTable, "Tables", False
Set repMaster = Nothing

End Sub



  • Rendre un objet réplicable

Sub JROMakeObjectReplicable(strTable As String)

   Dim repMaster As New JRO.Replica
   repMaster.ActiveConnection = App.Path & "\bd1.mdb"

   repMaster.SetObjectReplicability strTable, "Tables", True
   Set repMaster = Nothing

End Sub

S
i vous ouvrez la base avec Microsoft Access2000, un objet réplicable est représenté par une icône possédant 2 flèches en sens inverse.

On peut également visualiser si un objet est réplicable en visualisant les propriétés de l'objet (clic droit sur l'objet, et item Propriétés).
Remarque:
La méthode SetObjectReplicability est ignorée pour les objets de type Formulaires, Etats, Pages, Macros, et Modules.


  • Créer un réplica

Function JROMakeAdditionalReplica(strReplicableDB As String, _

   strNewReplica As String) As Integer
   Dim repMaster As New JRO.Replica
   repMaster.ActiveConnection = strReplicableDB

   repMaster.CreateReplica strNewReplica, "Replica de " & _

      strReplicableDB
   Set repMaster = Nothing

End Function
Sub Command1_Click ()

JROMakeAdditionalReplica App.Path & "\bd1.mdb", App.Path & "\bd1Bis.mdb"

End Sub

Si vous ouvrez la base bd1Bis.mdb avec Microsoft Access2000, vous pouvez constater que seules les objets marqués comme réplicables sont présents dans la base répliquée.



  • Créer un réplica partiel:

Pour créer un réplica partiel, différentes actions sont nécessaires:
- Créer le réplica en tant que réplica partiel
- Créer le ou les filtres
- Remplir le réplica partiel en utilisant les filtres.

Sub JROCreatePartial()

   Dim repFull As New JRO.Replica

   Dim repPartial As New JRO.Replica
   ' Créer un réplica partiel depuis une base réplicable.

   repFull.ActiveConnection = ".\Comptoir.mdb"

   repFull.CreateReplica ".\ComptoirRep.mdb", "Replica partiel des Ventes", _

      jrRepTypePartial

   Set repFull = Nothing
' Créer des filtres dans le réplica partiel.

' La méthode PopulatePartial nécessite une connexion exclusive à la base

   repPartial.ActiveConnection = _

      "Provider=Microsoft.Jet.OLEDB.4.0;" & _

      "Data Source=.\ComptoirRep.mdb;Mode=Share Exclusive"

   repPartial.Filters.Append "Customers", jrFilterTypeTable, _

      "Pays = 'France'"
' Créer un filtre basé sur une relation dans le réplica partiel.

repPartial.Filters.Append "Commandes", jrFilterTypeRelationship, _

"ClientsCommandes"
' Peupler le réplica partiel en s'appuyant sur les filtres.

   repPartial.PopulatePartial ".\Comptoir.mdb"
   Set repPartial = Nothing

End Sub


  • Synchroniser les modifications de façon directe ou synchrone

Sub JROTwoWayDirectSync()

Dim repMaster As New JRO.Replica
repMaster.ActiveConnection = App.Path & "\test1.mdb"
' Envoi des modications entre chacun des chacun des réplicas

repMaster.Synchronize App.Path & "\test1bis.mdb", jrSyncTypeImpExp, _
jrSyncModeDirect
Set repMaster = Nothing

End Sub

Pour tester la validité de ce code, et vérifier que la synchronisation a bien lieu dans les 2 sens, on pourra réaliser les actions suivantes:
- Créer une base test1.mdb possédant une table nommée table, et saisir quelques données dans la table.
- Rendre la base réplicable en exécutant la procédure JROMakeDesignMaster
- Créer un réplica nommé test1bis.mdb en exécutant la procédure
JROMakeAdditionalReplica App.Path & "\test1.mdb", App.Path & "\test1bis.mdb"
- Dans la base test1.mdb, ajouter quelques enregistrements et une requête nommée Requête1, requête que l'on rend réplicable.
- Dans la base test1bis.mdb, ajouter quelques enregistrements dans la table Table1.
- Appeler la procédure JROTwoWayDirectSync. Vous constaterez alors que tous les enregistrements sont présents dans la table Table1 des 2 bases, et que Requête1 a été importée dans la base test1bis.mdb.


  • Synchroniser les modifications par Internet:

Sub JROInternetSync()

   Dim repLocal As New JRO.Replica
   ' Base se trouvant en local

   repLocal.ActiveConnection = App.Path & "\test1.mdb"
   ' Synchroniser la base avec le réplica du serveur Internet

   repLocal.Synchronize "sampleserver/files/test1bis.mdb", _

      jrSyncTypeImpExp, jrSyncModeInternet
   Set repLocal = Nothing

End Sub



  • Lister les conflits de synchronisation

Si deux utilisateurs sur deux réplicas distincts ont fait des modifications qui concernent le même enregistrement de la base, un conflit peut alors se produire lors du processus de synchronisation. Si le pistage des modifications a été défini au niveau ligne (terme US : Row Tracking), un conflit se produira si 2 utilisateurs font un changement quelconque concernant un même enregistrement. Si le pistage des modifications a été défini au niveau Colonne (terme US : Column Tracking), un conflit se produira si 2 utilisateurs font un changement dans la même colonne du même enregistrement. Lorsqu'un conflit se produit, les modifications faites par l'un des utilisateurs vont échouer lorsqu'elles seront appliquées sur l'autre réplica. Les informations relatives à ce conflit seront reportées dans les 2 réplicas.

L'information concernant le conflit est stockée dans la table des conflits dans chacun des réplicas Les tables des conflits contiennent l'information qui aurait été placée dans la table concernée par le conflit s'il n'y avait pas eu conflit. Il est possible d'examiner ces tables de conflit et de résoudre les conflits ligne par ligne.

Sub JROConflictTables()

   Dim repMaster As New JRO.Replica

   Dim rstConflicts As ADODB.Recordset
repMaster.ActiveConnection = App.Path & "\test1.mdb"
Set rstConflicts = repMaster.ConflictTables
If rstConflicts.BOF And rstConflicts.EOF Then

' Il n'y a pas de tables de conflits, donc pas de conflits.

Debug.Print "Pas de conflits."

Else

Do Until rstConflicts.EOF

Debug.Print " Il y a eu un conflit sur " & rstConflicts.Fields(0)

Debug.Print "Les informations relatives sont dans " _

& rstConflicts.Fields(1)

rstConflicts.MoveNext

Loop

End If

End Sub


  • Compacter et encrypter une base Jet:

Public Sub CompactAndEncrypt()

Dim jetEng As New JRO.JetEngine
' S'assurer que le fichier de la base compactée n'existe pas déjà

If Dir("C:\Program Files\Microsoft Office\" & _

"Office\Samples\Northwind2.mdb") <> "" Then Kill _

"C:\Program Files\Microsoft Office\Office\Samples\Northwind2.mdb"
' Compacter et encrypter une version de la base Northwind.

jetEng.CompactDatabase _

"Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\Program Files\Microsoft Office\" & _

"Office\Samples\Northwind.mdb", _

"Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\Program Files\Microsoft Office\" & _

"Office\Samples\Northwind2.mdb;" & _

"Jet OLEDB:Encrypt Database=True"

End Sub


  • Rafraîchir le cache:

Public Sub RefCache()

Dim lateJetEng As JRO.JetEngine

Dim conn As New ADODB.Connection

Dim conn2 As New ADODB.Connection

Dim rs As ADODB.Recordset

Dim fld As ADODB.Field
' Ouverture des connexions sur les bases.

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data source=" & App.Path & "\test1.mdb;"

conn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data source=" & App.Path & "\test1.mdb;"
Set lateJetEng = CreateObject("JRO.JetEngine")
On Error Resume Next

conn.Execute "drop table table1"

On Error GoTo 0
' Créer une table et saisir des valeurs

conn.Execute "create table table1 ( champ1 int)"

conn.Execute "insert into table1 values (1)"

conn.Execute "insert into table1 values (2)"
' Force l'écriture dans la base afin que conn2 visualise les
' modifications faites par conn1.

lateJetEng.RefreshCache conn2

Set rs = conn2.Execute("select * from table1")

Set fld = rs.Fields(0)

Debug.Print "Enregistrement 1: " & fld.Name & " = " & Str(fld.Value)
conn.Close

conn2.Close

Set lateJetEng = Nothing

End Sub

1   2   3   4

similaire:

Eléments techniques Définition iconEléments techniques Définition

Eléments techniques Définition iconElements methodologiques et techniques pour l’elaboration d’un manuel...

Eléments techniques Définition iconJe voudrais présenter ici les éléments de ma conception de ce qu’esthétique...

Eléments techniques Définition iconChapitre La définition du domaine public Section Définition légale

Eléments techniques Définition iconExposés hda mme Gharbi
«Arts, techniques, expressions» : évolution de l’architecture, prouesses techniques

Eléments techniques Définition iconLa mission d'une maîtrise d'œuvre est de
«mission de base» fait l'objet d'un contrat unique et comporte au minimum les éléments de mission esq, aps, apd, pro, act, det, visa,...

Eléments techniques Définition iconRéunion n°3 Gestion de Projet charte du projet tic 9 juillet 2008...
«Phase de définition ou pré-étude» du projet et permet, après validation par le Comité de Pilotage, de lancer le projet

Eléments techniques Définition iconRapport de recherche P0 Encadré par
«Techniques d’apprentissage et d’aide à la décision», on va réaliser un projet qui consiste à développer des applications pour la...

Eléments techniques Définition icon1. Définition d’un plancher

Eléments techniques Définition iconI/ Introduction 1 Définition








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com