Newsgroup: it.comp.appl.access
Titolo: Automazione in Word

Salve a tutti e auguri.
Premetto che lo stesso quesito l'ho posto nell'altro forum e non
avendo avuto risposta mi rivolgo a voi sperando mi possiate dare una
mano.
Nella stampa in word, in un segnalibro debbo inserire la classifica
dei marcatori di calcio. per il momento, tramite questo codice:
Dim curSquadra, curGiocatore, curReti As String
     With Rst
            Totale = 0 '
            .MoveFirst
            While Not .EOF
                Record = !goalsegnati & " Reti: " & !
Nominativogiocatore & " (" & !Squadra & " ) "
                If !goalsegnati = 1 Then Record = !goalsegnati & "
Rete: " & !Nominativogiocatore & " (" & !Squadra & " ) "
                    Wrd.Selection.TypeText Record
                        Totale = Totale + TotRiga
                    curSquadra = !Squadra
                    curGiocatore = !Nominativogiocatore
                    curReti = !goalsegnati
                .MoveNext
            If Not .EOF Then
                If curSquadra <> !Squadra And curReti <> !goalsegnati
And curReti <> !Squadra Then
                    Wrd.Selection.TypeText ";" & vbCrLf
                Else
                    Wrd.Selection.TypeText ", "
                End If
                    Else
                    Wrd.Selection.TypeText "."
                End If
            Wend
        End With
        Rst.Close: Set Rst = Nothing
ho il seguente risultato:
Classifica marcatori
6 Reti: Saverio (ROMA ) ;
2 Reti: Nicola (MILAN ) , 2 Reti: Antonio (MILAN ) , 2 Reti: Marcello
(INTER ) ;
1 Rete: vladimiro (LAZIO ) .
invece vorrei che il risultato fosse così:
Classifica marcatori
6 Reti: Saverio (ROMA ) ;
2 Reti: Nicola, Antonio (MILAN ) , Marcello (INTER ) ;
1 Rete: vladimiro (LAZIO ) .
Grazie Vladimiro.


Il tuo problema concettualmente non mi pare difficile.
Prendi il primo record memorizzi reti, squadra, giocatore
Passi al secondo record
Se N_reti diverse scrivi
Se N_reti uguali e squadre diverse scrivi
Se N_reti uguali e squadre uguali memorizza i due giocatori in un
unica variabile
passa al sucessivo
Se poi la tua richiesta era che qualcuno si metta a riscriverti tutto
il codice, temo che difficilmente troverai un eroe...
F.

 F.-
Vladimiro.

 mano.
Buongiorno Vladimiro e buon anno.
Prima di provare a risponderti vorrei dar fondo a tutte le chiacchiere 
"moralistiche" che mi sono rimaste e che devo consumare entro l'anno.
E' la seconda volta che passi su questo NG dopo che "non" ti hanno 
risposto su mpioa. Due volte sono poche ma, in considerazione del fatto 
che mi e' capitato di incrociarti e leggere i tuoi post e se non mi 
sovviene male anche di risolver"ti" qualche situazione, mi prendo la 
liberta' di darti un minimo di consigli.
Trovo il tuo atteggiamento nei confronti di chi ti risponde 
genericamente "altezzoso", come se tutto ti sia dovuto. In questo NG, 
come in tutti gli altri che mi e' capitato di frequentare, c'e' 
mediamente, oltre a gente *molto capace*, anche gente fortemente 
"proudly proud" (lo dico all'inglese perche' fa piu' fico).
I tuoi post inoltre sono abbastanza confusi e mai precisi piu' di tanto.
Metti insieme queste cose e cerca di trarne una conclusione.
Mi ero proposto di non intervenire mai piu' su un tuo post ma come dice 
un vecchio adagio la "carne e' debole".
Finito il pistolotto moraleggiante e per far si che il tutto non finisca 
in un inutile flame devo ora, ovviamente, proporti una possibile 
soluzione. Fin da adesso pero' ti tico ("in verita' in verita' vi dico", 
per essere evangelici) che se per caso in una qualsiasi tua risposta 
leggo "non funziona" o "non mi serve", io non *plonko* nessuno, ma e' 
come se lo avessi fatto.
E come ciliegina finale. Sono troppo vecchio e stanco per edulcorare la 
"mia arroganza".
il recordset che usi deve essere ordinato per numero "goals" e squadra.
Il codice non e' testato ed i nomi (su rs) vanno sostituiti con quelli 
giusti
Dim wkReti as long, wkTeam as string, sOut as string
do until rs.eof
    wkReti = rs!Reti
    sOut = wkReti & " Reti: "
    do until rs.eof and wkReti = rs!Reti
	wkTeam = rs!Team
	do until rs.eof and wkReti = rs!reti and wkTeam = rs!team
            sOut = sOut & rs!NomePlayer & ", "
            rs.movenext
	   if rs!eof then exit do
	loop
         sOut = sOut & " (" & wkTeam & "); "
	if rs!eof then exit do
    loop
    '------> qui l'assegnazione a segnalibro Word di sOut
  loop
That's all, s.e. & o.
-- 
ac
y-1=x


wrote:

Ciao Alessandro.
Innanzitutto voglio ringraziarti per avermi risposto e per avermi
fatto capire quello che tra l'altro già temevo. Che dire, mi dispiace,
anzi ci sto proprio male nel sapere di essere giudicato negativamente.
Non ho neanche la forza di dire la mia.
Buon anno pure a te e tutti quelli del n.g.
Vladimiro.

 - Mostra testo tra virgolette -
Ciao Alessandro, spero che hai passato un buon fine anno.
Ho provato la routine che mi hai suggerito, anzi il codice l'ho girato
e rigirato senza ricavarci nulla.
Questo è l'adattamento alla tua routine:
Dim wkReti As Long, wkTeam As String, sOut As String, As Currency
Do Until Rst.EOF
    wkReti = Rst!GoalSegnati
    sOut = wkReti & " Reti: "
    Do Until Rst.EOF And wkReti = Rst!GoalSegnati
        wkTeam = Rst!Squadra
        Do Until Rst.EOF And wkReti = Rst!GoalSegnati And wkTeam = Rst!
Squadra
            sOut = sOut & Rst!NominativoGiocatore & ", "
            Rst.MoveNext
           If Rst.EOF Then Exit Do
        Loop
         sOut = sOut & " (" & wkTeam & "); "
        If Rst.EOF Then Exit Do
    Loop
        Wrd.Selection.TypeText sOut & vbCrLf
        Totale = Totale + TotRiga
    Loop
        Rst.Close: Set Rst = Nothing
e questo è il risultato:
12 Reti: Golluccio Guido, Rossi Fabio, Colucci Alessandro, Caporelli
Francesco, Innocenzi Bruno, Partigianone Simone, Caputo Giorgio,
Silvestri Guido, Pittiglio Davide, Piergiorgio Mario, Francomano
Alberto, Martino Gianluca, Renzi Francesco, Rea Alessio, Bevilacqua
Francesco, Valente Giacomo, Vincentini Pierfrancesco, Assante
Fabrizio,  (SHASCIA BOYS);
Come puoi vedere mi riconosce un solo risultato ed una sola squadra.
Adesso voglio dirti una cosa; hai sottolineato il fatto che me la
sarei dovuta vedere da solo in quanto non avevi intenzione di metterci
mano ed io intendevo rispettare quanto affermato, purtroppo non so
dove sbattere la testa in quanto oltre a voi del n.g. non ho contatti
con nessun altro che si occupa di programmazione e guardare i libri
per trovare qualche esempio, capisci da solo che è impossibile.
Aspetto una tua risposta, o quella di qualcun altro anche negativa che
sia.
Grazie Vladimiro.


immaginavo che sarebbe succeso. Me ne ero accorto riguardando il codice. 
Vladimiro devi cercare di "capire" dove puo' essere il problema
modifica cosi' le ultime righe
......
         if rs!eof then exit do
      loop
      sOut & vbCrLf
      ' non so cosa sia il seguente e a cosa ti serve
      Totale = Totale + TotRiga
   loop
      '------> qui l'assegnazione a segnalibro Word di sOut
   Wrd.Selection.TypeText sOut
   Rst.Close: Set Rst = Nothing
Avevo messo la scrittura su Word per ogni valore di Reti. Ti riporta 
solo l'ultimo gruppo. Da quanto ho visto ricordati che l'ordinamento per 
il numero delle reti deve essere di tipo DESC. La riga che hai postato 
dovrebbe essere la prima e non l'ultima. Ho qualche dubbio che riconosca 
una sola squadra. Fai la correzione e poi vediamo.
-- 
ac
y-1=x

 y-1=x- Nascondi testo tra virgolette -


 intendi per riga Wrd.Selection.TypeText?
si
taglio tutto perche' era troppo
spieghiamo:
  Dim wkReti As Long, wkTeam As String, sOut As String, As Currency
' questo ciclo elabora tutto il recordset
  Do Until Rst.EOF
      wkReti = Rst!GoalSegnati
      sOut = sout & wkReti & " Reti: "
      ' questo ciclo elabora il gruppo con numero reti uguali
      Do Until Rst.EOF And wkReti = Rst!GoalSegnati
         wkTeam = Rst!Squadraparita' di reti
	'questo ciclo elabora per la stessa squadra a parita' di reti
         Do Until Rst.EOF And wkReti = Rst!GoalSegnati And wkTeam = Rst!
  Squadra
            ' questa istruzione accumula i giocatori per la stessa 
squadra
	     sOut = sOut & Rst!NominativoGiocatore & ", "
              Rst.MoveNext
             If Rst.EOF Then Exit Do 'questa serve perche' a .eof 
andrebbe in errore
          Loop
           ' questa istruzione inserisce la descrizione squadra quando 
avviene una "rottura" (squadra diversa)
           sOut = sOut & " (" & wkTeam & "); "
          If Rst.EOF Then Exit Do 'questa serve perche' a .eof andrebbe 
in errore
      Loop
	 ' al termine del gruppo reti aggiunge un a capo
	 sout = sOut & vbCrLf
          Totale = Totale + TotRiga  ' questa e' roba tua
     Loop
     Wrd.Selection.TypeText sOut & vbCrLf
     Rst.Close: Set Rst = Nothing
a cavolo! (me ne sono accorto mentre aggiungevo le note)!
questa:
     sOut = wkReti & " Reti: "
diventa:
     sOut = sOut & wkReti & " Reti: "
la sOut veniva ripulita  ad ogni cambio squadra. Non deve! (La ho gia' 
corretta nel codice). Spostando in basso la assegnazione a Word 
bisognava continuare ad accumulare sulla stringa di output!
Tirata di orecchi (a tutti e due, a me per la disattenzione a te perche' 
dovresti, prima o poi, imparare a "leggere" il codice)
Comunque stai migliorando cominci ad "afferrare" che il codice deve 
essere "testato" per bene prima di poter dire che funziona, ma questo 
non significa che "non" funziona, ha solo qualche problema di messa a 
punto, come la M1 di Valentino Rossi. Ma dovremmo essere vicini alla 
meta, speriamo di azzeccare le gomme. Talvolta il fatto che qualcosa non 
funziona e perche' c'e'  sempre un maledetto granello di sabbia che 
inceppa il meccanismo e fa "dechappare" le gomme.
-- 
ac
y-1=x

Ciao Alessandro, ti riscrivo tutto anch'io così evito di inserire
delle cose in più.
Dim wkReti As Long, wkTeam As String, sOut As String
' questo ciclo elabora tutto il recordset
  Do Until Rst.EOF
      wkReti = Rst!GoalSegnati
      sOut = sOut & wkReti & " Reti: "
      ' questo ciclo elabora il gruppo con numero reti uguali
      Do Until Rst.EOF And wkReti = Rst!GoalSegnati
         wkTeam = Rst!Squadra 'parita di reti
        'questo ciclo elabora per la stessa squadra a parita' di reti
         Do Until Rst.EOF And wkReti = Rst!GoalSegnati And wkTeam =
Rst!Squadra
            ' questa istruzione accumula i giocatori per la stessa
Squadra
             sOut = sOut & Rst!NominativoGiocatore & ", "
              Rst.MoveNext
             If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
          Loop
           ' questa istruzione inserisce la descrizione squadra quando
avviene una "rottura" (squadra diversa)
           sOut = sOut & " (" & wkTeam & "); "
          If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
      Loop
         ' al termine del gruppo reti aggiunge un a capo
         sOut = sOut & vbCrLf
     Loop
     Wrd.Selection.TypeText sOut & vbCrLf
     Rst.Close: Set Rst = Nothing
Praticamente dà lo stesso risultato. Solo il totale dei goals del
primo cannoniere e il nome di una sola squadra alla fine.
Domani pomeriggio mi ci rimetto per bene e vediamo cosa ne esce fuori.
Vista l'ora, non posso che augurarti una cordiale buonanotte.
Vladimiro.

vlad...@alice.it
 wrote:
[cut]
modifica le condizioni di uscita dal ciclo
.......
Do while not Rst.EOF And wkReti = Rst!GoalSegnati
.......
Do while not Rst.EOF And wkReti = Rst!GoalSegnati And wkTeam =
Rst!Squadra
......
-- 
ac
y-1=x


wrote:

Ciao Alessandro,
adesso si che cominciamo a ragionare!
Il risultato che mi esce è il seguente:
3 Reti: Golluccio Guido,  (SHASCIA BOYS); Rossi Fabio,  (LU.VI.RA.
PIETRAMELARA);
2 Reti: Colucci Alessandro,  (LONGOBARDA PONTECORVO); Caporelli
Francesco, Innocenzi Bruno,  (BIKER SHOP S.VITTORE); Partigianone
Simone,  (LA PINETA);
1 Reti: Caputo Giorgio, Silvestri Guido,  (CASTELNUOVO); Pittiglio
Davide,  (LA PINETA); Piergiorgio Mario,  (AUTORICAMBI DANIELE);
Francomano Alberto,  (LONGOBARDA PONTECORVO); Martino Gianluca,
(SHASCIA BOYS); Renzi Francesco,  (PARROCCHIA S.LUCIA); Rea Alessio,
(RIST.RISORGIMENTO/ROCCASECCA); Bevilacqua Francesco, Valente Giacomo,
Vincentini Pierfrancesco,  (SAN GIORGIO '96); Assante Fabrizio,
(LONGOBARDA PONTECORVO);
Come puoi vedere c'è ancora da ritoccare qualcosina (virgola prima
della parentesi e mancanza di punto finale al posto di punto e
virgola).
Siccome adesso debbo uscire, appena torno mi metto sotto e poi ti farò
sapere.
Ciao e naturalmente grazie mille.
Vladimiro.

Ciao Alessandro, come certamente immaginavi, sono riuscito a fare solo
le modifiche più semplici:
  Dim wkReti As Long, wkTeam As String, sOut As String
' questo ciclo elabora tutto il recordset
  Do Until Rst.EOF
      wkReti = Rst!GoalSegnati
      If Rst!GoalSegnati = 1 Then
      sOut = sOut & wkReti & " Rete: "
      Else
      sOut = sOut & wkReti & " Reti: "
      End If
      ' questo ciclo elabora il gruppo con numero reti uguali
       Do While Not Rst.EOF And wkReti = Rst!GoalSegnati
         wkTeam = Rst!Squadra 'parità di reti
        'questo ciclo elabora per la stessa squadra a parita' di reti
         Do While Not Rst.EOF And wkReti = Rst!GoalSegnati And wkTeam
= Rst!Squadra
            ' questa istruzione accumula i giocatori per la stessa
Squadra
             sOut = sOut & Rst!NominativoGiocatore & ", "
              Rst.MoveNext
             If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
          Loop
           ' questa istruzione inserisce la descrizione squadra quando
avviene una "rottura" (squadra diversa)
           If Not Rst.EOF Then
           sOut = sOut & " (" & wkTeam & "); "
           Else
           sOut = sOut & " (" & wkTeam & "). "
           End If
          If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
      Loop
         ' al termine del gruppo reti aggiunge un a capo
         sOut = sOut & vbCrLf
          'Totale = Totale + TotRiga  ' questa e' roba tua
     Loop
     Wrd.Selection.TypeText sOut
     Rst.Close: Set Rst = Nothing
e questo è il risultato:
3 Reti: Golluccio Guido,  (SHASCIA BOYS); Rossi Fabio,  (LU.VI.RA.
PIETRAMELARA);
2 Reti: Colucci Alessandro,  (LONGOBARDA PONTECORVO); Caporelli
Francesco, Innocenzi Bruno,  (BIKER SHOP S.VITTORE); Silvestri Guido,
(CASTELNUOVO); Partigianone Simone,  (LA PINETA);
1 Rete: Caputo Giorgio,  (CASTELNUOVO); Pittiglio Davide,  (LA
PINETA); Piergiorgio Mario,  (AUTORICAMBI DANIELE); Francomano
Alberto,  (LONGOBARDA PONTECORVO); Martino Gianluca,  (SHASCIA BOYS);
Renzi Francesco,  (PARROCCHIA S.LUCIA); Rea Alessio,
(RIST.RISORGIMENTO/ROCCASECCA); Bevilacqua Francesco, Valente Giacomo,
Vincentini Pierfrancesco,  (SAN GIORGIO '96); Assante Fabrizio,
(LONGOBARDA PONTECORVO).
Riassumendo:
Rete e non Reti se è 1 goal; punto al posto di punto e virgola
inserito alla fine; ma la virgola prima della parentesi è sempre lì.
Mi son perso, come si suol dire, in un bicchier d'acqua?
Ciao Vladimiro.

            End If
sostituire con
	    sout = left(sout,len(sout)-2) & " (" & wkteam & iif(rst.eof, ").", 
");")
[cut]
Sarebbero meglio i bicchieri di vino!
Per il resto! Avrei scritto di meno ma sarebbe stato piu' ermetico.
Va bene cosi' come hai fatto.
Guardati sull'Help le istruzioni left e iif, possono essere utili.
-- 
ac
y-1=x

Per non sbagliare ti riscrivo il codice aggiornato e il risultato.
  Dim wkReti As Long, wkTeam As String, sOut As String
' questo ciclo elabora tutto il recordset
  Do Until Rst.EOF
      wkReti = Rst!GoalSegnati
      If Rst!GoalSegnati = 1 Then
      sOut = sOut & wkReti & " Rete: "
      Else
      sOut = sOut & wkReti & " Reti: "
      End If
      ' questo ciclo elabora il gruppo con numero reti uguali
       Do While Not Rst.EOF And wkReti = Rst!GoalSegnati
         wkTeam = Rst!Squadra 'parità di reti
        'questo ciclo elabora per la stessa squadra a parita' di reti
         Do While Not Rst.EOF And wkReti = Rst!GoalSegnati And wkTeam
= Rst!Squadra
            ' questa istruzione accumula i giocatori per la stessa
Squadra
             sOut = sOut & Rst!NominativoGiocatore & ", "
              Rst.MoveNext
             If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
          Loop
           ' questa istruzione inserisce la descrizione squadra quando
avviene una "rottura" (squadra diversa)
           If Not Rst.EOF Then
           sOut = Left(sOut, Len(sOut) - 2) & " (" & wkTeam &
IIf(Rst.EOF, ").", ");")
           End If
          If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
      Loop
         ' al termine del gruppo reti aggiunge un a capo
         sOut = sOut & vbCrLf
     Loop
     Wrd.Selection.TypeText sOut
     Rst.Close: Set Rst = Nothing
4 Reti: Leone vladimiro (LONGOBARDA PONTECORVO);
3 Reti: Golluccio Guido (SHASCIA BOYS);Rossi Fabio (LU.VI.RA.
PIETRAMELARA);
2 Reti: Caporelli Francesco, Innocenzi Bruno (BIKER SHOP
S.VITTORE);Partigianone Simone (LA PINETA);Colucci Alessandro
(LONGOBARDA PONTECORVO);
1 Rete: Renzi Francesco (PARROCCHIA S.LUCIA);Martino Gianluca (SHASCIA
BOYS);Rea Alessio (RIST.RISORGIMENTO/ROCCASECCA);Piergiorgio Mario
(AUTORICAMBI DANIELE);Assante Fabrizio (LONGOBARDA
PONTECORVO);Pittiglio Davide (LA PINETA);Bevilacqua Francesco (SAN
GIORGIO '96);Silvestri Guido, Caputo Giorgio (CASTELNUOVO);Valente
Giacomo, Vincentini Pierfrancesco (SAN GIORGIO '96);Francomano
Alberto,
Come vedi mi dà un nominativo ed una virgola finale.
E' meglio che non provo a metterci mano così vedi quello che non va.
ps.
Magari  si poteva stare seduti davanti a 2 bicchieri di vino! Per quel
che mi riguarda ti avrei fatto una testa come un pallone!!!!
A presto, Vladimiro.


L'istruzione "non" la devi mettere dentro la if!
non cosi'
            If Not Rst.EOF Then
            sOut = Left(sOut, Len(sOut) - 2) & " (" & wkTeam &
  IIf(Rst.EOF, ").", ");")
             End If
ma cosa'
sOut = Left(sOut, Len(sOut) - 2) & " (" & wkTeam &
  IIf(Rst.EOF, ").", ");")
-- 
ac
y-1=x

   IIf(Rst.EOF, ").", ");")
Adesso si che va bene.
Non ci sarei proprio arrivato da solo!
Una spiegazione:
la lunghezza di sOut -2 che significa?


 la lunghezza di sOut -2 che significa?
nella gestione dei dati ci sono due punti critici
1) La prima volta
2) L'ultima volta
tutto il resto e' noia (cit)
Il sistema accumula sulla stringa di out (sOut). A "rottura di squadra" 
ha gia' aggiunto un "; " di troppo. Sono due caratteri 
(puntoevirgola+spazio)
left(sout,len(sOut)-2)
non fa che altro che toglierli
-- 
ac
y-1=x

 y-1=x

 - Mostra testo tra virgolette -
Ciao Alessandro, non pensare "a rieccolo!"
C'è un problema, credo banale, però che non riesco a risolvere.
Se non esco dal database, tutte le volte che automatizzo in word, mi
raddoppia le righe.
Pensavo che con Set Rst = Nothing il recordset in memoria si
distruggesse ma evidintemente ci vuole qualche altra cosa che non so.
Un ultimo sforzo?!
Ciao Vladimiro.

vlad...@alice.it
 wrote:
--
Ciao Alessandro, non pensare "a rieccolo!"
C'è un problema, credo banale, però che non riesco a risolvere.
Se non esco dal database, tutte le volte che automatizzo in word, mi
raddoppia le righe.
Pensavo che con Set Rst = Nothing il recordset in memoria si
distruggesse ma evidintemente ci vuole qualche altra cosa che non so.
Un ultimo sforzo?!
---
Non dipende da rst.
Non ho ben capito cosa ti succede ma sembra che "sOut" rimanga sporco
prima di utilizzare il recordset pulisci sout (sOut = "")
-- 
ac
y-1=x

Perfetto. Non avevo dubbi delle tue capacità
Riscrivo il tutto nell'eventualità qualcun altro ne avesse bisogno.
Ciao Vladimiro.
' questo ciclo elabora tutto il recordset
  sOut = ""
  Do Until Rst.EOF
      wkReti = Rst!GoalSegnati
      If Rst!GoalSegnati = 1 Then
      sOut = sOut & wkReti & " Rete: "
      Else
      sOut = sOut & wkReti & " Reti: "
      End If
      ' questo ciclo elabora il gruppo con numero reti uguali
       Do While Not Rst.EOF And wkReti = Rst!GoalSegnati
         wkTeam = Rst!Squadra 'parità di reti
        'questo ciclo elabora per la stessa squadra a parita' di reti
         Do While Not Rst.EOF And wkReti = Rst!GoalSegnati And wkTeam
= Rst!Squadra
            ' questa istruzione accumula i giocatori per la stessa
Squadra
             sOut = sOut & Rst!NominativoGiocatore & ", "
              Rst.MoveNext
             If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
          Loop
           ' questa istruzione inserisce la descrizione squadra quando
avviene una "rottura" (squadra diversa)
           sOut = Left(sOut, Len(sOut) - 2) & " (" & wkTeam &
IIf(Rst.EOF, ").", "); ")
          If Rst.EOF Then Exit Do 'questa serve perche' a .eof
andrebbe in errore
      Loop
         ' al termine del gruppo reti aggiunge un a capo
         sOut = sOut & vbCrLf
     Loop
     Wrd.Selection.TypeText sOut
     Set Rst = Nothing


Ciao Alessandro.
"Gli esami non finiscono mai!"
Mantre mi accingevo ad inserire i goal, improvvisamente ho notato che
i giocatori apparteneti alla stessa squadra non stavano più in
un'unica parentesi, ma suddivisi in più parentesi naturalmente con la
stessa squadra. Ho fatto di tutto prima di capire che il problema sta
nella quantità di giocatori inseriti; insomma per farla breve,
superando l' inserimento di 14 reti per 14 giocatori della stessa
squadra ed una sola rete per un solo giocatore di un'altra squadra,
ecco che comincia la suddivisione: 8 giocatori squadra A, 1 giocatore
squadra B, 7 giocatori squadra A.
Non so proprio che pensare!
Ciao Vladimiro.

 Ciao Vladimiro.
La squadra non ha lo stesso nome (uno spazio in testa o in coda?, 
probabilita' 99,8%)   Esegui la query direttamente sotto access e 
controlla che l'ordinamento sia quello aspettato.
Che dipenda dal numero giocatori probabilita' 0,01%.
Che dipenda da numero goals non numerico probabilita' 0,09%
Altre cause :0,1%
8+7 > 14
-- 
ac
y-1=x

 y-1=x
Questo è un altro esempio dove c'è LONGOBARDA PONTECORVO che si ripete
(1 Rete).
Classifica marcatori
3 Reti: Golluccio Guido (SHASCIA BOYS); Rossi Fabio (LU.VI.RA.
PIETRAMELARA);
2 Reti: Colucci Alessandro (LONGOBARDA PONTECORVO); Caporelli
Francesco, Innocenzi Bruno (BIKER SHOP S.VITTORE); Partigianone Simone
(LA PINETA);
1 Rete: Caputo Giorgio, Silvestri Guido (CASTELNUOVO); Pittiglio
Davide (LA PINETA); Piergiorgio Mario (AUTORICAMBI DANIELE);
Francomano Alberto (LONGOBARDA PONTECORVO); Martino Gianluca (SHASCIA
BOYS); Renzi Francesco (PARROCCHIA S.LUCIA); Rea Alessio
(RIST.RISORGIMENTO/ROCCASECCA); Bevilacqua Francesco, Valente Giacomo,
Vincentini Pierfrancesco (SAN GIORGIO '96); Assante Fabrizio
(LONGOBARDA PONTECORVO).
E questa è la query dove vengono prelevati i dati.
ClassificaMarcatori_Query
Squadra	NominativoGiocatore	GoalSegnati
SHASCIA BOYS	Golluccio Guido	3
LU.VI.RA. PIETRAMELARA	Rossi Fabio	3
LONGOBARDA PONTECORVO	Colucci Alessandro	2
BIKER SHOP S.VITTORE	Caporelli Francesco	2
BIKER SHOP S.VITTORE	Innocenzi Bruno	2
LA PINETA	Partigianone Simone	2
CASTELNUOVO	Caputo Giorgio	1
CASTELNUOVO	Silvestri Guido	1
LA PINETA	Pittiglio Davide	1
AUTORICAMBI DANIELE	Piergiorgio Mario	1
LONGOBARDA PONTECORVO	Francomano Alberto	1
SHASCIA BOYS	Martino Gianluca	1
PARROCCHIA S.LUCIA	Renzi Francesco	1
RIST.RISORGIMENTO/ROCCASECCA	Rea Alessio	1
SAN GIORGIO '96	Bevilacqua Francesco	1
SAN GIORGIO '96	Valente Giacomo	1
SAN GIORGIO '96	Vincentini Pierfrancesco	1
LONGOBARDA PONTECORVO	Assante Fabrizio	1
Sono proprio scoraggiato anche perchè dalla tua risposta ho capito che
non è problema di routine.
Ma che cavolo è!
Ciao Vladimiro.

 LONGOBARDA PONTECORVO	Assante Fabrizio	1
Come puoi vedere da questi dati il risultato non e' conforme a quanto 
aspettato. L'ultima riga e' fuori sequenza.Effettivamente il nome della 
squadra sembra uguale. Dovresti postare l'SQL della query, ho 
l'impressione che "non" ordini per nome squadra, ci sono anche altri 
fuori sequenza in particolare sulle due reti ed anche su una rete e' 
tuttto "mischiato"!
Prima dovrebbe venire Biker poi La pineta e poi Longobarda
L'ordinamento si fa cosě: ORDER BY GoalSegnati DESC, NomeSQuadra
-- 
ac
y-1=x

 - Mostra testo tra virgolette -
Detto...fatto:
SELECT Comunicato.Squadra, Comunicato.NominativoGiocatore,
Sum(Comunicato.GoalSegnati) AS GoalSegnati
FROM Comunicato
GROUP BY Comunicato.Squadra, Comunicato.NominativoGiocatore
HAVING (((Sum(Comunicato.GoalSegnati))>0))
ORDER BY Sum(Comunicato.GoalSegnati) DESC , Comunicato.Squadra;
funziona alla grande (nel senso che ho inserito un sacco di goal senza
avere problemi ... speriamo di non avere qualche altra sorpresa!).
Certo che se non lo testavo un pochettino!!!!!!
Adesso però non ho capito il senso.
Perchè il DESC pure sulla squadra?
Cioè, questo discorso vale solo per questo tipo di risultato o debbo
riguardarmi tutti i progetti fatti finora("progetti non complicati" ma
efficienti) dove ho messo in ordine solo i dati che mi interessavano?
Vladimiro.

 - Mostra testo tra virgolette -
Non voglio farti una testa come un pallone e neanche pretendere delle
risposte a tutti i costi; ma perchè, ritornando all'esempio di ieri,
14 nominativi A e 1 B, tutto Ok, 15 nominativi il caos?

 14 nominativi A e 1 B, tutto Ok, 15 nominativi il caos?
Non e' questo il senso della cosa:
1) La squadra non e' "DESC" e' "ASC", il *desc* riferisce solo ai goals.
2) Quando si fanno le cose si rende necessario avere la possibilita' di 
stabilire un ordinamento. La clausola ORDER BY la hanno messa apposta
3) Se non si indica un ordine particolare i dati vengono proposti 
nell'ordine di inserimento sul db.
4) Il problema del disordine non e' legato al numero di *nominativi* ma 
al fatto che, finche' non e' successo che hai inserito un nuovo nome per 
la stessa squadra, il problema non ha "galleggiato".
5) Questa dell'ordinamento, se non  mi ricordo male, e' la prima cosa 
che avevo detto andava fatta.
6) E' un bene che ci sia l'ordinamento (ascendente) sulla squadra. Cosi' 
le trovi in ordino alfabetico nell'ambito del numero di Reti.
-- 
ac
y-1=x

 - Mostra testo tra virgolette -
A presto Vladimiro.