banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB