dib.fred
Messages postés14Date d'inscriptionjeudi 13 novembre 2003StatutMembreDernière intervention15 mars 2005
-
6 sept. 2004 à 10:53
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
6 sept. 2004 à 11:58
Pouvez vous me depanner en repondant a ces questions
merci d'avance
bonne continuation
Quels types de variables sont créés par la déclaration suivante si Option Strict est désactivé et pourquoi ?
Dim a, b As Integer, c
15. Quelle est la valeur de c après l'exécution du code suivant et pourquoi ?
Dim c As Integer
c = 1
CheckValue(c)
...
Sub CheckValue(ByVal iValue As Integer)
...
iValue = 13
End Sub
16. Si vous disposez d'un jeu d'enregistrements (Recordset) ouvert appelé rs et d'un contrôle TextBox appelé txtData, laquelle des instructions suivantes crée une erreur de compilation ou d'exécution lorsque Option Strict est désactivé ? Pourquoi ?
a. txtData.Text = rs(0)
b. txtData.Text = rs.Fields.Item(0)
c. txtData.Text = rs.Fields(0).Value
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 6 sept. 2004 à 11:58
Alors, Dim a, b As Integer, c te déclare trois variables :
a qui est de type Variant, b qui est de type Integer, et c qui est de type Variant.
Pourquoi ? Par que seul b a un type définit, les deux autres n'ayant pas de type spécifié, VB les interprête comme des types "indéfinits" qui peuvent prendre n'importe quel type de valeur, autrement dit, ce sont des types Variant.
Dim c As Integer
c = 1
A ce niveau là, c = 1
Sub CheckValue(ByVal iValue As Integer)
...
iValue = 13
End Sub
A ce niveau là, iValue = 13
CheckValue(c)
Avant l'appel à CheckValue, c 1, après l'appel, c 1. Pourquoi ? Parce que tu passe une copie de C à ta sub, et non c lui même ! Du coup, la copie de c passe à 13, mais c n'est pas modifié ! Pour modifier sa valeur, passe c par référence et non par valeur :
Sub CheckValue(ByRef iValue As Integer)
...
iValue = 13
End Sub
Pour le 16., c'est à tester soit même. Pourquoi ca provoquera des erreurs ? Tout simplement parce qu'il n'y a pas de fonction par défaut pour un recordset ou un field, ou alors, cette fonction ne renvoie pas un type compatible avec la propriété Text de ton textbox.