जब आप किसी क्वेरी के परिणामसेट को पढ़ते हैं, तो आप एक लूप का उपयोग करते हैं जैसा कि आप जानते हैं।
While dr.Read
' run this for every row in your resultset
...
End While
While
लूप तब तक चलता रहता है जब तक आप सभी पंक्तियों को पढ़ नहीं लेते।
आपको लूप का उपयोग करने की आवश्यकता नहीं है। आप चाहें तो एक-एक करके पंक्तियों को इस तरह पढ़ सकते हैं
If dr.Read
' just the first row
End If
If dr.Read
' just the second row
End If
If dr.Read
' just the third row
End If
...
आपके प्रश्न से मुझे लगता है कि आपके पास Textbox1
है , Textbox2
, ... Textbox5
अपने रूप पर। मुझे यह भी लगता है कि आपके पास Grade1
है , Grade2
....
विषय के नाम और ग्रेड दोनों को संभालने के लिए, अपनी क्वेरी की पहली पंक्ति को
. में बदलें sql = "SELECT subject_name, grade " & _
आप उन वस्तुओं को इस तरह भर सकते हैं:
If dr.Read
TextBox1.Text = dr.Item("subject_name").ToString
Grade1.Text = dr.Item("grade").ToString
End If
If dr.Read
TextBox2.Text = dr.Item("subject_name").ToString
Grade2.Text = dr.Item("grade").ToString
End If
If dr.Read
TextBox3.Text = dr.Item("subject_name").ToString
Grade3.Text = dr.Item("grade").ToString
End If
' more of these sets of four lines to fill your whole form.
यह आपकी समस्या का समाधान करता है। लेकिन आप शायद ध्यान दें कि यह बेतुका दोहराव है। आपको वास्तव में टेक्स्टबॉक्स की एक सरणी (वास्तव में दो सरणी) की आवश्यकता है। आप अपने प्रोग्राम में इन टेक्स्टबॉक्स को बनाते हैं और फिर भरते हैं। मैंने इसे डीबग नहीं किया है:यह आपके लिए है।
Dim Subjects As Textbox()
Dim Grades As Textbox()
...
Dim rownumber, Y
rownumber = 0
Y = 200
Dim Subject
Dim Grade
While dr.Read
Subject = New Textbox
Subject.Text = dr.Item("subject_name").ToString
Subject.Width = 200
Subject.Height = 40
Subject.X = 175
Subject.Y = Y
Subjects(rownumber) = Subject
Form.Controls.Add(Subject)
Grade = New Textbox
Grade.Text = dr.Item("grade").ToString
Grade.Width = 50
Grade.Height = 40
Grade.X = 400
Grade.Y = Y
Grades(rownumber) = Grade
Form.Controls.Add(Grade)
rownumber = rownumber + 1
Y = Y + 50
End While
जब यह चलता है तो आपके पास नियंत्रण के दो स्तंभ होंगे, प्रत्येक विषय के लिए एक। लेकिन यह कोड जटिल है, और आपको अपने फॉर्म का सारा लेआउट Something.Y = value
के साथ करना होगा। और फिर Y = Y + 50
अंकगणित।
इसलिए ग्रिड नियंत्रण मौजूद हैं। वे इस तरह की चीजों का ख्याल रखते हैं।