Member 12283986 Ответов: 0

Как получить данные из базы данных SQL в мои динамические текстовые поля VB.NET


Привет, ребята/девушка, как поживаете? У меня есть одна проблема. Я создаю экзаменационную систему, которая должна давать 40 случайных вопросов из таблицы базы данных(mySQL). Мне удалось создать ( не идеально, все еще небольшие проблемы с .position и .size ) текстовые поля и checkboxex (on button click event ). И мне удалось получить одну (первую строку) данных из моего sql, но затем она останавливается. Я не могу создать больше текстовых полей или checkboxex. См. мой код ниже. Если вы не до конца поняли, чего я хочу или что мне нужно, пожалуйста, задайте вопрос, и я дам ответ.

Что я уже пробовал:

<pre>Imports System.Data.SqlClient
Public Class Form1
    Dim cn As New SqlConnection("Data Source=192.168.0.45,1433;Network Library=DBMSSOCN;Initial Catalog=DB_GS-TMT_SSuite;User ID=itmahir;Password=itadmin;")
    Private m_textboxes() As TextBox = {}
    Private m_checkboxes() As CheckBox = {}
    Dim i As Integer = m_textboxes.Length
    Dim a As Integer = m_checkboxes.Length
    Public Overrides Property AutoScroll As Boolean
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        ReDim Preserve m_textboxes(i)
        m_textboxes(i) = New TextBox
        With m_textboxes(i)
            .Name = "TextBox" & i.ToString
            .Text = "TextBox" & i.ToString
            If m_textboxes.Length < 2 Then
                .SetBounds(10, 10, 100, 20)
            Else
                .Left = m_textboxes(i - 1).Left
                .Top = m_textboxes(i - 1).Top + m_textboxes(i - 1).Height + 4
                .Size = m_textboxes(i - 1).Size

            End If
            .Tag = i

        End With
        AddHandler m_textboxes(i).TextChanged, AddressOf TextBox_TextChanged
        Me.Controls.Add(m_textboxes(i))
        CitacBaze()
        ReDim Preserve m_checkboxes(a)

        m_checkboxes(a) = New CheckBox
        With m_checkboxes(a)
            .Name = "CheckBox" & a.ToString
            .Text = "CheckBox" & a.ToString
            If m_checkboxes.Length < 2 Then
                .SetBounds(135, 10, 100, 20)
            Else
                .RightToLeft = m_checkboxes(a - 1).RightToLeft
                .Top = m_checkboxes(a - 1).Top + m_checkboxes(a - 1).Height + 4
                .Size = New Size(20, 20)

            End If
            .Tag = a
        End With
        AddHandler m_checkboxes(a).CheckStateChanged, AddressOf CheckBox_CheckStateChanged
        CitacOdgovora()
        Me.Controls.Add(m_checkboxes(a))

    End Sub
    Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim txt As TextBox = DirectCast(sender, TextBox)
        Debug.WriteLine(txt.Name & ": [" & txt.Text & "]")
    End Sub
    Private Sub CheckBox_CheckStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim chB As CheckBox = DirectCast(sender, CheckBox)
        Debug.WriteLine(chB.Name & ": [" & chB.Text & "]")
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Me.AutoScroll = True


    End Sub
    Public Sub CitacBaze()
        cn.Open()
        Dim cmd As New SqlCommand
        Dim dadapter As New SqlDataAdapter
        Dim datardr As SqlDataReader
        Dim strSql As String

        strSql = "SELECT * FROM TBL_Testiranje_Radnik"
        cmd.CommandText = strSql
        cmd.Connection = cn
        dadapter.SelectCommand = cmd
        datardr = cmd.ExecuteReader
        If datardr.HasRows Then
            datardr.Read()
            With m_textboxes(i)
                .Text = datardr("TekstPitanje")

            End With

        End If
        cn.Close()


    End Sub
    Public Sub CitacOdgovora()
        cn.Open()
        Dim cmd As New SqlCommand
        Dim dadapter As New SqlDataAdapter
        Dim datardr As SqlDataReader
        Dim strSql As String

        strSql = "SELECT * FROM TBL_Testiranje_Radnik"
        cmd.CommandText = strSql
        cmd.Connection = cn
        dadapter.SelectCommand = cmd
        datardr = cmd.ExecuteReader
        If datardr.HasRows Then
            datardr.Read()


            With m_checkboxes(a)
                .Text = datardr("OdgovorA")
            End With

        End If
        cn.Close()


    End Sub
    Public Sub KreiranjeTextBox()
        ReDim Preserve m_textboxes(i)
        m_textboxes(i) = New TextBox
        With m_textboxes(i)
            .Name = "TextBox" & i.ToString
            .Text = "TextBox" & i.ToString
            If m_textboxes.Length < 2 Then
                .SetBounds(10, 10, 100, 20)
            Else
                .Left = m_textboxes(i - 1).Left
                .Top = m_textboxes(i - 1).Top + m_textboxes(i - 1).Height + 4
                .Size = m_textboxes(i - 1).Size

            End If
            .Tag = i

        End With
        AddHandler m_textboxes(i).TextChanged, AddressOf TextBox_TextChanged
        Me.Controls.Add(m_textboxes(i))
        CitacBaze()
    End Sub
    Public Sub KreiranjeCheckBoxova()
        ReDim Preserve m_checkboxes(a)

        m_checkboxes(a) = New CheckBox
        With m_checkboxes(a)
            .Name = "CheckBox" & a.ToString
            .Text = "CheckBox" & a.ToString
            If m_checkboxes.Length < 2 Then
                .SetBounds(135, 10, 100, 20)
            Else
                .RightToLeft = m_checkboxes(a - 1).RightToLeft
                .Top = m_checkboxes(a - 1).Top + m_checkboxes(a - 1).Height + 4
                .Size = New Size(20, 20)

            End If
            .Tag = a
        End With
        AddHandler m_checkboxes(a).CheckStateChanged, AddressOf CheckBox_CheckStateChanged
        CitacOdgovora()
        Me.Controls.Add(m_checkboxes(a))

    End Sub
End Class

FranzBe

Вместо оператора datardr. Read () попробуйте выполнить цикл
А datardr.Читать()
- обработай свою запись
Конец Пока

j snooze

Я также рекомендую не указывать фактическое имя пользователя и пароль в вашей публикации кода. Только он закончит какие-то прохожие являются вредоносными.

0 Ответов