#1 Mon 22 January 2007 18:45
- naga
- Juste Inscrit !
- Date d'inscription: 16 Jan 2007
- Messages: 6
MapOjects
Comment lier une table MS Access avec la méthode 'AddRelate' (MapOjects 1.2) sur Visual Basic 6 ?
Hors ligne
#2 Tue 23 January 2007 09:09
- Olivier De LA POMMERAYE
- Invité
Re: MapOjects
Bonjour,
Voici une fonction qui fait cela, vous n'avez qu'à passer la connexion ADO vers la base de données MSAccess & la couche vectoriel MapObjects :
'-----------------------------------------------------------------------------------------------------
' Procedure : CreateRelation
' Auteur : Odlp
' Objectif : Fonction pour faire une relation entre une Table et une
Couche par un champ de jointure
'-----------------------------------------------------------------------------------------------------
Private Function CreateRelation(oConnection As ADODB.Connection,
StrQuery As String, StrFromField As String, oMapLayer As
MapObjects2.MapLayer, StrToField As String) As Boolean
'-- Initialisation de la valeur de la fonction
CreateRelation = False
'-- On teste la couche pour savoir si il y a une Relation
If MapLayerHadRelation(oMapLayer) = True Then Exit Function
'-- Création de l'object Command ADODB pour connexion à la base de
données
Dim oADODBCommand As New ADODB.Command
Set oADODBCommand.ActiveConnection = oConnection
oADODBCommand.CommandType = adCmdText
oADODBCommand.CommandText = StrQuery
'-- Instanciation de la table MapObject à utiliser pour la jointure
Dim oMOTable As MapObjects2.Table
Set oMOTable = New MapObjects2.Table
Set oMOTable.Command = oADODBCommand
'-- Si la table ne contient aucune données, on sort
If oMOTable.Records Is Nothing Then Exit Function
'-- Création de la relation
If oMapLayer.AddRelate(StrFromField, oMOTable, StrToField, True) =
False Then Exit Function
'-- Succès de la création de la relation
CreateRelation = True
'-- Destruction des Objects temporaires
Set oADODBCommand = Nothing
Set oMOTable = Nothing
End Function
Mais attention ce code fonctionne en version 2.x de MapObjects et il faut bien être sûr que les champs qui servent à faire la jointure soient de même type, MapObjects est très "sensible" ce qui rend la jointure difficile à manipuler. L'autre solution étant alors de faire des jointures "à la main" lors de l'interrogation des données.
Bon travail,
Olivier de LA POMMERAYE