Nom de TextBox Dynamique | VB.net

Résolu/Fermé
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 - Modifié par Xineroks le 17/01/2012 à 10:35
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 - 18 janv. 2012 à 12:01
Bonjour tout le monde,

Je suis toujours en train de coder mon application pour un stage, mais je galère à nouveau sur un truc qui me parait simple dans l'idée mais je ne trouve absolument aucune aide qui me corresponde sur le net.

En fait j'ai des TextBox du style :
TB_N_Prenom1 TB_NB_N_1 TB_P_N_1
TB_N_Prenom2 TB_NB_N_2 TB_P_N_2
TB_N_Prenom3 TB_NB_N_3 TB_P_N_3
TB_N_Prenom4 TB_NB_N_4 TB_P_N_4
TB_N_Prenom5 TB_NB_N_5 TB_P_N_5
TB_N_Prenom6 TB_NB_N_6 TB_P_N_6

TB_O_Prenom1 TB_NB_O_1 TB_P_O_1
TB_O_Prenom2 TB_NB_O_2 TB_P_O_2
TB_O_Prenom3 TB_NB_O_3 TB_P_O_3
TB_O_Prenom4 TB_NB_O_4 TB_P_O_4
TB_O_Prenom5 TB_NB_O_5 TB_P_O_5
TB_O_Prenom6 TB_NB_O_6 TB_P_O_6

TB_F_Prenom1 TB_NB_F_1 TB_P_F_1
TB_F_Prenom2 TB_NB_F_2 TB_P_F_2
TB_F_Prenom3 TB_NB_F_3 TB_P_F_3
TB_F_Prenom4 TB_NB_F_4 TB_P_F_4
TB_F_Prenom5 TB_NB_F_5 TB_P_F_5
TB_F_Prenom6 TB_NB_F_6 TB_P_F_6

Voilà en gros mes textbox.

On repère bien que j'ai repris la même forme, avec juste le chiffre qui change, et une lettre en fonction de ce que je veux.

En fait j'aimerais pouvoir utiliser par exemple dans une boucle for : TB_N_Prenom & i.

J'ai tout essayé, ou presque vu que je vous sollicite pour m'aider.

Voilà un aperçu de ce que j'ai tenté :

 For i = 0 To 1 
            myreaderreservation.Read() 
            NBparcatégorie.Connection() = sqlCnx 
            NBparcatégorie.CommandText() = "SELECT COUNT(codeeleve),prenome, prix FROM reservation,eleves,avoir,prixcantine WHERE reservation.codeelever=eleves.codeeleve AND eleves.codeeleve=avoir.codeelevea AND reservation.codeprixr = prixcantine.codeprix AND typerepas = 'RR' AND codeparenta=" & CInt(moncode(0)) & "GROUP BY prenome,prix" 
            myreadercatégorie = NBparcatégorie.ExecuteReader() 

            For j = 0 To NBenffamille.ExecuteScalar - 1 
                myreadercatégorie.Read() 
                Controls("TB_N_Prenom_" & i).Text = myreadercatégorie(1) 
                Controls("TB_NB_N_" & i).Text = myreadercatégorie(0) 
                Controls("TB_P_N_" & i).Text = myreadercatégorie(2) 
            Next 

            myreadercatégorie.Close() 

            NBparcatégorie.CommandText() = "SELECT COUNT(codeeleve),prenome, prix FROM reservation,eleves,avoir,prixcantine WHERE reservation.codeelever=eleves.codeeleve AND eleves.codeeleve=avoir.codeelevea AND reservation.codeprixr = prixcantine.codeprix AND typerepas = 'OC' AND codeparenta=" & CInt(moncode(0)) & " GROUP BY prenome,prix" 
            myreadercatégorie = NBparcatégorie.ExecuteReader() 

            For j = 0 To NBenffamille.ExecuteScalar - 1 
                myreadercatégorie.Read() 
                Controls("TB_O_Prenom_" & i).Text = myreadercatégorie(1) 
                Controls("TB_NB_O_" & i).Text = myreadercatégorie(0) 
                Controls("TB_P_O_" & i).Text = myreadercatégorie(2) 

            Next 

            myreadercatégorie.Close() 

            NBparcatégorie.CommandText() = "SELECT COUNT(codeeleve),prenome, prix FROM reservation,eleves,avoir,prixcantine WHERE reservation.codeelever=eleves.codeeleve AND eleves.codeeleve=avoir.codeelevea AND reservation.codeprixr = prixcantine.codeprix AND typerepas = 'PF' AND codeparenta=" & CInt(moncode(0)) & " GROUP BY prenome,prix" 
            myreadercatégorie = NBparcatégorie.ExecuteReader() 

            For j = 0 To NBenffamille.ExecuteScalar - 1 
                myreadercatégorie.Read() 
                Controls("TB_F_Prenom_" & i).Text = myreadercatégorie(1) 
                Controls("TB_NB_F_" & i).Text = myreadercatégorie(0) 
                Controls("TB_P_F_" & i).Text = myreadercatégorie(2) 

            Next 

            myreadercatégorie.Close() 

        Next 



J'espère avoir été assez explicite pour me faire comprendre :)

Merci d'avance,

Xineroks

4 réponses

Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
Modifié par Xineroks le 17/01/2012 à 11:45
Ou même s'il faut, faire par index. D'ailleurs je serais curieux de voir les 2 manières.
J'ai fais ( même présentation ) :
400 410 420
401 411 421
402 412 422
403 413 423
404 414 424
405 415 425

500 510 520
501 511 521
...
...
etc...
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
Modifié par Xineroks le 17/01/2012 à 11:59
J'ai tenté aussi avec :

dim test as control 
for each test in me.controls 
    if typeof test is textbox 
        test.name="valeur"     
        test.text="montext"    
    end if 

next 



Le soucis c'est que ça ne correspond pas non plus.
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
17 janv. 2012 à 12:07
Pour faire vraiment plus simple l'explication

j'aimerais un code qui fonctionne du style :

for i = 0 to 10
(textbox & i).text = "unevaleur"
next



PS : C'est très urgent, sans ça je ne peux pas avancer
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
17 janv. 2012 à 13:49
Up
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
17 janv. 2012 à 15:43
up
0
Utilisateur anonyme
17 janv. 2012 à 16:38
Bonjour,

Il te faudra inévitablement découper le travail :

Exemple type :

Private Sub Lecture()

	' ...
	' code précédent
	'
	For j = 0 To NBenffamille.ExecuteScalar - 1
		myreadercatégorie.Read()
		ChangeValeurTextBox("TB_F_Prenom_" & i, myreadercatégorie(1))
		ChangeValeurTextBox("TB_NB_F_" & i, myreadercatégorie(0))
		ChangeValeurTextBox("TB_P_F_" & i, myreadercatégorie(2))
	Next

	'
	' code suivant
	' ...

End Sub

Private Sub ChangeValeurTextBox(ByVal pNom As String, ByVal pValeur As String)

	Dim Ctrl As System.Windows.Forms.Control

	For Each Ctrl In Me.Controls
		If Ctrl.GetType Is GetType(TextBox) Then
			If (Ctrl.Name = pNom) Then
				Ctrl.Text = pValeur
			End If
		End If
	Next

End Sub


Cdt

Lupin
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
17 janv. 2012 à 16:52
Salut,

Merci pour ta réponse, j'essaierais demain ces instructions. Ça m'a l'air beaucoup plus abouti que ce que j'ai trouvé

A bientôt
0
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 3
18 janv. 2012 à 12:01
Merci beaucoup à toi !
La réponse me convient parfaitement, c'est exactement ce que je voulais!
Ton aide me permet enfin d'avancer.

Merci encore,

Cdt,

Xineroks
0