• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

overcloked

[vb.net 2005] Populate uma listview tendo o Procedimento num modulo

11 mensagens neste tópico

Ppl fiz um procedimento para ir buscar dados a uma BD em Access o problema e que tenho um modulo só para guardar as queries e assim não consigo inserir dados na listview só consigo se correr o procedimento dentro da form code, tenho de dar permissões de alguma maneira para poder "escrever" dados atravez do modulo?

O codigo é o seguinte:

    Public Sub ClientsSearch()
        'DB Connection Variables/Objects
        Dim Query = "SELECT * FROM CG_Clientes"
        Dim Connection As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DdPath & ";User Id=admin;Password=;")
        Dim Command As OleDbCommand
        Dim Reader As OleDbDataReader

        'Listview Variables/Objects
        Dim cnt As Short
        Dim ItemsList As ListViewItem
        Dim strTeste As String


        Try


            Connection.Open()
            Command = New OleDbCommand(Query, Connection)
            Reader = Command.ExecuteReader(CommandBehavior.CloseConnection)
            ChildRemAltClient.ListView.Items.Clear()
            Do While Reader.Read

                ItemsList = New ListViewItem
                strTeste = IIf(Reader.IsDBNull(0), "", Reader.GetValue(0))
                ItemsList.Text = strTeste

                For cnt = 1 To Reader.FieldCount() - 1

                    If Reader.IsDBNull(cnt) Then
                        ItemsList.SubItems.Add("")
                    Else
                        ItemsList.SubItems.Add(Reader.GetValue(cnt))
                    End If

                Next cnt

                ChildRemAltClient.ListView.Items.Add(ItemsList)

            Loop

        Catch ex As Exception
            WritteDebug(ex.ToString)
            MsgBox(Erro, MsgBoxStyle.Critical)
        Finally
            Reader.Close()
            Connection.Close()
        End Try

    End Sub

E tou a chamar este procedimento na form ChildRemAltClient

    Private Sub BtoClientSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtoClientSearch.Click
        Call ClientsSearch()
    End Sub

Se alguem tiver alguma pista do porquê isto não dar desta forma, let me know... TKs

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pelo que eu estou a ver no codigo tu tas a criar a listview programaticamente, tas adicionar items a essa listview mas depois não adicionas a listview ao form, não queres que ela por magia apareça no form pois n? ou então tou a perceber mal o que tens...

mas se percebi bem, tens duas hipoteses, ou adicionas a listview ao form programaticamente ou crias a listview visualmente no form que pretendes e depois passas como argumento para esse procedimento o handler do form em questão para puderes adicionares os items a essa listview.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

deve, mas não está adicionar os items a ela, está criar uma nova programaticamente mas depois não faz nada com ela...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tenho a ListView crada a partir do Designer:

E sim faço alguma coisa com ela, nesta linha:

ChildRemAltClient.ListView.Items.Add(ItemsList)

onde ChildRemAltClient é a Form, ListView é o nome da ListView !!

O mais estranho é que se puser dentro do codigo da Form e claro substituir o ChildRemAltClient. por Me. ele funciona.

De acrescentar que estou a usar Child forms e uso o codigo para as gerrar:

        Dim NewMDIChild As New ChildRemAltClient
        NewMDIChild.MdiParent = Me
        NewMDIChild.Show()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem... depois de andar as voltas com isto pus o codigo dentro da form e ficou a funcionar como deve ser.

Para meu espanto (ou não) pus um procedimento para limpar as caixas de texto de uma form dentro de um modulo e tabém não consigo fazer com que elas funcionem :D

o Codigo é este....

   Public Sub CleanAddClient()
       'Clean all text in texboxes at addClient Form
       ChildAddClient.TxtName.Text = ""
       ChildAddClient.TxtMorada.Text = ""
       ChildAddClient.TxtCodigoPostal.Text = ""
       ChildAddClient.TxtLocalidade.Text = ""
       ChildAddClient.TxtTelefone1.Text = ""
       ChildAddClient.TxtTelefone2.Text = ""
       ChildAddClient.TxtEmail.Text = ""
       ChildAddClient.TxtNrContribuinte.Text = ""
   End Sub

onde a ChildAddClient é o nome da Form, n consigo perceber pq que n limpa...! Tenho a certeza que ja fiz isto, será por tar a usar Child Forms?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem... depois de andar as voltas com isto pus o codigo dentro da form e ficou a funcionar como deve ser.

Para meu espanto (ou não) pus um procedimento para limpar as caixas de texto de uma form dentro de um modulo e tabém não consigo fazer com que elas funcionem :D

o Codigo é este....

   Public Sub CleanAddClient()
       'Clean all text in texboxes at addClient Form
       ChildAddClient.TxtName.Text = ""
       ChildAddClient.TxtMorada.Text = ""
       ChildAddClient.TxtCodigoPostal.Text = ""
       ChildAddClient.TxtLocalidade.Text = ""
       ChildAddClient.TxtTelefone1.Text = ""
       ChildAddClient.TxtTelefone2.Text = ""
       ChildAddClient.TxtEmail.Text = ""
       ChildAddClient.TxtNrContribuinte.Text = ""
  End Sub

onde a ChildAddClient é o nome da Form, n consigo perceber pq que n limpa...! Tenho a certeza que ja fiz isto, será por tar a usar Child Forms?

Experimenta o seguinte

mete como parametro uma varivel do tipo System.Windows.Forms.Form (ex. Fr as System.Windows.Forms.Form)

depois em vez de meteres ChildAddClient.xxxxx

metes Fr.xxxx

No final ao chamares a função da ChildAddClient metes  CleanAddClient(Me)

deve funcionar!!

depois diz kk coisa!!

Fika bem!!

Miguel Duarte!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ora....

FOSSSSGGGGGGAAAAA-SSSEEEEE

depois de gritar posso passar a explicar o porquê do grito, para já, já consegui...

SoulOnFire apesar de ter visto a tua resposta tarde era mesmo isso que faltava, encontrei este link http://www.devcity.net/Articles.aspx?a=ViewArticle&ArticleID=117 onde explica isso tudo.

Tive de declarar variaveis assignadas às forms e depois em cada form onload dizer que a variavel correspondente à form era variavel = me. Tecnicamente:

'No modulo
Friend Form_AddClient As ChildAddClient

'Na form
    Private Sub ChildAddClient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Form_AddClient = Me
    End Sub

depois para mudar os atriutos dos objectos da form é só fazer:

Form_AddClient.TxtName.Text = ""

e é isto mais um dia mais uma coisa nova aprendida :) Apesar das dores de cabeça cada vez gosto mais de dot net a sua maneira peculiar de construção das coisas é exelente depois de aprendida :D Aconselho...  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mudei o titulo do post acrescentando o [RESOLVIDO] era para mudar mesmo o titulo mas n sei o que hei-de por para ajudar outras pessoas que procurem por um erro tipo este.

Alguma ideia do que poderei por no titulo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não precisas de pôr nada, todos os topics com dúvidas já resolvidas são movidos para a Hot topic's sendo esta o local ideial para um user que proventura tenha a mesma dúvida poder procurar somente lá.

No entanto agradeço por assinalares aos mod's que a tua dúvida já foi resolvida  estando o thread pronto para ser movido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora