Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ordinare i campi in maschera

575 views
Skip to first unread message

Giorgio

unread,
Jul 31, 2004, 7:07:12 AM7/31/04
to
Ciao
In una maschera che è alimentata da una tabella ho tre
campi (NOME_LIBRO, ANNO,MESE)che vorrei vedere
visualizzati in ordine crescente. Utilizzando una query
questo problema sò risolverlo, ma da una tabella non ne
sono certo. Tra l'altro (potrebbe essermi utile) se
utilizzassi una stringa sql da vba ("Select * from
tabella1) come origine riga, non potrei impostare ORDERBy,
a meno di elencare tutti i campi nella select,vero?
Grazie

ALESSANDRO Baraldi

unread,
Jul 31, 2004, 7:36:24 AM7/31/04
to

"Giorgio" <anon...@discussions.microsoft.com> ha scritto nel messaggio
news:79e901c476ee$87985d20$a601...@phx.gbl...

Ovviamente con una Query le cose sono semplici, ma anche poco flessibili
a meno di non riscrivere la sintassi SQL come hai giustamente evidenziato.
In ogni caso nella SELECT.....ORDER BY...." puoi scrivere anche solo un
criterio
e non obbligatoriamente tutti.

Tieni presente che la Form ha una proprietà chiamata OrderBy.
Questa può essere impostata Runtime:

Supponi di avere un OptionButton con le 3 Opzioni:
NOME_LIBRO=1
ANNO=2
MESE=3

Select case OptButton
Case 1
Me.OrderBy="NOME_LIBRO"
Case 2
Me.OrderBy="ANNO"
Case 3
Me.OrderBy="MESE"
End Select
Me.OrderByOn=True

Ovviamente se le vuoi Decrescenti inserisci "DESC"

Ciao.
@Alex.


Giorgio

unread,
Jul 31, 2004, 8:17:13 AM7/31/04
to

>-----Messaggio originale---
>.Ciao Alessandro, intanto grazie per le informazioni.

>Quando parlavo di Select via VBA intendevo la
proprietà "RecordSource" cioè volevo utilizzare i dati di
una tabella tramite "LIBRI_LETTI = "Select * from
ELENCO_LIBRI_LETTI", pertanto se in questo caso avessi
voluto ordinare i campi di cui sopra non sarebbe stato
sufficiente scrivere "Select * from ELENCO_LIBRI_LETTI",
ma avrei dovuto riportare almeno quei campi che sono da
ordinare anziché usare l'asterisco. Poi considera che ho
necessità che tutti e tre i campi (Nome_LIBRO, ANNO,
MESE) siano ordinati contemporaneamente (in una query
potrei metterli in progressione con l'impostazione ORDERBY.
L'ideale, ripeto, sarebbe poterlo fare tramite VBA con
RecordSource, ma ho timore che per farlo debbo riportare
nella Select tutti i campi della tabella e non limitarmi
all'asterisco. E' così Alex?
Ciao

ALESSANDRO Baraldi

unread,
Jul 31, 2004, 8:35:28 AM7/31/04
to

"Giorgio" <anon...@discussions.microsoft.com> ha scritto nel messaggio
news:7ccb01c476f8$4f77e140$a501...@phx.gbl...

Non condivido il concetto di Ideale che applichi.
Secondo me così come vuoi fare tu è estremamente più
lento e poco pratico.
Perchè devi forzatamente ricorrere alla modifica del Recordsource
di Form quando ti spiegavo che ti basta usare la proprietà
OrderBy di Form....????

Con questa proprietà ci fai quello che vuoi anche 10 criteri di ordinamento
se credi.

Vantaggio:
Non tocchi il RecordSource che può essere pure la Tabella.
On devi riaggiornare tutto il Recordset di Form con conseguente
perdita di tempo inutile.
Flessibilità estrema nell'applicazione con VBA.

BOH.....!

In ogni caso la risposta alla tua ultima domanda è si, devi specificarli
uno per volta.

Ciao.
@Alex.


Giorgio

unread,
Jul 31, 2004, 8:53:02 AM7/31/04
to
>.Alex tu hai ragione, ma fra me e te c'è un gap abissale.
va bene in questo modo?
Me.RecordSource = Elenco......
Me.OrderBy=Nome_Libro
Me.OrderBy = ANNO
Me.OrderBy = MESE

Dimmi un'altra cosa:
Volevo metterli in riga, tipo:
me.orderby=nome_libro,Anno,Mese
ma mi dà errore

Ciao


ALESSANDRO Baraldi

unread,
Jul 31, 2004, 8:58:38 AM7/31/04
to

"Giorgio" <anon...@discussions.microsoft.com> ha scritto nel messaggio
news:7cf301c476fd$50991670$a501...@phx.gbl...

[CUT]

.Alex tu hai ragione, ma fra me e te c'è un gap abissale.
va bene in questo modo?
Me.RecordSource = Elenco......
Me.OrderBy=Nome_Libro
Me.OrderBy = ANNO
Me.OrderBy = MESE

Dimmi un'altra cosa:
Volevo metterli in riga, tipo:
me.orderby=nome_libro,Anno,Mese
ma mi dà errore

Ciao

Allora il RecordSource ti conviene non impostarlo da Codice
per evitare di dover ricaricare il Recordset dopo il Load.
Imposta la stringa direttamente aiutandoti con l'autocomposizione
dalla Form proprietà di Maschera e cliccando il Pulsantino a destra
della riga OrigineRecord, quì hai il modo di comporre la stringa
SQL in modo visuale(ritengo sia il metodo più comodo).

Poi per gestire la proproetà OrderBy devi anche dare un'occhiata
all'Help, e vedrai che si tratta di una proprietà che richiede una stringa.

Me.OrderBy=Nome_Libro
Me.OrderBy = ANNO
Me.OrderBy = MESE

In questo modo annulli sempre la precedente, quindi sarà vera solo l'ultima
anche se la sintassi è sbagliata:
Me.OrderBy = "MESE"


Dimmi un'altra cosa:
Volevo metterli in riga, tipo:
me.orderby=nome_libro,Anno,Mese
ma mi dà errore

Questo è il modo corretto, ma per quanto spiegato prima è ovviamente
da rivedere la sintassi:
me.orderby="nome_libro,Anno,Mese"
me.OrderByOn=True

Non dimenticare l'ultima riga altrimenti non ha effetto.

Spero di averti chiarito meglio.

@Alex.


Giorgio

unread,
Jul 31, 2004, 10:58:59 AM7/31/04
to

Grazie Alessandro, va tutto bene.
Ciao e a presto
0 new messages