Vamos ao aprendizado... Não vou te enviar o arquivo de volta, te falarei as correções para que você entenda e as aplique..
Bem:
1 - No meu exemplo eu faço uma contagem em todos os ítems da tabela para carregar a variável N, N Será utilizada para Redefinir o tamanho da Matriz: K(1 To N) Então se N for por exemplo = 3 K será:
K(1 to 3), teremos assim: K(1), K(2), K(3).
Esta Matriz contera então os valores dos registros 1,2,3 respectivamente em sua posições. Por isto é necessário renumerar o registro com a função GetNumberLine pois K(1) conterá o registro 1, K(2) conterá o registro 2 e assim sucessivamente. Isto não daria certo pelo código pois seriam números diferentes.
Como o subform suas dívidas é baseada no cliente, não pode utiliza para carregar N o CodProduto e sim do CodCLiente!!!:
N = DCount("*", "CDivida", "codCliente = " & Me.CodCliente & "")Outro detalhe, o seu subform é filtrado pela data ainda... então deves carregar a data para filtragem:
N = DCount("*", "CDivida", "codCliente = " & Me.CodCliente & " And DataVenda = # " & Me.dtDataVenda & " # ") Porque isso oras o cliente Abegahil tem 3 dívidas para uma Data, N = 3, senão dará erro.
Coloque no subform uma caixa texto não visível, nomeeie como dtDataVenda, ela será utilizada pela função Dcount
2 - A caixa texto SomaSeleção, se observar no meu exemplo ela está localizada no FORM!!!! portanto para referenciá-la no código eu uso a propriedade: Parent
StrValor = Nz(
Me.Parent.SomaSeleção, 0) + K(X)
Isto signica que: como o código está no subform, tem que especificar a localização da caixa texto.
No modelo que fez.. a caixa texto está no próprio subform, portanto não precisa referenciar com a cláusula Parent, basta apenas o ME.SuaCaixaTexto.
Logo mais no código ainda não substituiu o nome da caixa texto:
Me.TxtValorSoma = StrValorOras se mudou o nome da caixa texto podia até utilizar o modulo de busca para substituit os nomes no código, assim não deixando escapar nenhuma como deixou esta.
3 -
Dim StrValor As Double (esta variável é do tipo Double) se observa no novo exemplo ela já esta modificada. isto para aceitar decimais
4 - Para que uma combo onde está a função GetNumberLine? Oras... isto é somente para ser utilizado no Código, não precisa nem estar visivel se nao quiser, serve apenas para numerar os registros em sequencia... Não tem nada haver com o código do produto.
Bem é isso, agora coloque mãos a obras... Mais fácil que isto só roubando doce de crianças.
Cumprimentos