MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Valor de um campo no evento DblClick ListView

    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 28/12/2012, 17:05

    Boa tarde !

    Usando o Listbox eu pego o valor de um campo ao clicar da seguinte forma..
    variável = Me.LisBox.Column(0)

    Mas com o Listview não encontrei a propriedade column.. testei value também não funcionou
    Alguém sabe me dizer como pego o valor de um campo do ListView da linha selecionada ?

    Obrigado pela atenção !
    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 29/12/2012, 20:40

    Vamos la...

    ListView é totalente diferente de listBox.. e todos seus comandos são feitos viaVba e até alguns eventos não estão listado nas propriedades em eventos, por exemplo o DblClick...

    Nas declarações do Módulo do form deve declarar os controles active x, lembrando que como é possível inserir imagens na listView, para isso deves colocar tambem o controle imagem


    '**********************************************************************************************
    ' Este controle requere a referência Microsoft Windows Common Controls 6.0 (SP6) MSCOMCTL.ocx
    '**********************************************************************************************
    ' Declara o controle ActiveX
    Private lvxObj As MSComctlLib.ListView
    Private lstItem As MSComctlLib.ListItem
    '**********************************************************************************************



    Ao carregar o form deve especifica o nome do objeto


    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ' Configura o OBjeto List View object
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    'Define o objeto listview , observe que faz referencia a lista apropriada, no caso o nome da lista aqui é lstMensalidade
    Set lvxObj = Me.lstMensalidade.Object

    'Inicializa o controle imagem para icones pequenos

    lvxObj.SmallIcons = Me.axImageList.Object

    'Seta os checkBoxe como false
    lvxObj.CheckBoxes = Not lvxObj.CheckBoxes
    'Chama a função que carrega a lista
    Call fLoadList


    Para as colunas a listView trabalha com Item e subItens... a primeira coluna será entendida como ìtem e o restante como subÍtens

    A primeira coluna da lista >>>>>>>>> lvxObj.SelectedItem
    Demais colunas >>>>>>>>>>>>>>> lvxObj.SelectedItem.ListSubItems.Item(5)

    Onde o numero 5 representa a coluna.

    Abaixo segue um código completo de DblClick de uma listView
    Código:

    'Duplo click da lista
    Private Sub lstMensalidade_DblClick()
    On Error GoTo Trataerro
    Dim MSG, Msg1 As String
    Dim StrValor As Double
    Dim StrNumDoc As String
    PlaySound fLocalBd & "\div\sons\click.wav", 1, 1

    'Carrega na variável a ID da coluna Id_Salario
    StrID = lvxObj.SelectedItem
    StrNumDoc = lvxObj.SelectedItem.ListSubItems.Item(2)


    If XExcluir = False Then
        PlaySound fLocalBd & "\div\sons\msg_err.wav", 1, 1
        MsgBox "Você não tem permissão para realizar este procedimento", vbCritical, "NEGADO"
        Exit Sub
    Else


    Classifica = True
    '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    'Esta parte é executada caso a mensalidade esteja marcada como paga
      If lvxObj.SelectedItem.ListSubItems.Item(9) = "PAGO" Then
                'Menssagem direcionada quando o registro encontra-se marcado como pago
                'Caso positivo pode estornar ou encerrar a sub
                Msg1 = MsgBox("Esta mensalidade ja está marcada como Paga." _
                        & vbNewLine & "Deseja Estonar este Pagamento?", vbYesNo + vbQuestion, "MENSALIDADE QUITADA")
                        'Encerra a sub
                        If Msg1 = vbNo Then
                            Exit Sub
                        Else
                            'Vai para a lina EstornarMensalidade
                            GoTo EstornarMensalidade
                        End If
    Else
    '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    'Esta parte é executada caso já tenha sido recebido algum valor da mensalidade
    'Este comando pega o texto contido dentro de uma determinada coluna da lista no registro clicado
    If lvxObj.SelectedItem.ListSubItems.Item(11) <> "" Then
    Dim StrValorRes As Double, StrValorPago As Double, StrValorTotal As Double

        StrValorRes = CDbl(lvxObj.SelectedItem.ListSubItems.Item(11))
        'Mensagem para o recebimento do residual da mensalidade quando ja fora recebido parte da mesma
        Msg1 = MsgBox("Receber o Residual da Mensalidade?." _
                        & vbNewLine & "" _
                        & vbNewLine & "Caso recebimento parcial, tecle >> NÂO <<" _
                        & vbNewLine & "" _
                        & vbNewLine & "Caso deseje estornar o valor" _
                        & vbNewLine & "já recebido Tecle >> CANCELA <<", vbYesNoCancel + vbQuestion, "ATENÇÃO")
            If Msg1 = vbNo Then
                            StrValor = CDbl(InputBox("Informe o valor Recebido:", "Atenção!"))
                                'Checa se  valor digitado na imputbox é maior que o valor residual da parcela
                                'Caso positivo emite mensagem e encerra a sub
                                If StrValor > lvxObj.SelectedItem.ListSubItems.Item(11) Then MsgBox "O Valor digitado é maior que" _
                                                                                            & vbNewLine & "o valor residual do débito." _
                                                                                            & vbNewLine & "Esta operação será cancelada", vbCritical, "CANCELADO": Exit Sub
                    DoCmd.SetWarnings False
                            'Atualiza a tblMensalidade
                            CurrentDb.Execute "UPDATE tblMensalidade SET tblMensalidade.CpValorPago = " & Str(StrValor) & " + CpValorPago, CpDataPagto = #" & Format(Date, "dd/mm/yyyy") & "#" _
                            & " WHERE tblMensalidade.ID_Mens = " & StrID & ";"
                            'Lança o recebimento da mensalidade no caixa
                            DoCmd.RunSQL ("INSERT INTO Lancamento (Data,DataVenc, Conta, NumDoc, Historico,Entrada, TipoDoc, cpUsuario,CpIdMens)" _
                                            & " Values(""" & Format(Date, "dd/mm/yyyy") & """,""" & Format(lvxObj.SelectedItem.ListSubItems.Item(6), "dd/mm/yyyy") & """,'RECEITAS',""" & StrNumDoc & """," _
                                            & "'Rec.Parcial Mensalidade - " & tx1 & "',""" & Str(StrValor) & """," _
                                            & "'1',""" & Usuario & """,""" & StrID & """)")
                    DoCmd.SetWarnings True
                    Call fLoadList
                    Classifica = False
                    PlaySound fLocalBd & "\div\sons\msg_afi.wav", 1, 1
            ElseIf Msg1 = vbYes Then
            'Menssagem de confirmação para o pagamento da mensalidade
            'Caso positivo exdecuta consulta de atualização para sim e executa atualização na tabela no registro específico
                    DoCmd.SetWarnings False
                    'Essa consulta atualiza o registro salario para pago
                    StrValorPago = CDbl(DLookup("CpValorPago", "tblMensalidade", "ID_Mens = " & StrID & ""))
                    StrValorTotal = StrValorPago + StrValorRes
                    'Atualiza a tblMensalidade
                    CurrentDb.Execute "UPDATE tblMensalidade SET tblMensalidade.CpSituaçao = 1, tblMensalidade.CpValorPago = """ & Str(StrValorTotal) & """," _
                                            & " CpDataPagto = #" & Format(Date, "dd/mm/yyyy") & "#  WHERE tblMensalidade.ID_Mens = " & StrID & ";"
                    'Essa consulta lança o valor da mensalidade no caixa
                    DoCmd.RunSQL ("INSERT INTO Lancamento (Data,DataVenc, Conta, NumDoc, Historico,Entrada, TipoDoc, cpUsuario,CpIdMens)" _
                                & " Values(""" & Format(Date, "dd/mm/yyyy") & """,""" & Format(lvxObj.SelectedItem.ListSubItems.Item(6), "dd/mm/yyyy") & """,'RECEITAS',""" & StrNumDoc & """," _
                                & "'Rec. Mensalidade - " & tx1 & "',""" & lvxObj.SelectedItem.ListSubItems.Item(11) & """," _
                                & "'1',""" & Usuario & """,""" & StrID & """)")
                    DoCmd.SetWarnings True
                    'Som
                    PlaySound fLocalBd & "\div\sons\msg_afi.wav", 1, 1
            'Carrega a listView
            Call fLoadList
            Classifica = False
            ElseIf Msg1 = vbCancel Then GoTo EstornarMensalidade
    End If
    Exit Sub
    Else
    '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    'Esta parte é executada para o recebimento total da mensalidade
    Dim StrValorTotal1
    If DCount("*", "CNR1", "Id_Mensalidade = " & StrID & "") = 0 Then GoTo Continuar
    If DCount("*", "CNR1", "Id_Mensalidade = " & StrID & "") = 1 Then
    Msg1 = MsgBox("Existe Boleto emitido para esta Mensalidade." _
            & vbNewLine & "Caso o Boleto tenha sido quitado no Banco," _
            & vbNewLine & "De a quitação na aba <<BOLETOS EMITIDOS>>" _
            & vbNewLine & " " _
            & vbNewLine & "Boleto pago no Banco?", vbYesNo, "BOLETO EMITIDO PARA MENSALIDADE")
           
            If Msg1 = vbYes Then: Exit Sub
            If Msg1 = vbNo Then

    Continuar:
    Msg1 = MsgBox("Receber a totalidade da Mensalidade?." _
                        & vbNewLine & "Caso recebimento parcial, tecle >> NÂO <<", vbYesNo + vbQuestion, "ATENÇÃO")
                    If Msg1 = vbNo Then
                            StrValor = CDbl(InputBox("Informe o valor Recebido:", "Atenção!"))
                                'Checa se  valor digitado na imputbox é maior que o valor da mensalidade + lanche
                                'Caso positivo emite mensagem e encerra a sub
                                StrValorTotal1 = CDbl(lvxObj.SelectedItem.ListSubItems.Item(4)) + CDbl(lvxObj.SelectedItem.ListSubItems.Item(5))
                                If StrValor > StrValorTotal1 Then PlaySound fLocalBd & "\div\sons\msg_err.wav", 1, 1: MsgBox "O Valor digitado é maior que" _
                                                                                                                        & vbNewLine & "o valor do débito, esta" _
                                                                                                                        & vbNewLine & "operação será cancelada", vbCritical, "CANCELADO": Exit Sub
                    DoCmd.SetWarnings False
                            'Atualiza a tblMensalidade para paga
                            CurrentDb.Execute "UPDATE tblMensalidade SET tblMensalidade.CpValorPago = " & Str(StrValor) & ", CpDataPagto = #" & Format(Date, "dd/mm/yyyy") & "#" _
                            & " WHERE tblMensalidade.ID_Mens = " & StrID & ";"
                            Call fLoadList
                            'Lança o rcebimento no caixa
                            DoCmd.RunSQL ("INSERT INTO Lancamento (Data,DataVenc, Conta, NumDoc, Historico,Entrada, TipoDoc, cpUsuario,CPIdMens)" _
                                            & " Values(""" & Format(Date, "dd/mm/yyyy") & """,""" & Format(lvxObj.SelectedItem.ListSubItems.Item(6), "dd/mm/yyyy") & """,'RECEITAS',""" & StrNumDoc & """," _
                                            & "'Rec.Parcial Mensalidade - " & tx1 & "',""" & StrValor & """," _
                                            & "'1',""" & Usuario & """,""" & StrID & """)")
                    DoCmd.SetWarnings True
                    PlaySound fLocalBd & "\div\sons\msg_afi.wav", 1, 1
                            Exit Sub
    Else
            'Menssagem de confirmação para o pagamento da mensalidade
            'Caso positivo exdecuta consulta de atualização para sim
            MSG = MsgBox("Confirma pagamento desta Mensalidade?" & Chr(10) & Chr(10) & "Mês Ref.: " & lvxObj.SelectedItem.ListSubItems.Item(3) & "" _
                        & vbNewLine & "Valor ....: " & lvxObj.SelectedItem.ListSubItems.Item(4) & "" _
                        & vbNewLine & "Lanche ....: " & lvxObj.SelectedItem.ListSubItems.Item(5), vbExclamation + vbYesNo + vbDefaultButton2, "PAGAMENTO")
                'Caso negativa a resposta encerra a sub
                If MSG = vbNo Then Exit Sub
                    'Caso positiva executa atualização na tabela no registro específico
                    DoCmd.SetWarnings False
                    'Essa consulta atualiza o registro salario para pago
                    CurrentDb.Execute "UPDATE tblMensalidade SET tblMensalidade.CpSituaçao = 1,  CpDataPagto = #" & Format(Date, "dd/mm/yyyy") & "#, CpValorPago = CpValor + CpLanche" _
                            & " WHERE tblMensalidade.ID_Mens = " & StrID & ";"
                    'Essa consulta lança o valor da mensalidade no caixa
                    StrValorTotal1 = CDbl(lvxObj.SelectedItem.ListSubItems.Item(4)) + CDbl(lvxObj.SelectedItem.ListSubItems.Item(5))
                    DoCmd.RunSQL ("INSERT INTO Lancamento (Data,DataVenc, Conta, NumDoc, Historico,Entrada, TipoDoc, cpUsuario, CpIdMens)" _
                                & " Values(""" & Format(Date, "dd/mm/yyyy") & """,""" & Format(lvxObj.SelectedItem.ListSubItems.Item(6), "dd/mm/yyyy") & """,'RECEITAS',""" & StrNumDoc & """," _
                                & "'Rec. Mensalidade - " & tx1 & "',""" & StrValorTotal1 & """," _
                                & "'1',""" & Usuario & """,""" & StrID & """)")
                    'Esta consulta marca o boleto como pago, caso seja efetuado o recebimento na escola
                    CurrentDb.Execute "UPDATE CNR1 SET CpQuitado = 1, CpDtaPag = Format(Date(),'mm/dd/yyyy')  WHERE Id_Mensalidade = " & StrID & ";"
                    'Faz um requery na lstBoletos
                    Me.lstBoletos.Requery
                    DoCmd.SetWarnings True
                    'Som
                    PlaySound fLocalBd & "\div\sons\msg_afi.wav", 1, 1
            'Carrega a listView
            Call fLoadList
            Classifica = False
            Exit Sub
    'Estorna o pagamento fazendo atualização do registro clicado para não
    EstornarMensalidade:
            'Atualiza a tblMensalidade para o estorno
            CurrentDb.Execute "UPDATE tblMensalidade SET tblMensalidade.CpSituaçao = 0, CpDataPagto = Null, CpValorPago = Null" _
                            & " WHERE tblMensalidade.ID_Mens = " & StrID & ";"
            'Atualiza a CNR1 para o estorno
            CurrentDb.Execute "UPDATE CNR1 SET CpQuitado = 0, CpDtaPag = Null  WHERE Id_Mensalidade = " & StrID & ";"
            'Exclui o lançamento do Caixa
            CurrentDb.Execute " DELETE * From Lancamento WHERE CpIDMens = " & StrID & ";"
            'Carrega a listView
            Call fLoadList
            Me.lstBoletos.Requery
            'Atualiza a lista
            'Menssagem de confirmação
            MsgBox "Mensalidade Estornada", vbInformation, "ESTORNADA"
    End If
    End If
    End If
    End If
    End If
    End If
    Exit Sub
    'Tratamento de erros
    Exit_TrataErro:
        DoCmd.Hourglass False
        DoCmd.Echo True
    Exit Sub
     
    Trataerro:
    If err.Number = 91 Then
    Exit Sub
    ElseIf err.Number = 13 Then
    Exit Sub
    Else
     DoCmd.Hourglass False
     DoCmd.Echo True
     MSG = "Erro # " & Str(err.Number) & " gerado na: lstMensalidade_DblClick()" _
     & vbNewLine & vbNewLine & "Descrição: " & err.Description _
     & vbNewLine & vbNewLine & "Por favor contate o Administrador de Sistema."
     MsgBox MSG, vbMsgBoxHelpButton + vbCritical, "Erro", err.Helpfile, err.HelpContext
     Resume Exit_TrataErro
    End If
    End Sub


    Bons Estudos.
    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 30/12/2012, 14:01

    Obrigado Piloto !

    Vou estudar esse exemplo mas só uma pergunte e desculpe se parecer ignorante mas quando voce diz "declarações do Módulo do form" ,o que necessariamente tenho que fazer ? onde faco a referencia ao controle ?

    Onde declaro esse controle ? no proprio form onde esta o ListView ?
    Private lvxObj As MSComctlLib.ListView
    Private lstItem As MSComctlLib.ListItem


    Obrigado sempre pelas ajudas aqui no forum !

    Feliz Ano Novo!
    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 30/12/2012, 14:34

    No módulo do form, abaixo da instrução

    Option Compare Database
    Option Explicit
    >>>> Aqui <<<<<

    No repositório tem dois ou tres exemplos de listView.. De uma olhadinha por la.


    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 31/12/2012, 12:05

    Obrigado Piloto!

    Conseguir resolver seguindo o seu exemplo ficou assim caso alguem precise um dia...


    Option Compare Database
    Private lvxObj As MSComctlLib.ListView
    Private lstItem As MSComctlLib.ListItem


    Private Sub Form_Load()
    Set lvxObj = Me.LstView_Relatorio.Object
    End Sub

    Private Sub LstView_Relatorio_DblClick()
    StrID = lvxObj.SelectedItem
    End Sub



    Obrigado pela Ajuda!


    Última edição por rafaeljunio.ti em 31/12/2012, 12:38, editado 1 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 31/12/2012, 12:36

    So errou o Nome... Sou o Piloto.. hehehe



    O Fórum agradece o Retorno.



    Feliz Ano Novo!
    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 31/12/2012, 12:39

    Perdão Piloto !
    Estava lendo outro tópico do Criquio e acabei digitando errado.

    Obrigado !
    avatar
    Convidado
    Convidado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Convidado 31/12/2012, 13:35

    Contudo, considerando que boa parte do que aprendi fora com o Mestre Criquio, agradeçamos a ele Tambem.

    O Fórum agradece o Reotorno.

    Conteúdo patrocinado


    [Resolvido]Valor de um campo no evento DblClick ListView Empty Re: [Resolvido]Valor de um campo no evento DblClick ListView

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 09:28