2017-06-29 7 views
-2

これは私が木を作ろうとしているテニスのトーナメントのシミュレーションプログラムです。すべてが完璧に動作していますが、大きな問題があります。私はファットゲームの勝者と次のステージに進むことはできません。私は勝者の名前を書いておきたい "目標"ラベルを変更できないからです。ここでは印刷です:私は次のステージに起こっている勝者を生成し、それが実際にどのように動作するかenter image description hereどのように動的にラベル番号

これは〜

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 

私の問題は、私は勝者を取得Label9.Text = dr("Vencedor")毎回ので、それがに行くということですlabel9。 最後に、この機能を何度も何度も繰り返さずに、ラベルを動的に変更する方法はありますか?

ありがとうございました。

+0

を試すことができます。 SQLを作成するために文字列を連結しないでください。また、リソースが漏れています – Plutonix

答えて

0

はあなたがラベルに渡したり、複数のアイテムを取得し、その結果からそれらを移入する方法は賢く作ることができる

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

あなたの答えは本当に感謝しています。しかし、私はまだこのエラーが発生します。http://imgur.com/a/PcZFb –

+0

コードを編集してください。もう一度お試しください。 –

関連する問題