Newsgroup: it.comp.lang.visual-basic
Titolo: Somma in base ad una porzione di testo di un record

Ho un db Access con un campo Codice e uno Importo.
Uso connessione ADO.
I record del campo codice sono + o - di questo tipo
      BAT01001
            BAT11001
            BAT23001
Devo creare il codice che sommi i record del campo Importo in base al campo
codice. Nel nostro caso dovrà fare una somma di tutti gli importi che hanno
come quarto carattere lo 0, una di tutti quelli che hanno come quarto
carattere l'1 e una per tutti quelli che hanno come quarto carattere il 2.
Come potrei fare?
Vi ringrazio
Ciao
----|----|----|----|----|----|----|----|----|----|----|----|----|----|--
Vuoi vedere il mondo a 360°?
www.360net.it

 Come potrei fare?
allora leggi dal db e salva in una variabile stringa il contenuto del codice
( es: sValore as string )
ok ora in sValore hai "BAT11001"
bene , ci sono 3 funzioni che possono aiutarti : left mid right
leggono caratteri o porzioni di stringhe .
es :
left("bat11001",3)   =>  "bat"
right("bat11001",3) =>  "001"
mid("bat11001",3,3) => "110"
facile no ? cmq ho scritto a memoria quindi ricontrolla su MSDN

 mid("bat11001",3,3) => "110"
la variabile l'ho creata
Dim sStringa As String
sStringa = Mid(rsFatturato.Fields("CODCOMM"), 4, 1)
'A me infatti interessa il quarto carattere.
Il problema è che non so inserirla nella stringa SQL in modo che selezioni
ad esempio tutti i CODCOMM che hanno come quarta lettera il 2.
Ciao

 carattere l'1 e una per tutti quelli che hanno come quarto carattere il 2.
Per il primo caso, usa questa Query (al posto di MiaTabella metti il nome
della tabella che sta nel tuo database).
SELECT  Sum(MiaTabella.Importo) AS SommaDiCodice0
FROM MiaTabella where Mid(MiaTabella.Codice,1,4)="0";
Il risultato sta in SommaDiCodice0-
Ripeti 3 volte sostituendo ogni volta il carattere numerico che devi usare
come filtro.
Ciao
*Roby*

 come filtro.
ehm... e provare con un
 SELECT  Sum(MiaTabella.Importo) AS SommaDiCodice0,
Mid(MiaTabella.Codice,1,4) as Classe
 FROM MiaTabella  group by Mid(MiaTabella.Codice,1,4);
non risolverebbe il problema in un colpo solo ?
Salutoni
Sergio

 ad esempio tutti i CODCOMM che hanno come quarta lettera il 2.
In SQL standard non esiste, che io sappia.
Però, se ci dici che db usi si può fare qualcosa.
Per esempio, nell'SQL di Access, puoi usare esattamente la stessa funzione
di VB:
SELECT Sum(Importo)
FROM Tabella
GROUP BY Mid$(Codice,4,1)
o, in Transact-SQL di SQLServer
SELECT Sum(Importo)
FROM Tabella
GROUP BY SUBSTRING(Codice,4,1)
--
Ciao, Silv:o)

 non risolverebbe il problema in un colpo solo ?
Gią...
Forse č meglio che io aspetti che risponda qualcun altro, alla prossima
domanda che ha a che fare con l'Sql ... :-)
Ciao
*Roby*

 ha scritto nel messaggio
news:QJPs9.14606$aL4.4...@news1.tin.it...
Cut
C'hai Access no?
hai quindi anche il db di prova...il NorthWind no?
io ho la versione italiana...
questa funge....hai detto che hai il vantaggio di sapere che quello che ti
interessa è SEMPRE il quarto carattere
SELECT Sum(Ordini.Trasporto) AS SommaDiTrasporto
FROM Ordini
WHERE (((Ordini.Destinatario) Like "??ch*"));
questo che fa?
Prende la tabella ordini e se il destinatario ha il terzo e quarto carattere
uguale a "c" ed "h" fa la somma del campo importo
OCCHIO se lo utilizzo con ado vanno sostituiti i wildcard
con quali?
* con %
e ?
con #
by man!