Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

elenco con totale finale in visual basic

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

elenco con totale finale in visual basic

Messaggioda Webman » sab feb 28, 2009 7:43 pm

salve a tutti

sto creando un programmino che mi faccia l'ordinazione di prodotti selezionati attraverso check e di visualizzarli in un "riquadro" che me li elenca uno ad uno e che i prezzi me li sommi con un bel Totale alla fine.

vorrei fare una cosa molto simile ad una tabella fatta in excel però non so che strumenti utilizzare dato che con la text e con le label non posso rimuovere e rielencare i prodotti e con la list non posso sommare i prezzi.......

cosa mi dite voi???
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm

Re: elenco con totale finale in visual basic

Messaggioda Silver Black » mar mar 03, 2009 10:35 pm

Come non puoi sommare i prezzi? Certo che puoi, converti in numero con Val o CInt e sommi. Ancora meglio se usi la listview solo per visualizzare i dati e la tieni sincronizzata con un array con cui potrai svolgere i calcoli molto più agevolmente (devi solo preoccuparti di mantenerlo sincronizzato con la lista).
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Re: elenco con totale finale in visual basic

Messaggioda Webman » mer mar 04, 2009 3:25 pm

ti aggiorno....

il valore importato nella listbox è all'interno di una label quindi il casotto è quello di far aggiornare automaticamente il valore del totale.......

l'unica cosa che non va bene e che quando aumento il valore del numero e lo reinserisco nella listbox non mi sostituisce il valore inziale ma mi aggiunge una nuova riga nella list.....come posso impostare che quel valore deve andare a sostituirmi il valore precedente???

grazie silver [;)]
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm


Re: elenco con totale finale in visual basic

Messaggioda Silver Black » mer mar 04, 2009 6:44 pm

Webman ha scritto:il valore importato nella listbox è all'interno di una label quindi il casotto è quello di far aggiornare automaticamente il valore del totale.......


Per aggiornare il totale nella label è un attimo: converti le stringhe (caption) in numero, sommi, ottieni il totale, (lo converti in stringa), e lo assegni alla caption della label.

l'unica cosa che non va bene e che quando aumento il valore del numero e lo reinserisco nella listbox non mi sostituisce il valore inziale ma mi aggiunge una nuova riga nella list.....come posso impostare che quel valore deve andare a sostituirmi il valore precedente???[;)]


Lo cancelli e lo reinserisci se è una listbox, altrimenti, se è una listview, puoi accedere direttamente alla caption o ai subitems dell'elemento i-esimo.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Re: elenco con totale finale in visual basic

Messaggioda Webman » gio mar 05, 2009 3:42 pm

silver sto quasi riuscendo ...

mi manca solo questo piccolo errore da parte della label...

non riesco a estrapolare la parte intera dalla label sia con val che con cint, eccoti un banale esempio di somma di due label:

Label3 = Val(Label1) + (Label2)

label 1 ha una lettera e un numero mentre label2 è un intero...e come risultato mi da solo il numero intero di label2......perché?? [sadbye]
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm

Re: elenco con totale finale in visual basic

Messaggioda Silver Black » gio mar 05, 2009 4:28 pm

Webman ha scritto:silver sto quasi riuscendo ...

mi manca solo questo piccolo errore da parte della label...

non riesco a estrapolare la parte intera dalla label sia con val che con cint, eccoti un banale esempio di somma di due label:

Label3 = Val(Label1) + (Label2)

label 1 ha una lettera e un numero mentre label2 è un intero...e come risultato mi da solo il numero intero di label2......perché?? [sadbye]


Come fai a convertire una lettera e u numero in un numero?! Deve contenere solamente numeri!
E usa sempre le proprietà escplcite, quindi Label1.Caption, ecc.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Re: elenco con totale finale in visual basic

Messaggioda Webman » gio mar 05, 2009 5:07 pm

cioè, se volessi sommare

€ 100,00 + € 100,00 .....non posso farlo?? (dato che li unisce solamente)

devo spezzettare così allora? " €" & label1 & ",00".........???


p.s. un altro problemino è quando elimino un valore nella listbox....e non so come riaggiornare il totale dato che il valore lo elimino dalla lista e non son come prendere il suovalore e toglierlo al totale.... :S
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm

Re: elenco con totale finale in visual basic

Messaggioda Silver Black » gio mar 05, 2009 5:45 pm

Webman ha scritto:cioè, se volessi sommare

€ 100,00 + € 100,00 .....non posso farlo?? (dato che li unisce solamente)

devo spezzettare così allora? " €" & label1 & ",00".........???


Non puoi sommare un valore numerico se contiene anche caratteri non numerici! Se la label.caption contiene altri caratteri, ti conviene mantenere una struttura in memoria (come una variabile semplice o un array).

p.s. un altro problemino è quando elimino un valore nella listbox....e non so come riaggiornare il totale dato che il valore lo elimino dalla lista e non son come prendere il suovalore e toglierlo al totale.... :S


Lo aggiorni, appunto! O rifai tutta la somma (che quindi non comprenderò l'elemento eliminato) oppure, visto che sai qual è l'elemento eliminato perché lo leggi, lo sottrai al totale (più rapido, però una somma del genere sui PC attuali non credo sia un problema rifarla eseguire tutta, specialmente scorrendo un array, vedi come ti dicevo prima, te lo esegue in 0 secondi).
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Re: elenco con totale finale in visual basic

Messaggioda Webman » gio mar 05, 2009 6:56 pm

Lo aggiorni, appunto! O rifai tutta la somma (che quindi non comprenderò l'elemento eliminato) oppure, visto che sai qual è l'elemento eliminato perché lo leggi, lo sottrai al totale (più rapido, però una somma del genere sui PC attuali non credo sia un problema rifarla eseguire tutta, specialmente scorrendo un array, vedi come ti dicevo prima, te lo esegue in 0 secondi).


si ma la list box non indicizza i valori inseriti ( almeno per quanto ne sappia), quindi non posso " dire" se elimini QUESTA stringa sottrai "tot" al totale........

prima hai parlato di Listview che può indicizzare i valori/stringhe inseriti....ma vb6 ha questo strumento??
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm

Re: elenco con totale finale in visual basic

Messaggioda Silver Black » gio mar 05, 2009 7:13 pm

Webman ha scritto:si ma la list box non indicizza i valori inseriti ( almeno per quanto ne sappia), quindi non posso " dire" se elimini QUESTA stringa sottrai "tot" al totale........


E allora la somma come la fai? Non usi un cliclo for? Io non ricordo con sicurezza, ma se hai un indice i puoi accedere all'-iesimo elemento.. Se no abbandona questo schifo di controllo! Se non puoi fare la differenza rifai tutta la somma.

prima hai parlato di Listview che può indicizzare i valori/stringhe inseriti....ma vb6 ha questo strumento??


Certo, qui sì che sono sicuro: esiste e i suoi elementi sono tranquillamente accessibili uno per uno tramite indice.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Re: elenco con totale finale in visual basic

Messaggioda Webman » sab mar 07, 2009 5:19 pm

E allora la somma come la fai? Non usi un cliclo for? Io non ricordo con sicurezza, ma se hai un indice i puoi accedere all'-iesimo elemento.. Se no abbandona questo schifo di controllo! Se non puoi fare la differenza rifai tutta la somma.??


come ti ho detto prendo il valore da una label e quindi faccio semplicemente:

Label8 = Val(Label8) + Val(Label4) [std]

...ma per sottrarre i valori devo dare conto alla listbox perché è da lì che li elimino.....comunque sto vedendo un po' come ricavare l'indice della listbox e completare sto lavoretto....:P

ciao! [brindisi]
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm

Re: elenco con totale finale in visual basic

Messaggioda Webman » mer apr 01, 2009 2:55 pm

ciao silver sono riuscito a risolvere parzialmente il "problema" della sottrazione rimuovendo dalla listbox il valore e lo stesso valore anche dal totale utilizzando un array.

...per quando riguarda la sottrazione con SOLO i numeri va bene (anche se , orainvece ho utilizzato lo split per estrapolare solo la parte numerica nel caso in cui io nella listbox inserisco uan stringa contenente il prezzo, eccoti un esempio:


" Private Sub Command4_Click()
Dim parole() As String
Dim frase As Stringfrase = "Pc+vista x3 10,00" <----------------------su un altro pulsante ho impostato 5,00
parole = Split(frase, " ")

List1.AddItem (frase)
'List1.AddItem (parole(2))

'List1.AddItem (Text1.Text)
addIndex = List1.ListCount + parole(2)
contatore(addIndex) = parole(2)

MsgBox " " & contatore(addIndex) & " "
'Next

Label1 = Val(Label1) + parole(2)
Text1.Text = ""
End Sub "


ora il problema nella rimozione nella list è che quando clicco su rimuovi (codice seguente), a parte che devo eliminare dall'ultimo al primo e non posso eliminare un elemento a caso perché mi da l'errore, ma il problema principale e che mi sottrare sempre dal totale L'ULTIMO VALORE INSERITO PER TUTTI GLI ALTRI ELEMENTI:

es. teorico somma: 10+5+10+5+5= 35;
es. teorico sottrazione: 35 - 10-5-10-5-5= 0

es. pratico somma: 10+5+10+5+5= 35
es. pratico sottrazione (problema): 35- 5-5-5-5-5= 10 oppure 35-10-10-10-10-10= -15

HELP ME, ormai non sto capendo più niente su questo codice anche se l'ho scritto io.....!!! [sadbye] ....grazie
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm

Re: elenco con totale finale in visual basic

Messaggioda Silver Black » mer apr 01, 2009 3:26 pm

Metodo generale: il programma fa quello che gli dici tu. Ovvio dirai. Ok, ma allora esegui PASSO-PASSO, così saprai cosa sta facendo (a noi programmatori spesso sfugge qualche implicazione del codice che scriviamo, per cui pensiamo che il compilatore faccia qualcosa e invece poi in pratica ne fa un'altra, eseguendo step-by-step si capisce esattamente cosa fa invece di cosa dovrebbe fare).

Ma il docie che hai usato per la sottrazione qual è? Cosa usi per sottrarre? Un array sincronizzato con la lista?
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Re: elenco con totale finale in visual basic

Messaggioda Webman » mer apr 01, 2009 3:56 pm

" Dim contatore(100) As String
Dim addIndex As Integer
Dim removeIndex As Integer

Private Sub Command2_Click()

For i = 0 To List1.ListCount - 1

If (List1.Selected(i) = True) Then

'MsgBox List1.List(i) & "" & i & "" & List1.SelCount ' restituisce il numero di item selezionati
MsgBox " " & contatore(AddItem) & " "
Label1 = Val(Label1) - contatore(addIndex)
'MsgBox List1.List(i)
List1.RemoveItem (i)
End If
Next


End Sub "

questo è il codice per rimuovere gli elementi nella listbox...................come si fa ad avviare il prog passo per passo?..f2?
Non si tratta di essere belli o brutti....è questione di Stile!
Avatar utente
Webman
Senior Member
Senior Member
 
Messaggi: 328
Iscritto il: mar ott 23, 2007 4:13 pm

Re: elenco con totale finale in visual basic

Messaggioda Silver Black » mer apr 01, 2009 4:34 pm

Intanto se AddIndex non lo definisci varrà sempre zero, quindi se fai

contatore(addIndex)

prenderà sempre il valore di indice zero dell'array, ecco perché ti somma, per n volte (dove n è la dimensione dell'array) lo stesso numero (elemento i-esimo zero dell'array).

Forse volevi fare

contatore(i)

visto che è i la varaibile che usi nel ciclo. Se no perché usi la i? non te lo sei chieso?

A parte questo: perché fai il ciclo con la sottrazione? Il ciclo va fatto per sommare tutto, se no trovi sempre zero alla fine... Non capisco il tuo ragionamento. Comunque il metodo migliore resta sempre quello di sottrarre al totale già calcolato solamente il valore selezionato. Pensa ad avere milioni di valori di un enorme db, che fai, ricalcoli tutto quando basta una sola sottrazione? [nonono]

E comunque sono sbagliate tutte le valorizzazioni nel tuo codice, è pieno di conversioni implicite che vanno evitate (il codice funziona grazie a VB, ma non stai programmando bene, stai programmando alla "speriamo", per dirla alla "Karate kid").

Per avviare passo-passo usa F8. Ma meglio prima creare un breakpoint, avviare con F5, dopodichè continuare con F8. dal breakpoint in avanti.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising