Newsgroup: it.comp.appl.access
Titolo: Cambiare Ordinamento in un Report

Ciao a tutti.
Ho un report basato su una tabella nella quale ci sono i campi Titolo e 
Autore.
Necessito di stampare 2 listati:
1) Ordinato sul campo Titolo
2) Ordinato sul campo Autore
Per il primo listato non ho problema in quanto la tabella origine è già così 
ordinata.
Per il secondo listato non riesco a capire come si fa...  :-(
Ho provato a inserire nel codice dell'evento apertura report:
MioReport.OrderBy = "Autore"   , ma non funziona...
 
Private Sub Report_Open(Cancel As Integer)
If cDaDove = "Lista Completa Ordinata Per Autore" Then
     Me.OrderBy = "Autore"
End If
End Sub
 
Ho provato anche con GroupLevel() ma non mi aiuta a risolvere...
Pensavo fosse la cosa più elementare del mondo cambiare un ordinamento 
invece
mi sta facendo letteralmente ingarbugliare....
(Mi vergogno a dirlo ma per ora ho aggirato l'ostacolo creando 2 report con 
la
creazione guidata report, uno ordinato sul Titolo e l'altro ordinato su 
Autore..)
Grazie di cuore in anticipo per l'eventuale aiuto.
Antonio
 
 
 
 

 ...
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 


Salve Antonio...
Non hai specificato come apri il report!
Supponiamo che lo apri tramite un pulsante di una maschera:
prova ad inserire questo codice nell'evento clic del pulsante:
 
DoCmd.OpenReport "Nomereport", acViewPreview
Reports![Nomereport].OrderBy = "Autore"
 
Dovrebbe fare a caso tuo.
Saluti
M7a1x

 
 
"M7a1x"  ha scritto nel messaggio 
news:3dfb910c-79f1-40df...@googlegroups.com...

Ciao M7a1x, grazie per la risposta.
Il Report lo apro sull'evento doppio click fatto su
una casella di riepilogo esistente in una Maschera:
 
Private Sub MiaCasRiep_DblClick(Cancel As Integer)
Select Case Me.MiaCasRiep.ListIndex()
Case Is = 0
   (altro genere di stampa...)
Case Is = 1
   cDaDove = "Lista Completa Brani Ordinata Per Titolo"
   DoCmd.OpenReport "ListaCompleta", acViewPreview
Case Is = 2
   cDaDove = "Lista Completa Brani Ordinata Per Autore"
   DoCmd.OpenReport "ListaCompletaPerAutore", acViewPreview
End Select
 
(variabile cDaDove è pubblica)
Antonio
 
 
 

 
 
"Karl Donaubauer"  ha scritto nel messaggio 
news:b9epom...@mid.individual.net...

Ciao Karl, grazie per la risposta.
Non avevo messo Me.OrderByOn = True perchè,leggendo l'help, non
sembrava facesse al caso mio. Inoltre, con umiltà parlando, lo
avevo provato, chissàmai..., ma senza risultato.
Ad ogni buon conto, l'ho reinserito nella Sub, scritta sotto, ma non
funziona, nemmeno invertendo tra loro le righe
Me.OrderBy = "......."  e  Me.OrderByOn = True
Non capisco dov'è l'inghippo....    :-(
 
Private Sub Report_Open(Cancel As Integer)
If cDaDove = "Lista Completa Brani Ordinata Per Titolo" Then
   Me.Etichetta10.Caption = "Lista Completa Brani Ordinata Per Titolo"
   Me.OrderByOn = True
   Me.OrderBy = "Titolo"
ElseIf cDaDove = "Lista Completa Brani Ordinata Per Autore" Then
   Me.Etichetta10.Caption = "Lista Completa Brani Ordinata Per Autore"
   Me.OrderByOn = True
   Me.OrderBy = "Autore"
End If
End Sub
Antonio 
 

 
 
"M7a1x"  ha scritto nel messaggio 
news:3dfb910c-79f1-40df...@googlegroups.com...

Ciao M7a1x
Ho provato quello che suggerivi, ma non mi funziona....
Come ho scritto nell'immediata precedente risposta,
il codice è scritto sull'evento doppio click su una
casella di riepilogo.
il DoCmd.OperReport ......  l'avevo  ovviamente..
ho aggiunto la riga di codice
Reports![Nomereport].OrderBy = "Autore"
Si comporta esattamente come se l'OrderBy lo scrivessi
nel codice dell'evento OpenReport....  Me.OrderBy = "Autore"
cioè non viene assolutamente preso in considerazione....
Antonio
 
 
 
 
 
 

 (variabile cDaDove � pubblica)
 
Prova di togliere il codice nell'evento avvio del report
e invece impostare l'ordinamento gi� qui::
 
Private Sub MiaCasRiep_DblClick(Cancel As Integer)
 
Select Case Me!MiaCasRiep.ListIndex()
 
Case 0
   (altro genere di stampa...)
Case 1
   cDaDove = "Lista Completa Brani Ordinata Per Titolo"
   DoCmd.OpenReport "ListaCompleta", acViewPreview
    Reports!ListaCompleta.OrderBy = "Titolo"
    Reports!ListaCompleta.OrderByOn = True
Case 2
   cDaDove = "Lista Completa Brani Ordinata Per Autore"
   DoCmd.OpenReport "ListaCompleta", acViewPreview
    Reports!ListaCompleta.OrderBy = "Autore"
    Reports!ListaCompleta.OrderByOn = True
 
End Select


 
 
"Karl Donaubauer"  ha scritto nel messaggio 
news:b9g4gf...@mid.individual.net...

Ciao Karl
Ho provato a seguire le tue indicazioni ma il risultato non cambia.. :-(
Non funziona.
L'ordinamento esistente in raggruppamento e ordinamento del
Report resta inalterato...!
Non � che sia un clamoroso 'buco' di Access ?
Antonio
 
 

 Non è che sia un clamoroso 'buco' di Access ?
 
No, invece di un buco si tratta di un classico PEBKAC perché
non hai rivelato prima di avere impostato l'ordinamento già
con un raggruppamento nel report che certo vince sempre.
 
In principio si puo cambiare il raggruppamento (solo)
nell'evento "Su apertura" del report, p.e. per il primo
livello di raggruppamento:
 
If cDaDove = "Lista Completa Ordinata Per Autore" Then
     Me.GroupLevel(0).ControlSource = "Autore"
    'forse è anche necessario
    'Me.GroupLevel(0).SortOrder = True
...
 
Però se hai anche impostato intestazioni e piè del gruppo
con titoli ecc. il cambio diventa un po' complicato. Dipende
di questi dettagli se codice o due report sarebbe la
soluzione più semplice.


 
 
"Karl Donaubauer"  ha scritto nel messaggio 
news:b9gbs1...@mid.individual.net...

Ciao Karl
Ovviamente con due report è decisamente e velocemente risolta
la questione, basta copiare il primo report e cambiare nel report
copiato il nome campo su cui ordinare (nel raggruppamento e
ordinamento). Così, vergognandomi, procedo da qualche tempo...
Il problema è, se me lo concedi, di "stile/potenza"..., puntando ad
avere meno reports possibili, forms, variabili, ecc.....
Come già detto nei post di ieri anche con GroupLevel(0) non funziona...!
Ho esattamente scritto quello che anche tu hai scritto:
 
Me.GroupLevel(0).ControlSource = "Autore"
   'forse è anche necessario
   'Me.GroupLevel(0).SortOrder = True
 
Purtroppo non funziona...!
 
I due report, come già detto, sono esattamente uguali anche nelle
intestazioni e piè di pagina. E' la stessa tabella che viene stampata
prima ordinata su Titolo e poi ordinata su Autore, quindi non ci sono
ulteriori complicazioni....
Antonio
 
ps. E' stupefacente che con Access si può andare anche sulla Luna e
non si riesca ad andare dal negozietto vicino casa.....    :-)
 
 
 
 
 

 
 
"Karl Donaubauer"  ha scritto nel messaggio 
news:b9gbs1...@mid.individual.net...

Ciao Karl,
Scusa, dimenticavo di dire nel post appena inviato che il
raggruppamento e ordinamento del mio Report lo ha fatto
Access in automatico alla sua creazione, con la comodissima utilità:
Creazione Guidata Report.
(Credo che moltissimi Report di molti utenti Access siano fatti così..)
Antonio
 
 

 ulteriori complicazioni....
 
Di solito il codice di sopra funziona senza problemi.
Ci dev'essere un altro ostacolo nel tuo caso.


 
...cut
"Karl Donaubauer"  ha scritto nel messaggio 
news:b9gbs1...@mid.individual.net...
 
If cDaDove = "Lista Completa Ordinata Per Autore" Then
     Me.GroupLevel(0).ControlSource = "Autore"
    'forse � anche necessario
    'Me.GroupLevel(0).SortOrder = True
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
Ciao Karl,
Ora funziona perfettamente.
Non serve:
Me.GroupLevel(0).SortOrder = True
in quanto SortOrder decide solo se ordinare
da "a" a "z" ( = false che e' il default) o
da "z" a "a" ( = true )
Non serve OrderByOn...    e OrderBy......
Serve solamente:
Me.GroupLevel(0).ControlSource = "Titolo"  e
Me.GroupLevel(0).ControlSource = "Autore"