Autore Topic: [risolto]contare clienti  (Letto 659 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
[risolto]contare clienti
« il: 29 Agosto 2010, 22:16:32 »
hello raga

mi sono incartato su un array e mi serve una mano.
in pratica in un array carico i codici dei clienti e mi serve sapere quanti clienti diversi ci sono esempio:

cod 1f
cod 1f
cod 3c
cod 3c
cod 5d

il risultato dovrebbe essere 3 in quanto 1f e 3c sono ripetuti 2 volte

ho cominciato con il seguente codice  ma ora non so come completarlo
Codice: [Seleziona]
DIM Cl AS NEW String[]
  FOR i, p, t AS Integer
  
    t = TableView1.Rows.Count
 
  FOR i = 1 TO t
      cl.add(TableView1[i - 1, 0].text)    
  NEXT  
  
  FOR i = 1 TO cl.Count
    
     p = ?
    
  NEXT

la p è la variabile che deve contenere il risultato (nel mio esempio 3)
« Ultima modifica: 29 Agosto 2010, 23:59:23 da dex »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: contare clienti
« Risposta #1 il: 29 Agosto 2010, 22:31:57 »
L'ho scritto di getto..vedi se almeno l'idea ti stuzzica...

Codice: gambas [Seleziona]
  DIM Cl AS NEW String[]
  DIM i, j, p AS Integer
  DIM esiste AS Boolean

  FOR i = 0 TO TableView1.Rows.Count - 1
      cl.add(TableView1[i , 0].text)     
  NEXT 

  p = 0

  FOR i = 0 TO cl.Count - 1
      Esiste = FALSE
      FOR j = 0 TO c1.Count - 1
         IF c[i] = c[j] THEN esiste = TRUE
      NEXT
      IF Not Esiste THEN INC p
  NEXT

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: contare clienti
« Risposta #2 il: 29 Agosto 2010, 22:48:44 »
@ceskho

mi da il totale dei record inseriti e non dei clienti

nel mio caso mi esce 6 invece di 3

Edit mi correggo (avevo sbagliato a posizionare il codice)

mi da sempre 0
« Ultima modifica: 29 Agosto 2010, 22:52:54 da dex »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: contare clienti
« Risposta #3 il: 29 Agosto 2010, 22:52:57 »
@ceskho

mi da il totale dei record inseriti e non dei clienti

nel mio caso mi esce 6 invece di 3

E se cambi la riga 16 in:

 IF Esiste = FALSE THEN INC p

?

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: contare clienti
« Risposta #4 il: 29 Agosto 2010, 23:37:24 »
Detto come al solito che ci sono mille modi per risolvere lo stesso problema, un modo è questo:

Codice: [Seleziona]

DIM arsLista AS NEW String[]
DIM arsUnique AS NEW String[]
DIM sCodice AS String
  
arsLista = Split("cod 1 f,cod 1 f,cod 3 c,cod 3 c,cod 5 d")  
  
FOR EACH sCodice IN arsLista
   IF NOT arsUnique.Exist(sCodice) THEN arsUnique.Add(sCodice)
NEXT
  
PRINT arsUnique.Count


In pratica crei un array temporaneo arsUnique eliminando i doppioni che ci sono nel primo array arsLista (il tuo Cl) e ne conti gli elementi. Bada che "codicepippo" è diverso da "codicepippo ".
« Ultima modifica: 29 Agosto 2010, 23:42:08 da giulio »

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: contare clienti
« Risposta #5 il: 29 Agosto 2010, 23:47:21 »
Codice: [Seleziona]
DIM Cl AS NEW String[]
  DIM ClTmp AS NEW String[]
  DIM i, p, t AS Integer
   
  t = TableView1.Rows.Count
 
  FOR i = 1 TO t
   
    cl.add(TableView1[i - 1, 0].text)     
    IF NOT ClTmp.Exist(TableView1[i - 1, 0].text) THEN ClTmp.Add(TableView1[i - 1, 0].text)
       
  NEXT 
 
  p = ClTmp.Count

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: contare clienti
« Risposta #6 il: 29 Agosto 2010, 23:59:02 »
risolto con il doppio array