fabricioliking
Messages postés79Date d'inscriptionmercredi 30 août 2006StatutMembreDernière intervention15 mai 2009
-
27 mai 2008 à 20:27
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
30 mai 2008 à 00:37
Bonjour,
Me voila aujourd'hui avec un ptit problème. Non ce n'est pas un programme qui ne marche pas cette fois-ci mais je n'arrive pas à imaginer ma fonction, c'est pour cela que je vous demande un coup de papatte.
Voici un extrait de ma table ci dessous
Il n'y a seulement 2 champs qui me sont important pour le moment dans mon développement (ENSEMBLOF et NUMEROOF)
J'aimerai pouvoir faire une fonction qui à chaque Numeroof, vérifie si ce numéro existe dans ENSEMBLOF et ce en continue.
Exemple j'ai un NUMEROOF = 12113A/001
L'appli va chercher si je le trouve dans ENSEMBLOF, en effet il y est plusieurs fois, dans le premier cas j'ai en NUMEROOF 01109A/001, ce numéro n'est pas non plus dans ENSEMBLOF donc j'arete. Par contre j'ai un second ENSEMBLOF = 012113A/001, dont le NUMEROOF est 012112A/001
Ce numéro est retrouvé plusieurs fois dans ENSEMBLOF etc ...
J'ai mis des couleurs sur l'image pour que ce sois un petit peu plus clair
Exemple, j'ai un NUMEROOF = 012112A/001, je vais le trouver dans ENSEMBLEOF
Aussi j'ai commencé à fair un bout de développement, seul souie c'est que je suis limité à 2 sous "ENSEMBLE"
On m'a parlé de fair une fonction récursive pour résoudre mon problème, je suis un peu perdu
Mon code cidessous :
I = 0
lenumOf = zs_numof.Text
EnsembleOF "SELECT ENSEMBLEOF FROM consomof WHERE NUMEROOF '" & lenumOf & "';"
Reque = "Select NUMEROOF FROM consomof"
Call DemontEnsemble(lenumOf)requeteSearch "Select ENSEMBLOF, NUMEROOF FROM consomof WHERE ENSEMBLOF '" & lenumOf & "';"
Set lareque = Db_VisualGP.OpenRecordset(Reque)
Set R1 = Db_VisualGP.OpenRecordset(Reque)
Set RequeSearch = Db_VisualGP.OpenRecordset(requeteSearch)
lareque.MoveFirst
nr = lareque.RecordCount
While Not (lareque.EOF) 'On parcours l'ensemble des l'ensemble de la table consomof
' valEn = lareque!Ensemblof ' ValEn contiends les ENSEMBLOG
If RequeSearch.RecordCount > 0 Then 'Si ENSEMBLOF = NUMEROOF donc premier sousEnsemble
'RequeSearch.MoveFirst
While Not (RequeSearch.EOF) Set RequeSearch2 Db_VisualGP.OpenRecordset("SELECT NUMEROOF, ENSEMBLOF FROM consomof WHERE ENSEMBLOF '" & RequeSearch!Numeroof & "';")
Call DemontEnsemble(RequeSearch!Numeroof)
' MsgBox RequeSearch2!Numeroof
If RequeSearch2.RecordCount > 0 Then
While Not (RequeSearch2.EOF)
Dim test As String Set requeSearch3 Db_VisualGP.OpenRecordset("SELECT NUMEROOF FROM consomof WHERE ENSEMBLOF '" & RequeSearch2!Numeroof & "';")
Call DemontEnsemble(RequeSearch2!Numeroof)
If requeSearch3.RecordCount > 0 Then
While Not (requeSearch3.EOF)
requeSearch3.MoveNext
Wend
End If
'Demonte RequeSearch2
RequeSearch2.MoveNext
Wend
'Demonte RequeSearch2!NUMEROOF
'RequeSearch.MoveNext
End If
'Demonte RequeSearch!NUMEROOF
RequeSearch.MoveNext
Wend
' Else
' MsgBox ("Aucun Enregistrement pour ce numéro d'of")
End If
lareque.MoveNext
I = I + 1
Wend
Je veux parcourir tous les sousensemble eventuels afin d'effectuer sur chaque Article présent dans le premier sousensemble ou dans les petits, une fonction de démontage. ' qui récupérera cette hierarchi pour faire encore d'autres choses '
L'exemple du plan est très simpliste mais il peut y avoir des dizaines de sous ensembles
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 27 mai 2008 à 22:52
- Y a-t-il 2 sortes d'enregistrements, des enregistrements représentants un sous-ensemble (groupe) et d'autres représentants des articles?
C'est comme sur un disque dur. Y'a-t-il que des dossiers ou aussi des fichiers?
- Est il possible que les sous-ensembles se croise? C'est a dire que le sous-ensemble A contient un sous-ensemble B qui lui contient le sous-ensemble A?
Si oui, il est impossible de charger la hiérarchie complète, car elle est infinie...
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 27 mai 2008 à 23:27
Strucure Enregistrement ' Pour simplifer le code, il s'agit d'un enregistrement de ta table
ENSEMBLOF As String
NUMEROOF As String
End Strucure
Structure Ensemble ' Résultat hiérarchique
ENSEMBLOF As String
NUMEROOF As String
Sous-ensemble As Collection
End Structure
Function CréerHiérarchie(MonEnregistrement As Enregistrement) As Ensemble
' Créer l'ensemble
Dim MonEnsemble as Ensemble
MonEnsemble.ENSEMBLOF = MonEnregistrement.ENSEMBLOF
MonEnsemble.NUMEROOF = MonEnregistrement.NUMEROOF
' Trouver les sous-ensemble
Pour chaque Enregistrement dans la table ou ENSEMBLOF = MonEnregistrement.NUMEROOF
MonEnsemble.Sous-ensemble.Add CréerHiérarchie(Enregistrement )
End
' Retourner l'ensemble
Return MonEnsemble
End Sub
Le tout est de trouver l'enregistrement qui est le tout 1er dans les niveaux hiérarchiques (sur un disque dur, il s'agit de la racine (ex: C:\))
Vous n’avez pas trouvé la réponse que vous recherchez ?