OVH Cloud OVH Cloud

Type utilisateur

3 réponses
Avatar
David TRISTRAM
Bonjour,

Comment puis je retrouver par programmation toutes les
variables d'un type utilisateur sans les nommer ?

Ex :
Public Type TTYPE
c1
c2
c3
end type

J'aimerai faire qq chose du style :
-----------------------------------
for each var in TTYPE
if (instr(var, ";") > 0) then
...
end if
next

3 réponses

Avatar
Patrice Lamarche
Bonjour David,

Je te conseil de regarder l'objet collection. Sauf qu'on neut pas pas
ajouter un type utilisateur dans une collection si ma memoire est bonne. Tu
devras te faire une classe (voici un exemple fait a main lever et pas testé

ex
'*****************

clsUtilisateur.cls
'*****************
Public Enum TType
c1 = 1
c2 = 2
c3 = 3
end Enum

Private m_TType as TType

Public Property Get UtilisateurType() as TType
UtilisateurType = m_TType
End property

Public Property Let UtilisateurType(ByVal NewVal)
m_TType= NewVal
End property

'**************
Form1
'**************

Private sub form_load()
Dim oCol as collection
Dim unUtilisateur as clsUtilisateur
Dim i as long

set oCol = new collection

set unUtilisateur = new clsUtilisateur
unUtilisateur.UtilisateurType = TType.c1

oCol.add unUtilisateur

for each unUtilisateur in oCol
....
next


end sub



Cordialement,

Patrice
"David TRISTRAM" wrote in message
news:096401c36b04$4b967a60$
Bonjour,

Comment puis je retrouver par programmation toutes les
variables d'un type utilisateur sans les nommer ?

Ex :
Public Type TTYPE
c1
c2
c3
end type

J'aimerai faire qq chose du style :
-----------------------------------
for each var in TTYPE
if (instr(var, ";") > 0) then
...
end if
next


Avatar
David TRISTRAM
Aux vues de la réponse, je dois préciser que j'utilise un
TYPE pour utiliser la fonction LSET.
Voici plus précisement mon pb :
1° lecture d'un fichier texte
(ligne = xxxx;ffff;gggg;jjj....)

2° LSET pour associer chaque champ de la ligne du fichier
dans mon TYPE

3° tests de cohérence sur les variables du TYPE

4° MAJ d'une base SQL avec toutes les variables du TYPE
(en fait, j'ai plusieurs TYPE, plus de 1000 variables,
d'où mon interêt à trouver qq chose pour ne pas écrire
tous les noms de variables)
..
Je ne connais pas les classes en VB, je n'ai sans doute
pas tout compris à ta réponse mais il me semble que je ne
pourrai plus utiliser le LSET ...?

========================= ===============

-----Message d'origine-----
David TRISTRAM wrote:
Bonjour,

Comment puis je retrouver par programmation toutes les
variables d'un type utilisateur sans les nommer ?

Ex :
Public Type TTYPE
c1
c2
c3
end type

J'aimerai faire qq chose du style :
-----------------------------------
for each var in TTYPE
if (instr(var, ";") > 0) then
...
end if
next



Y'a peut être une solution plus directe, mais tu peu


faire comme ceci:
-Plutot que de crée un type, tu crée quelque classe:
clsVarString qui contient une variable public


Value as string
clsVarInt qui contient une variable public Value


as integer
et ainsi de suite pour tous les type réquis dans


ton "type
utilisateur"
et une classe clsCol qui est une collection de


value, qui serra le
type.
-Tu ne laisse pas la possibilité d'ajouté de nouvelle


élément a la
collection(si tu passe par le générateur de classe, passe


la propriété Add a
private, si tu la fait toi même déclare la private mais


fait la quand même).
-Tu modifie Add, de sorte a ce que tu puisse précisez


le type, et qui
ajoute clsVarXxxx en conséquence
-Et dans l'évènement initialize, tu crée toutes les


variales qu'elle
devra contenir dans les types réquis

Ensuite, dans ton code:
dim var as clsVar
var!maprop.value=xxx

Et la for each est utilisable comme pour une


collection.

Si tu désire évitée de devoir mettre .Value, tu rend


la variable Value
en Private et tu la nomme prtValue. Et tu peu crée une


propriété Value que
tu déclare en propriété par défaut.

a+


.



Avatar
David TRISTRAM
T'as solution me plait beaucoup... Grâce à elle, je
pourrai faire mes requetes SQL sans déclarer la moindre
variable (plus besoin de structure)...

Merci Beaucoup
David TRISTRAM

========================= ==
-----Message d'origine-----
David TRISTRAM wrote:
Aux vues de la réponse, je dois préciser que j'utilise




un
TYPE pour utiliser la fonction LSET.
Voici plus précisement mon pb :
1° lecture d'un fichier texte
(ligne = xxxx;ffff;gggg;jjj....)

2° LSET pour associer chaque champ de la ligne du




fichier
dans mon TYPE

3° tests de cohérence sur les variables du TYPE

4° MAJ d'une base SQL avec toutes les variables du TYPE
(en fait, j'ai plusieurs TYPE, plus de 1000 variables,
d'où mon interêt à trouver qq chose pour ne pas écrire
tous les noms de variables)
..
Je ne connais pas les classes en VB, je n'ai sans doute
pas tout compris à ta réponse mais il me semble que je




ne
pourrai plus utiliser le LSET ...?



Ah nan, LSET ne marchera plus.
LSET copie "en brut" la masse de donnée que représente la


variable(qui est
découpée pour les types), mais les classes fonctionnes


différement. Sur les
classes, il faudrai utilisée SET, mais dans ton cas sa ne


servierai a rien.

Mais pourquoi ne pas mettre en 1ére ligne de tes fichiers


les noms des
champs, qu'ils stoque dans un tableau, et ensuite met au


fur et a mesure
dans la table SQL les valeurs lue du fichier?

a+


.