Newsgroup: it.comp.appl.access
Titolo: ORDINARE REPORT ATTRAVERSO IL NUMERO DI PARAGRAFO

 
HO UN REPORT CHE ELENCA DIVERSI PARAGRAFI. IL NUMERO DI PAR. E' COMPOSTO DA
DUE O TRE BLOCCHI DI CIFRE AD ESEMPIO "3.5.10" OPPURE "3.5". IL MIO PROBLEMA
E' CHE SE HO UN PARAGRAFO "10.5.2" E UN ALTRO "5.3.4" CHIEDENDO DI METTERE
IN ORDINE CRESCENTE, METTE PRIMA IL PAR. "10.5.2" E DOPO IL "5.3.4" ANCHE SE
COME POTETE IMMAGINARE DEVE ESSERE IL CONTRARIO. CHI PUO' AIUTARMI? GRAZIE
MILLE!!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Scrivere in MAIUSCOLO significa gridare e benchè si possa capire l'urgenza 
del tuo appello, questo è contrario alle regole dei NG.
Detto questo ti propongo una variante di una funzione pubblicata da me su 
www.sitocomune.com
 (Estrarre tutti i numeri da una stringa).
Condizione perchè funzioni è che esista un campo chiamato Paragrafo che 
contiene i valori da te portati nell'esempio.
Crea una nuova query con anche il campo paragrafo; aggiungi una colonna e 
qui scrivi: ParagrafoNumerico: TrasformaTesto([Paragrafo)
Ordina a crescente questa colonna e con questa query alimenti il report. 
Questa la funzione che trasforma i soli numeri contenuti nella stringa 
Paragrafo in un valore double e quindi ordinabile.
Public Function TrasformaTesto(UnaStringa As String) As Double
 Dim pos As Integer, i As Byte, MiaStringa As String
 pos = 1
 For i = 1 To Len(UnaStringa)
 pos = InStr(1, UnaStringa, ".")
If IsNumeric(Mid$(UnaStringa, i, 1)) Then
  MiaStringa = MiaStringa & Mid$(UnaStringa, i, 1)
End If
Next i
 TrasformaTesto = CDbl(MiaStringa)
End Function
Una domanda banale: hai provato ad ordinare crescente il campo che contiene 
Paragrafo?
Ciao, Carlo

 ha scritto:

Chiedo scusa, non sapevo di questo fatto.
Grazie.




Si, ho provato ad ordinare crescente il campo che contiene Paragrafo, ma
come detto mette prima il Par. 10.3.5 e dopo 4.3.1.
Non ho capito invece bene cosa devo fare, devo creare la query e cosa ne
devo fare della formula? Dove la devo mettere? Non manca una parentesi
quadra? "ParagrafoNumerico: TrasformaTesto([Paragrafo)" Scusa la mia
ignoranza, Puoi spiegarmi meglio....
Grazie mille e scusa per il maiuscolo.




Nel caso in cui i Paragrafi da mettere in ordine fossero 10.5 e 8.2.2,
utilizzando la tua funzione quale dei due mette per prima? Dovrebbe essere
8.2.2 e poi 10.5. Grazie!


 ha scritto nel messaggio 
news:80Z180Z161Z23Y...@usenet.libero.it...

Sì con la funzione che ti ho postato non riesci ad ordinarli.
Effettivamente mancava la parentesi quadra nella query.
Vedrò cosa posso fare.
Ciao, Carlo 

 ha scritto nel messaggio 
news:80Z180Z161Z23Y...@usenet.libero.it...

Sostituisci alla funzione di prima, questa:
Public Function TrasformaTesto(UnaStringa As String) As String
 Dim pos As Integer, migliaia As String, centinaia As String, decine As 
String
 pos = InStr(1, UnaStringa, ".")
 If pos > 0 Then
 migliaia = Format(Mid$(UnaStringa, 1, pos), "000")
 UnaStringa = Mid(UnaStringa, pos + 1, Len(UnaStringa))
    pos = InStr(1, UnaStringa, ".")
        If pos > 0 Then
        centinaia = Format(Mid$(UnaStringa, 1, pos), "000")
        UnaStringa = Mid(UnaStringa, pos + 1, Len(UnaStringa))
        Else
        centinaia = Format(UnaStringa, "000")
        UnaStringa = ""
        End If
        decine = Format(UnaStringa, "000")
 End If
 TrasformaTesto = migliaia & centinaia & decine
End Function
Dovrebbe funzionare ad una sola condizione: il paragrafo deve contenere 
almeno un punto; per cui il paragrafo 1 o 2 o 40 andrà scritto 1.0 o 2.0 o 
40.0
Ciao, Carlo