Click here to Skip to main content
15,900,511 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello guys/girl, how are You. I have one problem. I'm creating a exam system which should give 40 random questions from database table(mySQL). I managed to create (not perfect, still small problems with .possition and .size ) textboxes and checkboxex ( on button click event ). And I managed to get ONE (first row) data from my sql but then it stops. I cannot create more textboxes or checkboxex. See my code below. If You didnt fully understand what I want or what I need, please ask question and I'll give the asnwer.

What I have tried:

VB
<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
Posted
Comments
FranzBe 30-May-17 9:50am    
Instead of the datardr.Read() statement try a loop
While datardr.Read()
' process your record
End While
j snooze 30-May-17 17:42pm    
I also recommend not putting the actual username and password in your code posting. Just incase any passersby are malicious.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900