2017-06-29 8 views
-2

Ceci est un programme de simulation de tournois de tennis que je tente de faire un arbre. Tout fonctionne parfaitement mais j'ai un gros problème. Je ne peux pas passer à la prochaine étape avec les gagnants des premiers jeux. Parce que je ne peux pas changer l'étiquette "cible" où je veux écrire le nom des gagnants. Voici une impression. enter image description hereComment dynamiquement le numéro d'étiquette

Voici comment je produis les gagnants qui se passe à l'étape suivante et il fonctionne en fait ~

Public Sub Gerar_Vencedor(Atleta1, Atleta2) 
    Using con As New OleDb.OleDbConnection 
     con.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;" & 
           "Data Source = E:\dev\Ganso\BaseDados_ClubeTenis.accdb" 
     con.Close() 
     con.Open() 
     Dim busca = "Select Vencedor From Jogo Where idAtleta1 = '" & Atleta1 & "' and idAtleta2 = '" & Atleta2 & "'" 
     Dim cmd As OleDbCommand = New OleDbCommand(busca, con) 
     Dim dr As OleDbDataReader = cmd.ExecuteReader() 
     ' A variável sql vai receber a string para fazer o select a base de dados 
     'Try 
     ' é aberta ligação a Bdados 
     ' declaração de um comando que vai executar a instrução sql na base de dados 
     ' variável que vai receber os registos resultantes da instrução sql 
     ' ciclo que vai percorrer todos os registos do comando anterior 
     While dr.Read() 
      Label9.Text = dr("Vencedor") 
     End While 
     con.Close() 
    End Using 
End Sub 

Mon problème est que Label9.Text = dr("Vencedor") parce que chaque fois que je reçois un gagnant, il va label9. Ma dernière question est: Y at-il moyen de changer dynamiquement l'étiquette sans répéter cette fonction encore et encore.

Merci.

+0

Vous pouvez passer une étiquette ou rendre la méthode plus intelligente pour obtenir les articles multiples et les remplir à partir des résultats. Ne pas enchaîner les chaînes pour faire du SQL, aussi vous fuyez les ressources – Plutonix

Répondre

0

Pouvez-vous essayer

Dim i As Integer = 9 
While dr.Read() 

If i < 15 

DirectCast(Me.Controls("Label" & i), Label).Text = dr("Vencedor") 

Else 

End If 

i = i + 1 

End While 
+0

Vraiment reconnaissant pour votre réponse. Mais je reçois toujours cette erreur http://imgur.com/a/PcZFb –

+0

Édité le code pouvez-vous s'il vous plaît essayer à nouveau –