Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 20 June 2005 18:14

Dialine
Invité

additem dans une combobox

De: didier
[arcgis 8.3]
ci-dessous un code permettant de charger une combobox à partir d'un champ d'une table attributaire.
Code:
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pLayer As ILayer
Dim pFLayer As FeatureLayer
Dim pFClass As IFeatureClass
Dim pFeature As IFeature
Dim i As Integer
Set pLayer = pMxDoc.FocusMap.Layer(0)
Set pFLayer = pLayer
Set pFClass = pFLayer.FeatureClass
For i = 0 To pFClass.FeatureCount(Nothing) - 1
Set pFeature = pFClass.GetFeature(i)
MaCombo.AddItem pFeature.Value(2), i
Next i
 
Sauriez comment adapter code pour que les données à charger dans la combobox soient issues d'une table dbf chargée dans le projet ?.
MERCI

 

#2 Tue 21 June 2005 08:19

Olivier GUYOT De LA POMMERAYE
Invité

Re: additem dans une combobox

Bonjour,

Il vous faut parcourir la collection de "tables seules" (IStandaloneTableCollection) et lorsque vous avez trouvé votre table DBF, instancier un object de type "IStandaloneTable", qui va contenir votre table DBF, ensuite il faut passer l'object dans une "ITable", enfin il faut instancier un "ICursor" grace à la méthode "Search" accessible depuis votre ITable, puis pour finir instancier un object "IRow" à chaque passage dans votre boucle de parcours des enregistrements du ICursor, c'est cet object IRow qui vous donnera accès aux valeurs de votre table pour les ajouter dans votre combobox.

Ce qui doit donner un truc du genre (non vérifié) :

Dim oDoc As IMxDocument
Set oDoc = ThisDocument
Dim oMap As IMap
Set oMap = oDoc.FocusMap

Dim oIStandaloneTableCollection As IStandaloneTableCollection
Set oIStandaloneTableCollection = oMap
Dim oIStandaloneTable As IStandaloneTable
Dim i As Integer
For i = 0 To IStandaloneTableCollection.StandaloneTableCount - 1
  Set oIStandaloneTable = IStandaloneTableCollection.StandaloneTable(i)
  If oIStandaloneTable.Name = "BOULOU" Then Exit Do
Next
Dim oITable As ITable
Set oITable = oIStandaloneTable

Dim oICursor As ICursor
Set oICursor = oITable.Search(Nothing, False)
Dim oIRow As IRow
Set oIRow = oICursor.NextRow
Do While Not oIRow Is Nothing
  Cbx_DBFValues.AddItem oIRow.Value(oIRow.Fields.FindField("BLA"))
  Set oIRow = oICursor.NextRow
Loop

Set oIRow = Nothing
Set oICursor = Nothing
Set oITable = Nothing
Set oIStandaloneTable = Nothing
Set oIStandaloneTableCollection = Nothing
Set oMap = Nothing
Set oDoc = Nothing

Bonne journée,

Olivier GUYOT de LA POMMERAYE
og@texte-a-enlever.geosys.com

 

Pied de page des forums

Powered by FluxBB