Jump to content

Recommended Posts

Posted

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

Posted

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.

Posted

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

Posted

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()
Posted

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 😄

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?

Posted

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 😄

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!!

Fikem Bem!!!Miguel Duarte - (SoulOnFire)O meu BLOG - XAML E WPF - http://wpfpt.wordpress.com/

Posted

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 😄 Aconselho...  😄

Posted

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?

Posted

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.

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.