Jump to content
sent

ler da base de dados e criar tab's e checkbox's

Recommended Posts

sent

boa noite estou a desenvolver um software para a escola, e estou com algumas  duvidas que gostaria que me ajudassem:

tenho uma base de dados com:

  -divisões(de uma casa)

  -electrodomésticos (tudo incluindo iluminação, com valores pré-definidos dos consumos de energia)

agora cria construir isto:

vbecooqueeuquero.png

mas a carregar da base de dados os electrodomésticos e divisões

    'criar as tabs-------------------------
    Dim tabs_col As New Microsoft.VisualBasic.Collection
    Dim cheks_col As New Microsoft.VisualBasic.Collection
    '---------------------------------------

    Dim hello(3) As CheckBox

    Dim eletro(100) As Electrodomestico
    Dim eletro_aux As Integer = 0
    Public Sub ler_DB()
        'Try

        '---------------------------------------
        'BAse de dados
        Dim stri As String 'localizaçao da base dados
        Dim sql1 As String 'tabelas para formar tabs
        Dim sql2 As String 'tabela para formar os checkbox's
        Dim co As New OleDbConnection 'coneccçao
        Dim c As New OleDbCommand 'especie de comandos
        Dim dr As OleDbDataReader 'data reader
        '----------------------------------------

        Dim i As Integer = 0
        Dim j As Integer = 0
        '----------------------------------------------------------------------------------------
        stri = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\predefinicao_eletrodomesticos.mdb"
        co = New OleDbConnection(stri)
        co.Open()
        sql1 = "select * from predefinicao_eletro order by cod_divisao,cod_eletro"
        sql2 = "select nome_divisao from divisao  order by cod_divisao" 'ordena pelo cod_divisao
        c = New OleDbCommand(sql2, co)
        dr = c.ExecuteReader

        i = 1
        ' adicionar tabs
        While dr.Read
            Dim tabs_aux As New System.Windows.Forms.TabPage
            tabs_col.Add(tabs_aux, CStr(i))
            TAB.TabPages.Insert(i - 1, tabs_col(i))
            tabs_col(i).text = (dr("nome_divisao"))
            i += 1
        End While
        '--------------------
        c = New OleDbCommand(sql1, co)
        dr = c.ExecuteReader
        i = 1
        j = 1
        Dim a As Integer = 1
        Dim cont_obj As Integer = 0
        Dim loc_x As Integer = 10
        Dim s As Integer
        Dim loc_y As Integer = 7
        ' adicionar os checkbox's
        While dr.Read
            Dim checks_aux As New System.Windows.Forms.CheckBox
            s = dr("cod_divisao")
            'MsgBox("entrou esotu em " & s)
            If cont_obj = 11 Then
                loc_x = 190
                loc_y = 7
            End If
            If (dr("cod_divisao") <> a) Then
                a += 1
                j += 1
                loc_x = 10
                loc_y = 7
                cont_obj = 0
            End If
            cheks_col.Add(checks_aux, CStr(i))
            cheks_col(i).text = dr("nome")
            tabs_col(j).Controls.Add(cheks_col(i))
            cheks_col(i).Location = New Drawing.Point(loc_x, loc_y)
            cheks_col(i).width = 161
            i += 1
            loc_y += 23
            cont_obj += 1
        End While
        '-----------------------------------------------

        co.Close()
        'Catch
        'End Try

    End Sub

(copy paste do meu projecto, não tudo)

eu este código faz com que apareça o eu quero, mas agora cria programar as cheksbox's: para ao "checked=true" fizesse aparecer algo do género:

vbpersonificaroartigo.png

(Na base se dados tem as pré-definições de cada electrodoméstico mas o utilizador deve poder mudar)

basicamente cria fazer isto:

 
'sendo cheks_col uma Collection(of checksbox)
'para quem viu o codigo anterior: mudei de "Collection" para "Collection(of checksbox)"
  Private Sub teste() Handles cheks_col(1).CheckedChanged
        '...
    End Sub

se isto funcionasse já me desenrascava :/

bem espero que me ajudem e obrigado.

PS: eu sei que se utiliza-se combobox ficava mais fácil de fazer, mas a vida não se leva de facilidades

Share this post


Link to post
Share on other sites
Caça

Em vez de declarares a variável no ciclo do DataReader declaras na parte publica assim

Dim WithEvents checks_aux As System.Windows.Forms.CheckBox

e no ciclo do DataReader em vez de

Dim checks_aux As New System.Windows.Forms.CheckBox

colocavas

checks_aux = New System.Windows.Forms.CheckBox

Desta maneira podes utilizares os eventos que precisares.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
sent

Fiz o que disseste, mas não resultou:

    Private Sub teste() Handles checks_col(1).CheckedChanged 'dá erro por esperar um "." onde está o "(1)"
        MsgBox("hello, ")
    End Sub

O que devo fazer?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.