MaximoAccess

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

Obrigado

Administração do MaximoAccess


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.

Obrigado

Administração do MaximoAccess

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]colocar dados de uma listbox em uma matriz

    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 8/10/2017, 14:04

    Bom dia! Já pesquisei bastante e não encontro nada sobre como usar matriz, alguém sabe de algum site? tem bastante dizendo o que é uma matriz, mas não como usa-la, o que eu quero e pegar os dados de uma listbox, colocar na matriz, editar uma coluna e devolver na listbox.

    é o seguinte:
    na listbox tem uma coluna desconto, quando vou dar desconto em um produto só, eu pego a linha coloco em um array,deleto a linha da listbox, edito a coluna no array e devolvo pra listbox, mas pra dar desconto em todos os produtos eu fiz com for next mas não funciona, tem que ser com matriz mas não consigo fazer.
    Agradeço qualquer ajuda.



    Bom dia! Quebrando a cabeça consegui fazer, mas preciso redimensionar a matriz, pra teste fiz assim, dim strProdutos (5,7) as string
    funcionou beleza, mas agora acho que tenho que começar a matriz em (0,7) e ir redimensionando a cada produto, alguém tem uma ideia?
    Obrigado.


    Última edição por joão2017 em 9/10/2017, 13:06, editado 1 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7871
    Registrado : 05/11/2009

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  Alexandre Neves 8/10/2017, 14:41

    Boa tarde,
    Movi-lhe a dúvida para esta sala por não se tratar de Relatórios


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 8/10/2017, 15:20

    Obrigado,desculpe o erro.
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 9/10/2017, 13:37

    Bom dia! Quebrando a cabeça consegui fazer, mas preciso redimensionar a matriz, pra teste fiz assim, dim strProdutos (5,7) as string
    funcionou beleza, mas agora acho que tenho que começar a matriz em (0,7) e ir redimensionando a cada produto, alguém tem uma ideia?
    Obrigado.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 368
    Registrado : 23/01/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  thiagomcosta 9/10/2017, 13:47

    Utilize a função REDIM PRESERVE
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 9/10/2017, 14:09

    Bom dia! To fazendo uma pesquisa sobre redim preserve, mas ainda não achei como usar.
    Obrigado
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 9/10/2017, 15:42

    Bom dia! com a matriz strProdutos(5,7) funciona bem, eu adiciono 5 produtos com 7 colunas, para dimensionar dinamicamente eu devo colocar assim strProdutos(), mas e pra redimensionar? tentei assim:

    Dim n As Integer
    n = 1
    ReDim Preserve strProdutos(n, 7)
    n = n + 1
    mas da erro fora do intervalo, alguém pra me dar uma ideia?

    Obrigado.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 368
    Registrado : 23/01/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  thiagomcosta 9/10/2017, 15:45

    Se não me engano a função REDIM PRESERVE somente altera a ultima dimensão da matriz.
    Tente inverter as dimensoes e ver se funciona.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7871
    Registrado : 05/11/2009

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  Alexandre Neves 9/10/2017, 16:48

    Boa tarde,
    Só poderá alterar a última dimensão mas precisa (julgo eu) inicializar a matriz com dimensões ex. strProdutos(1,1)
    ideia: percorra o que pretende para dimensionar correctamente a matriz e volte a percorrer o que pretende para carregar os dados na matriz que já está dimensionada à medida


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 9/10/2017, 17:18

    Boa tarde!Se eu iniciar a matriz como strProdutos(1,1) diz que a matriz ja esta dimensionada.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7871
    Registrado : 05/11/2009

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  Alexandre Neves 9/10/2017, 18:33

    realmente tem razão
    a razão é pela alteração da segunda dimensão
    percorra o ciclo para saber qual a dimensão que vai criar a matriz e só depois percorra o ciclo de preenchimento


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 9/10/2017, 19:12

    Amigo é o seguinte:
    eu decalro a matriz como strProdutos()
    no botão que clico para teste eu dimensiono ela para ReDim Preserve strProdutos(1, 7), isso me permite adicionar um produto.
    mas se eu for redimensinar mais uma vez,ja não aceita, diz que ta fora de intervalo.
    só aceita eu redimensionar se tiver como strProdutos().
    acho que teria que pegar a dimensão via codigo e depois incrementar.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 368
    Registrado : 23/01/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  thiagomcosta 9/10/2017, 20:10

    Faça a transposição da matriz. Trabalhe com a matriz com tamanhos (7,n) e veja se funciona.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3711
    Registrado : 04/04/2010

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  Avelino Sampaio 9/10/2017, 21:02

    João,

    "o que eu quero e pegar os dados de uma listbox, colocar na matriz, editar uma coluna e devolver na listbox."

    Tenho curiosidade como está fazendo isso. Está alterando a propriedade RowSource de que forma ? Trata-se de uma lista de valores ? Pode mostrar a parte do código ?

    Aguardamos
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 9/10/2017, 23:03

    Boa noite!Segue o código:
    Public function strProdutos (5,7) sem dimensionar só adiciona 5 produtos.
    listbox = lisProdutos

    Função para carregar a matriz:
    Dim i As Integer
    Dim X As Integer
    X = 0
    For i = 0 To listProdutos.ListCount - 1
    strProdutos(X, 0) = Me.listProdutos.Column(0, i)
    strProdutos(X, 1) = Me.listProdutos.Column(1, i)
    strProdutos(X, 2) = Me.listProdutos.Column(2, i)
    strProdutos(X, 3) = Me.listProdutos.Column(3, i)
    strProdutos(X, 4) = Me.listProdutos.Column(4, i)
    strProdutos(X, 5) = Me.listProdutos.Column(5, i)
    strProdutos(X, 6) = Me.listProdutos.Column(6, i)
    X = X + 1
    Next i
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    função que edita a coluna que preciso, no caso a coluna 4, a coluna de desconto
    Dim i As Integer
    Dim X As Integer
    X = 0
    For i = 2 To 7
    strProdutos(X, 4) = Me.txtDesconto
    X = X + 1
    Next i

    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    Função que devolve tudo pra listbox ja editado:
    Dim codProduto As String, strDescrição As String, strQuant As String, strPreçoDeVenda As String, strDesconto As String, strDescontomàximo As String, strTotal As String
    Dim i As Integer
    Dim X As Integer
    Dim y As Integer
    For i = 0 To 5
    codProduto = strProdutos(X, 0)
    strDescrição = strProdutos(X, 1)
    strQuant = strProdutos(X, 2)
    strPreçoDeVenda = strProdutos(X, 3)
    strDesconto = strProdutos(X, 4)
    strDescontomàximo = strProdutos(X, 6)
    strTotal = strProdutos(X, 5)
    Form_for_PedidosDeProdutos.listProdutos.AddItem (codProduto & " ; " & strDescrição & " ; " & strQuant & " ; " & strPreçoDeVenda & " ; " & strDesconto & " ; " & strTotal & " ; " & strDescontomàximo)
    X = X + 1
    Next i
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    Tem tambem a função que limpa a matriz mas de tanto eu mexer pra redimensionar a matriz, começou a dar erro, tenho que arrumar

    Function limpaMatriz()
    Dim i As Integer
    Dim X As Integer
    X = 0
    For i = 0 To 6
    strProdutos(X, 0) = ""
    strProdutos(X, 1) = ""
    strProdutos(X, 2) = ""
    strProdutos(X, 3) = ""
    strProdutos(X, 4) = ""
    strProdutos(X, 5) = ""
    X = X + 1

    Next i

    End Function

    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Código do botão

    PreencheMatrizProduto
    listProdutos.RowSource = ""
    DoCmd.OpenForm "for_Desconto1", , , , acFormAdd, acDialog
    PreencheListBox
    limpaMatriz
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    A função que edita a coluna tá no formulário desconto1, apos atualizar do campo txtDesconto.

    Não sou programador, faço isso só por gostar, qualquer coisa errada nesses códigos aceito sugestões.
    Valeu.

    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 10/10/2017, 03:51

    Boa noite pessoal! Não sou programador mas enquanto não encontro a solução não desisto.
    Encontrei a solução.
    Amanha eu posto.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3711
    Registrado : 04/04/2010

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  Avelino Sampaio 10/10/2017, 09:08

    João,

    veja esta alternativa, aonde usei as funções Split() e Join()

    A função split() transforma uma lista em uma matriz.
    A função Join() transforma uma matriz em uma lista.

    Bom estudo!
    Anexos
    [Resolvido]colocar dados de uma listbox em uma matriz AttachmentListBoxJoao2017.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (23 Kb) Baixado 26 vez(es)
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 10/10/2017, 13:00

    Bom dia! Vou dar uma olhada.
    Obrigado
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 10/10/2017, 13:33

    Bom dia! Já consegui fazer o que eu queria.Vou repassar e posto.
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 10/10/2017, 16:03

    Bom dia! Segue o código funcionando direitinho.

    Function PreencheMatrizProduto()
    Dim y As Integer
    Dim i As Integer
    Dim X As Integer
    y = listProdutos.ListCount - 1
    X = 0
    ReDim strProdutos(0 To y, 7)
    For i = 0 To UBound(strProdutos)
    strProdutos(X, 0) = Me.listProdutos.Column(0, i)
    strProdutos(X, 1) = Me.listProdutos.Column(1, i)
    strProdutos(X, 2) = Me.listProdutos.Column(2, i)
    strProdutos(X, 3) = Me.listProdutos.Column(3, i)
    strProdutos(X, 4) = Me.listProdutos.Column(4, i)
    strProdutos(X, 5) = Me.listProdutos.Column(5, i)
    strProdutos(X, 6) = Me.listProdutos.Column(6, i)
    X = X + 1
    Next i


    End Function

    Function PreencheListBox()
    Dim codProduto As String, strDescrição As String, strQuant As String, strPreçoDeVenda As String, strDesconto As String, strDescontomàximo As String, strTotal As String
    Dim i As Integer
    Dim X As Integer
    Dim y As Integer
    For i = 0 To UBound(strProdutos)
    codProduto = strProdutos(X, 0)
    strDescrição = strProdutos(X, 1)
    strQuant = strProdutos(X, 2)
    strPreçoDeVenda = strProdutos(X, 3)
    strDesconto = strProdutos(X, 4)
    strDescontomàximo = strProdutos(X, 6)
    strTotal = strProdutos(X, 5)
    Form_for_PedidosDeProdutos.listProdutos.AddItem (codProduto & " ; " & strDescrição & " ; " & strQuant & " ; " & strPreçoDeVenda & " ; " & strDesconto & " ; " & strTotal & " ; " & strDescontomàximo)
    X = X + 1
    Next i


    End Function

    Function limpaMatriz()
    Dim i As Integer
    Dim X As Integer

    For i = 0 To UBound(strProdutos)
    strProdutos(X, 0) = ""
    strProdutos(X, 1) = ""
    strProdutos(X, 2) = ""
    strProdutos(X, 3) = ""
    strProdutos(X, 4) = ""
    strProdutos(X, 5) = ""
    X = X + 1

    Next i
    End Function

    botão para dar desconto
    PreencheMatrizProduto
    listProdutos.RowSource = ""
    DoCmd.OpenForm "for_Desconto1", , , , acFormAdd, acDialog
    PreencheListBox
    limpaMatriz

    após atualizar da txtDesconto do formulario desconto1

    Dim i As Integer
    Dim X As Integer
    Dim y As Integer
    Dim z As Integer
    X = 0
    For i = 0 To UBound(strProdutos)
    y = strProdutos(X, 6)
    z = Me.txtDesconto
    If y < z Then
    MsgBox "Atenção!O desconto máximo é de" & y
    strProdutos(X, 4) = y
    Else
    strProdutos(X, 4) = z
    End If
    X = X + 1
    Next i
    DoCmd.Close

    o problema de dimensionar a matriz resolvi assim:

    declarei a matriz strProdutos()

    conta as linhas da listbox menos 1 porque a matriz conta do 0
    y = listProdutos.ListCount - 1

    redimensiona a matriz para 0 a y
    ReDim strProdutos(0 To y, 7)

    aqui ta tudo funcionando perfeitamente.
    Obrigado a todos que responderam.
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 11/10/2017, 12:30

    Bom dia! Esse trabalho todo foi pra eu fazer uma tela totalmente desvinculada das tabelas, só usa a tabela na hora de finalizar o pedido,
    fiz isso imaginando que o programa vai ficar mais rápido na rede, meu programa trabalha em rede de 3 pc, e fica lento, isso realmente vai deixar mais rapido ou eu estou enganado?

    obrigado.
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 11/10/2017, 20:24

    Avelino, o exemplo que me mando é nota 10. fiz um baita de um código e vc fez a mesma coisa com poucas linhas, mas eu não consegui
    decifrar nada, vc poderia comentar? o que eu fiz funciona direitinho mas se eu entender o que você me passou acho mais interessante usar ele.

    Obrigado.
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 11/10/2017, 21:56

    Boa tarde! To enviando o bd para vocês darem uma olhada.
    Anexos
    [Resolvido]colocar dados de uma listbox em uma matriz Attachmentmatriz.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (314 Kb) Baixado 14 vez(es)
    avatar
    jntrindade
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 276
    Registrado : 07/12/2009

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  jntrindade 12/10/2017, 01:42

    boa noite ficou bem legal, eu acho que so tem que emplementar a baixa no estoque.
    avatar
    joão2017
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 16/09/2017

    [Resolvido]colocar dados de uma listbox em uma matriz Empty Re: [Resolvido]colocar dados de uma listbox em uma matriz

    Mensagem  joão2017 12/10/2017, 03:02

    Boa noite!Na verdade isso foi só um teste, agora vou implementar no meu sistema que uso.

    Obrigado.

      Data/hora atual: 6/3/2021, 14:54