Newsgroup: it.comp.appl.access
Titolo: ordinare i record in una maschera continua come in explorer

un saluto a tutti:
ho uma maschera continua che viene generata da una query.
vorrei che cliccando sull'etichetta di un campo i recor fossero
ordinati in ordine crescente (se non fosse tropppo difficile al 2�
click in ordine decrescente) proprio come avviene in esplora risorse
di windows.
ho provato con order by, ma sbaglio la sintassi e non so come fare.
qulacuno mi puo' aiutare?
grazie
oscar

Oscar ha scritto:

Metti il seguente codice in un modulo
Public Sub Ord(ByRef Maschera As Form, ByRef CAMPO As String, ByRef Etichetta As String, ByRef TITOLO As String)
On Error GoTo Err_desc
 
    If InStr(1, TITOLO, "�") = 0 And InStr(1, TITOLO, "�") = 0 Then
 
        DoCmd.Hourglass (True)                           ' Clessidra. Routine al lavoro
 
        Call ResetIntesta(Maschera)
 
        With Maschera
 
            .Controls(Etichetta).SpecialEffect = 2       ' Premo il "PULSANTE"
            .Controls(Etichetta).BackColor = 26367       ' Cambio colore
            .OrderBy = CAMPO                             ' Ordino
            .OrderByOn = True                            ' Effettuo l'ordinamento
            .Controls(Etichetta).SpecialEffect = 0       ' Rilascio il "PULSANTE"
            .Controls(Etichetta).BackColor = 16777164    ' Colore originale
            .Controls(Etichetta).Caption = TITOLO & " �"
 
        End With
 
        DoCmd.Hourglass (False)                          ' Rimuovo clessidra
 
    ElseIf InStr(1, TITOLO, "�") = 0 Then
 
        DoCmd.Hourglass (True)                           ' Clessidra. Evidenze st� lavorando
 
        TITOLO = Left(TITOLO, Len(TITOLO) - 2)
 
        Call ResetIntesta(Maschera)
 
        With Maschera
 
            .Controls(Etichetta).SpecialEffect = 2       ' Premo il "PULSANTE"
            .Controls(Etichetta).BackColor = 26367       ' Cambio colore
            .OrderBy = CAMPO                             ' Ordino
            .OrderByOn = True                            ' Effettuo l'ordinamento
            .Controls(Etichetta).SpecialEffect = 0       ' Rilascio il "PULSANTE"
            .Controls(Etichetta).BackColor = 16777164    ' Colore originale
            .Controls(Etichetta).Caption = TITOLO & " �"
 
        End With
 
        DoCmd.Hourglass (False)
 
    Else
 
        DoCmd.Hourglass (True)                           ' Clessidra. Routine al lavoro
 
        TITOLO = Left(TITOLO, Len(TITOLO) - 2)
 
        Call ResetIntesta(Maschera)
 
        With Maschera
 
            .Controls(Etichetta).SpecialEffect = 2       ' Premo il "PULSANTE"
            .Controls(Etichetta).BackColor = 26367       ' Cambio colore
            .OrderBy = CAMPO & " desc"                   ' Ordino
            .OrderByOn = True                            ' Effettuo l'ordinamento
            .Controls(Etichetta).SpecialEffect = 0       ' Rilascio il "PULSANTE"
            .Controls(Etichetta).BackColor = 16777164    ' Colore originale
            .Controls(Etichetta).Caption = TITOLO & " �"
 
        End With
 
        DoCmd.Hourglass (False)                          ' Rimuovo clessidra
 
    End If
 
Uscita:
    Exit Sub
Err_desc:
    MsgBox ErrDesc & Chr(13) & Err.Description & Chr(13) & Chr(13) & "(" & 
Screen.ActiveForm.Name
 & ")" & Chr(13) & Err.Number, vbCritical, ErrTitolo
    Resume Uscita
 
End Sub
Public Function ResetIntesta(Maschera As Form) As String
 
  Dim ctr As Control
 
  For Each ctr In Maschera.Controls
       If ctr.ControlType = acLabel Then
            If InStr(1, ctr.Caption, "�") <> 0 Or InStr(1, ctr.Caption, "�") <> 0 Then
                 ctr.Caption = Left(ctr.Caption, Len(ctr.Caption) - 2)
            End If
       End If
  Next ctr
End Function
la puoi chiamare da ogni form che vuoi. Basta passarli i parametri
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it


wrote:

sono un principiante e quindi ci ho capito poco o nulla: la cosa che
ho fatto � aprire un nuovo modulo che ho chiamato "ordina" e ci ho
copiato-incollato il lungo codice che mi hai postato ed adesso?
ciao e grazie
Oscar

 ha scritto nel messaggio 
news:4a06aeb8...@news.fastwebnet.it...

3.64 Ordinare i dati di una vista tabellare cliccando sull'intestazione di 
colonna
www.sitocomune.com
ciao
Daniele

Oscar
Hai fatto benissimo!!!!
Sull'evento 'su click' dell'etichetta (la chiamo Et1) che ordina il campo 'Campo1' scrivi
Call Ord(Me, "Campo1", "Et1", Me.Et1.Caption)
ed � fatta!!!


Oscar ha scritto:

non funziona:
se scrivo la stringa da te suggerita direttamente  sulla riga
dell'evento su click compare il seguente errore:
impossibile trovare la macro Call Ord(Me, "Riduzione", "Etichetta11",
Me.Etichetta11.Caption)
se la ricopio nel codice compare quest'altro errore:
errore di compilazione variabile non definita
Cosa c'� che non va?
grazie dell'aiuto
Oscar


wrote:

molto bello e utile l'esempio che mi hai suggerito, ma funziona al
50%:
nella maschera continua ho quattro campi generati da una queery , uno
di testo ed uno numerico che vengono direttamente dalla tabella, e due
campi calcolati dalla query. la maschera funziona pefettamente per i
primi due, mentre per gli altri due mi da il seguente messaggio di
errore:
438 proprite� o metodo non supportatati dall'oggetto.
hai qualche suggerimento da darmi?
ciao e grazie
Oscar


nn devi copiarla sulla riga dell'evento, ma creare l'evento Su click (scegli dal menu [Routine evento]) e poi scriverlo dentro
Se ti da ancora errore posta quale variabile risulta ad Access 'nn definita'



wrote:

mi visualizza in giallo le prime righe:
Public Sub Ord(ByRef Maschera As Form, ByRef CAMPO As String, ByRef
Etichetta As String, ByRef TITOLO As String)
e poi l'errore nelle ultime righe in gialo "ErrDesc".
Non potendo evidenziarlo in altro modo lo separo dal resto del testo e
lo racchiudo tra doppie parentesi quadre (che naturalmente non ci
sono)
Uscita:
    Exit Sub
Err_desc:
    MsgBox     	  [[ErrDesc]]   	    & Chr(13) &
Err.Description & Chr(13) & Chr(13) & "(" & 
Screen.ActiveForm.Name
 &
")" & Chr(13) & Err.Number, vbCritical, ErrTitolo
    Resume Uscita
 
End Sub
grazie di nuovo
oscar

oscar
sono un idiota...chiedo venia...ci sono variabili globali che uso e definisco io....
Err_desc:
Err.Description & "(" & Err.Number & ")", vbCritical, "GESTIONE ERRORI"
Resume Uscita



wrote:

io sono sicuramente peggio di te:
ho sostituito le righe errate che ti ho postato con la tua ultima che
dovrebbe essere corretta, ma mi da un errore di sintassi ed essendo io
un analfabeta al riguardo non riesco a trovarlo.
scusa per la petulanza
Oscar

>Resume Uscita
questa � nata male......scusa la perdita di tempo
Err_desc:
msgbox Err.Description & "(" & Err.Number & ")", vbCritical, "GESTIONE ERRORI"
Resume Uscita
nel caso si incantasse ancora, tagliamo la testa al toro:
Err_desc:
msgbox "Errore n. " & Err.Number 


[MEGA CUT]

� perfetto!!!
grazie mille
Oscar

Oscar
:-)
