RufuZ Posted February 7, 2014 at 05:06 PM Report #544376 Posted February 7, 2014 at 05:06 PM Boas Pessoal Estou a desenvolver para um trabalho, uma espécie de loja virtual ou maquina virtual que vende produtos, e tenho aqui umas duvidas que gostaria de ver tiradas: A lista dos produtos é mostrada ao utilizador através de uma listbox... já a tenho quase toda programada, falta-me apenas uma situação: todos os produtos têm um stock de 20 itens por produto, e isso tambem ja programei, e está tudo a funcionar (criei uma variavel que conta quando se clica em adicionar, e outra que conta quando se apaga na listbox, e depois o stock será a diferença entre esses dois), contudo estou a ter problemas com o Botao Limpar da listbox... Raciocinei um pouco, e criei entao outra variavel chamada itens, que conta apenas a quantidade de itens de um produto dentro da listbox, da seguinte forma: no botao adicionar (exemplo do produto Mars) : contaMars = contaMars + 1 (contaMars é a variavel para contagem global do stock, até quando a compra é finalizada) itemMars = itemMars + 1 (itemMars conta apenas o nr de Mars presentes na listbox) no botão apagar : If (listaitens.GetItemText(listaitens.SelectedItem) = "Mars" & vbTab & vbTab & " 0.65€") Then listaitens.Items.RemoveAt(listaitens.SelectedIndex) eliminaMars = eliminaMars + 1 (eliminaMars é a variavel para contagem global do stock, até quando a compra é finalizada) itemMars = itemMars - 1 End If lbl_stockMars.Text = contaMars - eliminaMars no botao limpar: lbl_stockMars.Text = (contaMars - eliminaMars - itemMars) itemMars = 0 PROBLEMA: Se o utilizador carregar 1 vez, o botao funciona e retira ao stock o nr de itens na listbox, contudo, se voltarmos a adicionar, ele volta a acrescentar itens... Imaginemos que abrimos agora o programa... adicionamos 4 mars à listbox e depois clicamos em limpar... o contador de stock fica a 0.. Contudo, se voltarmos a adicionar, o contador começará a partir do 4,ou seja, se da segunda vez adicionarmos mais 1, o contador de stock passará a ser 5 e nao 1, como deveria ser.... e quando clicamos uma segunda vez seguida no limpar, ele tambem volta a contagem a esse numero ) Espero ter sido claro (tenho a leve impressao que nao fui ehehhe), porque explicar isto por texto é muito confuso.... Cumpz RufuZ
vila3 Posted February 7, 2014 at 05:37 PM Report #544385 Posted February 7, 2014 at 05:37 PM Estas a usar base de dados?
RufuZ Posted February 7, 2014 at 05:45 PM Author Report #544388 Posted February 7, 2014 at 05:45 PM Não.. Isto é para um trabalho de AI, e nós demos so umas bases de vb e nem sequer o interligamos com bases de dados..
Gnrtuga Posted February 7, 2014 at 05:51 PM Report #544389 Posted February 7, 2014 at 05:51 PM Espero ter sido claro (tenho a leve impressao que nao fui ehehhe), porque explicar isto por texto é muito confuso.... Olá Rufuz, estás como eu, tenho exactamente o mesmo problema em me explicar:) ajuda a ficar mais claro se meteres o código colorido...quando metes inserir código mete code=vb (neste caso) Parece-me que o mal é estares a enviar : lbl_stockMars.Text = (contaMars - eliminaMars - itemMars) itemMars = 0 Parece-me que tens de por itemMars = VariavelQueTemValorTotalMars..., caso contrário ele vai pensar que só existem 0 Mars. Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
RufuZ Posted February 7, 2014 at 05:59 PM Author Report #544391 Posted February 7, 2014 at 05:59 PM A variável contaMars e eliminaMars sao as variáveis "globais", globais em termos do contexto do programa, porque elas mantém-se mesmo quando o utilizador termina a sua compra, fazendo com que o stock dos Mars vá decrementando à medida das compras de cada utilizador... Já o itemMars é apenas para contagem do numero de Mars dentro da listbox... Eu criei isto porque no meu raciocinio foi assim que se fez a ideia.. Porque basicamente, se tivermos 5 mars na listbox, o (contaMars - eliminaMars) podem ou nao ser 5, visto que eles vao incrementando e decrementando conforme o nr de utilizadores, mas o itemMars é obrigatoriamente 5....
Gnrtuga Posted February 7, 2014 at 08:28 PM Report #544406 Posted February 7, 2014 at 08:28 PM (edited) Mas experimenta lá no procedimento limpar comentar o itemMars=0, e depois diz qual o resultado que te dá.. edit: para comentar coloca ' antes do texto (só para o caso de não saberes como é... Edited February 7, 2014 at 08:30 PM by Gnrtuga Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
vila3 Posted February 7, 2014 at 10:18 PM Report #544429 Posted February 7, 2014 at 10:18 PM acho que tem a haver com este codigo: lbl_stockMars.Text = (contaMars - eliminaMars - itemMars) quando fazes o reset como não faz reset nos contasMars e no eliminaMars acho que é esse o conflito, mas podias copiar o codigo todo, tal e qual como está, para eu dar uma olhadela? é que apartir daquele que colocaste não percebo bem o funcionamento interno do programa
RufuZ Posted February 8, 2014 at 10:51 PM Author Report #544496 Posted February 8, 2014 at 10:51 PM Boas pessoal, ja consegui resolver o problema... Tive que fazer um esquema em papel para realmente compreender... tinha que , quando clicado em limpar, fazer tambem eliminaMars+itemMars, para depois dar sempre certo no stock... Contudo tenho outro problema: Tenho (para ja) 3 forms, e no 1º form tenho muitas variaveis que precisava de acessar e modificar atraves de outros forms... Como faço isso?
Gnrtuga Posted February 9, 2014 at 11:39 AM Report #544519 Posted February 9, 2014 at 11:39 AM (edited) Em vez de declarares dim nomeVarial as string = "Teste" Declara Public nomeVarial as string = "Teste" Boa sorte Edit: vê aqui: http://msdn.microsoft.com/en-us/library/ms973875.aspx Edited February 9, 2014 at 11:40 AM by Gnrtuga Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
RufuZ Posted February 10, 2014 at 07:50 PM Author Report #544731 Posted February 10, 2014 at 07:50 PM Obrigadissima gnrtuga 😉 Mais uma duvida ehehe: Há alguma forma de comparar variaveis em vb sem ser por meio de uma estrutura de ifs? é que sao muitas variaveis a testar e a tal estrutura if será demasiado longa e complexa... 😕 Mais uma vez um grande obrigado pela ajuda 😉
Gnrtuga Posted February 11, 2014 at 07:34 AM Report #544785 Posted February 11, 2014 at 07:34 AM Bem, acho que podes fazer isso de duas maneiras...sinceramente não sei qual a mais indicada... Tens o selec case, onde podes comparar logo várias variáveis numa só instrução. http://msdn.microsoft.com/en-us/library/cy37t14y.aspx Ou criares uma lista de arrays e verificares se o valor está dentro desse array: http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx Vê os dois para perceberes qual é a melhor solução para ti. Desconheço (não quer dizer que não exista) outras maneiras. Boa sorte. Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
RufuZ Posted February 27, 2014 at 10:39 PM Author Report #547009 Posted February 27, 2014 at 10:39 PM Hum, desculpa so agora responder, mas ja solucionei esse problema... Contudo tenho uma duvida: há alguma forma de fazer um grafico de estatisticas? Por exemplo, com o numero de itens comprados de cada produto?? Um grafico de barras ou assim?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now