Newsgroup: it.comp.appl.access
Titolo: Ordinamento record nel report, HELP !

Ho la necessità di svolgere la seguente operazione:
Ho un report tabellare con i seguente campi:
ID
Nome Cliente
Tipo Prodotto
Data Ingresso
Data Uscita
Mediante una maschera posso selezionare il campo da utilizzare per
l'ordinamento. Come posso fare per dire al report il tipo di
ordinamento da utilizzare?
La soluzione alternativa sarebbe quella di creare 5 report diversi ma
speravo in una sintassi da inserire nel comando DoCmd.OpenReport
Ho provato il seguente ma non funziona:
DoCmd.OpenReport blablaba, "", "ORDER BY [ID]"
Grazie a tutti quelli che mi aiuteranno.

 ha scritto nel messaggio
news:0z0EOZ2=BCNxN4UIdh...@4ax.com...

Con il comando DoCmd.OpenReport ... applichi un eventuale filtro al report
ma questo non funzionerà perchè già deriva da una query o da una tabella e
il filtro va applicato prima dell'evento formattazione o stampa del report.
Prova così: dopo aver costruito il report non dargli alcun ordinamento,
lascia tutti i controlli che ti servono e cancella l'origine record. Cioè se
il report deriva da una tabella che si chiama Pippo, dalla finestra delle
proprietà del report, cancella Pippo dall'origine record. Salva e chiudi il
report.
Nella maschera sull'evento clic del pulsante che apre il report scrivi
l'istruzione sql che alimenterà il report stesso avendo cura di individuare
il tipo d'ordinamento. Se sono cinque gli ordinamenti possibili devi
costruire cinque istruzioni sql che passerai alla proprietà "RecordSource"
del report. Il trucco sta nel passare l'istruzione prima dell'apertura del
report:
Private Sub Comando1_Click()
    Dim MiaSQl as String
    Select case Me.MioControllo
    Case 1
    MiaSQl = "SELECT TabellaImpegni.Data, TabellaImpegni.CentroCosto FROM
TabellaImpegni ORDER BY TabellaImpegni.CentroCosto;"
    Case 2
    MiaSQL = "SELECT TabellaImpegni.Data, TabellaImpegni.CentroCosto FROM
TabellaImpegni ORDER BY TabellaImpegni.Data;"
    Case 3
    MiaSQL = ...
    Case 4...
    End Select
 Dim stDocName As String
    stDocName = "Report1"
    Reports!Report1.RecordSource = MiaSQL
    DoCmd.OpenReport stDocName, acPreview
    End Sub
Ovviamente dovrai cambiare l'istruzione con i nomi delle tue tabelle e dei
tuoi controlli.
Vedrai che funziona.
Ciao, Carlo



OK, fatto.... ma non fuziona :-(
Il mio report si chiama Scadenziario.
Ho tolto l'origine record dalle proprietà del report, poi dal pulsante
della maschera ho provato ad inserire il tuo codice.
Quando arrivo all'istruzione:
Reports!Report1.RecordSource = MiaSQL
mi viene visulizzato il seguente messaggio di errore:
Il nome di report 'Scadenziario' immesso è errato oppure fa
riferimento ad un report non aperto o inesistente.
Se invece uso la sintassi:
Report_Scadenziario.RecordSource = MiaSQl
l'errore è il seguente:
Impossibile impostare la proprietà Origine record dopo l'avvio della
stampa (inutile dire che il report è chiuso).
Come posso fare? GRAZIE.


Scusami hai ragione. Ho commesso l'ingenuità di tenere il report aperto in
modo struttura.
Allora crea una variabile globale in un modulo: Global MiaSQL as String
Lascia tutto invariato tranne:
nella maschera cancella l'istruzione Reports!Report1.RecordSource = MiaSQL e
Dim MiaSQL as String
così:
 Select Case Me.MioControllo
    Case 1
   MiaSQl = "SELECT TabellaImpegni.Data, TabellaImpegni.CentroCosto FROM
TabellaImpegni ORDER BY TabellaImpegni.CentroCosto;"
    Case 2
    MiaSQl = "SELECT TabellaImpegni.Data, TabellaImpegni.CentroCosto FROM
TabellaImpegni ORDER BY TabellaImpegni.Data;"
    'ecc...
   End Select
 Dim stDocName As String
    stDocName = "Scadenzario"
    DoCmd.OpenReport stDocName, acPreview
Nel report sull'evento Apertura scrivi: Me.RecordSource = MiaSQL
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = MiaSQl
End Sub
 Ora tutto funziona.
Cosa abbiamo fatto: creato una variabile globale di tipo stringa
Assegnato alla variabile una istruzione sql dipendente dal tipo di
ordinamento richiesto.
Forzare il RecordSource del report alla variabile globale.
Ciao, Carlo

GRAZIE Funziona perfettamente!
Ora ho ancora un altro piccolo problema.
Ho provato a dividere le tabelle dal resto dell'archivio ma viene
memorizzato da qualche parte il percorso de file sul mio HDD. Quando
vado a spostare la il file _be assieme al file prinicipale il
programma non funziona più.
Ho provato a seguire i consigli di un post precedente ma non ci sono
riuscito.
Please help me!
GRAZIE INFINITE.

 ha scritto nel messaggio
news:NMsFOQyOkGKXxD...@4ax.com...

Ok. Devi riallegare le tabelle dal Front-end (il db con le maschere).
Per fare ciò:
In Access 2000: Menù strumenti...Utilità database...Gestione tabelle
collegate...selezionare il percorso del Back-End (il db con le tabelle).
In Access 97: Strumenti...Aggiunte...Gestore Tabelle collegate.
Per poter accedere a queste funzioni devi aver installato le "Aggiunte".
Ciao, Carlo


Si ma supponiamo che il mio programma Access lo debba installare una
persona sul suo PC.
Lui metterà il Front-end ed il Back-end in una cartella a suo
piacimento, e supponiamo anche che non sappia assolutamente nulla di
tabelle, access, dati, ecc....
Vorrei un metodo che mi permetta di settare il percorso della mia
tabella all'avvio del programma.
In ogni caso la cartella del back-end sarebbe sempre la stessa del
front-end.
E' possibile?
con la proprietà CurrentDB.TableDefs!MiaTabella.connect riesco a
leggere il percorso ma non riesco a impostarne uno nuovo.
GRAZIE.

Grazie a tutti quelli che mi aiuteranno.
Si può fare tutto da codice.
Io per pigrizia inserisco nella maschera "Ordinamento e raggruppamento" un
campo a caso ( il primo)
poi in base alla selezione utente in Report_Open scrivo
    Me.GroupLevel(0).ControlSource = "MioCampo"
eventualmente
    Me.IntestazioneGruppo0.ForceNewPage = 0
e termino con l'obbligatorio
     Me.OrderByOn = True
Ciao
        Cesare