Ordinamento dei campi in un portale e ricerca records.
Moderatore: Moderatori
-
- Messaggi: 143
- Iscritto il: giovedì 24 maggio 2007, 2:00
- Località: Varese
Ordinamento dei campi in un portale e ricerca records.
Salve ragazzi, mi rendo conto che l'argomento è stato ampiamente dibattuto, ma pur provandoci non sono riuscito a combinare nulla. Ho cercato esempi sul forum e fuori, ho trovato delle soluzioni bellissime, ma troppo difficili da capire e da applicare nella mia soluzione.
In breve, attualmente ho un portale dove vedo tutti i record tramite un campo globale ed una autorelazione. Mi spiegate in modo che possa capire, come e perchè devo impostare script e variabili per ottenere su un campo ad un click l'ordinamento crescente ed al successivo quello decrescente?
Ho provato a comprendere il funzionamento di un bellissimo script di Olto da lui citato in questo forum, sto studiandone uno altrettanto valido segnalato da Book, ma sono complessi con tutte quelle tabelle presenti, è un attimo perdersi; il mio problema è di capirne il meccanismo, non di copiarlo pedissequamente. Sui testi (in italiano) più che esempi di portali autorelazionati, con possibilità di inserimento non trovo. Possibile che non si trovi un esempio semplice con un solo campo da ordinare?
Stesso discorso per la ricerca;
Ho creato un campo calcolo che "prende" le prime 3 lettere partendo da sinistra del campo "nome", e l'ho relazionato con il campo da dove effettuo la ricerca; funziona bene, ma se volessi poi vedere tutti i records non posso + farlo; Occorrebbe poterlo switchare su un altro campo tipo globale, non so però realizzarlo.
Grazie per la pazienza, ma devo pur imparare da qualcuno.
Angelo
In breve, attualmente ho un portale dove vedo tutti i record tramite un campo globale ed una autorelazione. Mi spiegate in modo che possa capire, come e perchè devo impostare script e variabili per ottenere su un campo ad un click l'ordinamento crescente ed al successivo quello decrescente?
Ho provato a comprendere il funzionamento di un bellissimo script di Olto da lui citato in questo forum, sto studiandone uno altrettanto valido segnalato da Book, ma sono complessi con tutte quelle tabelle presenti, è un attimo perdersi; il mio problema è di capirne il meccanismo, non di copiarlo pedissequamente. Sui testi (in italiano) più che esempi di portali autorelazionati, con possibilità di inserimento non trovo. Possibile che non si trovi un esempio semplice con un solo campo da ordinare?
Stesso discorso per la ricerca;
Ho creato un campo calcolo che "prende" le prime 3 lettere partendo da sinistra del campo "nome", e l'ho relazionato con il campo da dove effettuo la ricerca; funziona bene, ma se volessi poi vedere tutti i records non posso + farlo; Occorrebbe poterlo switchare su un altro campo tipo globale, non so però realizzarlo.
Grazie per la pazienza, ma devo pur imparare da qualcuno.
Angelo
FMP Adv. 9.0v3, Windows 7 Ultimate 64Bit
-
- Messaggi: 9700
- Iscritto il: lunedì 1 dicembre 2003, 1:00
- Località: Roma
- Contatta:
due metodi fondamentali (con la 8 o sup.):
a) crei n schede, ciascuna con un portale con un ordinamento e vai dall'una all'altra
b) ordini il portale per un campo numerico indicizzato (diciamo ordinaper).
lo script sarà:
if(not evuoto(nome_relazione::ID)
vai ai record correlati (solo record stessa finestra)
ordine per (criterio a tua scelta)
sostituisci contenuto campo (ORDINAPER; Sostituisci con numeri di serie)
vai al formato originale
end if
nota: non è particolarmnte performante, con più di un paio di centinaia di record correlati fatica
notabis: questa è la verisone monoutente, in multiutenza vanno studiati alcuni accorgimenti per evitare il record locking.
.g.
a) crei n schede, ciascuna con un portale con un ordinamento e vai dall'una all'altra
b) ordini il portale per un campo numerico indicizzato (diciamo ordinaper).
lo script sarà:
if(not evuoto(nome_relazione::ID)
vai ai record correlati (solo record stessa finestra)
ordine per (criterio a tua scelta)
sostituisci contenuto campo (ORDINAPER; Sostituisci con numeri di serie)
vai al formato originale
end if
nota: non è particolarmnte performante, con più di un paio di centinaia di record correlati fatica
notabis: questa è la verisone monoutente, in multiutenza vanno studiati alcuni accorgimenti per evitare il record locking.
.g.
-
- Messaggi: 143
- Iscritto il: giovedì 24 maggio 2007, 2:00
- Località: Varese
Ho provato il metodo "b", e funziona molto bene.
Credo che il problema di questo metodo stia nel fatto che tutti i campi "ordinaper" di ogni record devono contenere un valore numerico, quindi per grandi numeri di records (i duecento o più di cui parlavi) la loro numerazione richiede del tempo, e da quì il conseguente ritardo nella risposta a video.
Nell'eventualità che cio possa accadere, occorre considerare altre metodi?
Ciao,
Angelo
Credo che il problema di questo metodo stia nel fatto che tutti i campi "ordinaper" di ogni record devono contenere un valore numerico, quindi per grandi numeri di records (i duecento o più di cui parlavi) la loro numerazione richiede del tempo, e da quì il conseguente ritardo nella risposta a video.
Nell'eventualità che cio possa accadere, occorre considerare altre metodi?
Ciao,
Angelo
FMP Adv. 9.0v3, Windows 7 Ultimate 64Bit
-
- Messaggi: 9700
- Iscritto il: lunedì 1 dicembre 2003, 1:00
- Località: Roma
- Contatta:
-
- Messaggi: 69
- Iscritto il: mercoledì 12 novembre 2003, 1:00
- Località: Montegrotto Terme
- Contatta:
CIao a tutti,
io proverei a lavorare anche in un altro modo che tenterò di spiegare di seguito.
Immaginiamo che il campo su cui fare l'ordinamento sia numerico.
Io creerei un nuovo campo ordinamento ed un pulsante con allegato un script (o camp calcolato) che dice (più o meno)
-Se mi premi imposta tipo ordinamento opposto al precedente
- se ordinamento ascendente imposta valore campo da ordinare su campoordinamento
- se ordinamento discedente
- trova il valore maggiore e determina l'intero superiore (se valore maggiore = 6750 allora intero superore = 7000)
- imposta campoordinamento= 7000- campo da ordinare
- fai refresh del video
In questo modo mi trovrei sempre il portale ordinato per il campo (e nel modo) che mi interessa.
Lavorando un pochino, la cosa potrebbe diventare ancora più interessante (l'ho fatto su una procedura di controllo del venduto) in cui l'ordinamento lo si pò fare per gli n-campi presenti sul portale dicendo qualcosa del tipo:
- se premi il pulsante X allora ordina per X, se Y allora ordina per Y, ...
e inltre con la stessa tecnica si può lavorare con i campi alfanumerici.
Per i campi alfa, se mi ricordo posto l'esempio
CIao
Ruggero
io proverei a lavorare anche in un altro modo che tenterò di spiegare di seguito.
Immaginiamo che il campo su cui fare l'ordinamento sia numerico.
Io creerei un nuovo campo ordinamento ed un pulsante con allegato un script (o camp calcolato) che dice (più o meno)
-Se mi premi imposta tipo ordinamento opposto al precedente
- se ordinamento ascendente imposta valore campo da ordinare su campoordinamento
- se ordinamento discedente
- trova il valore maggiore e determina l'intero superiore (se valore maggiore = 6750 allora intero superore = 7000)
- imposta campoordinamento= 7000- campo da ordinare
- fai refresh del video
In questo modo mi trovrei sempre il portale ordinato per il campo (e nel modo) che mi interessa.
Lavorando un pochino, la cosa potrebbe diventare ancora più interessante (l'ho fatto su una procedura di controllo del venduto) in cui l'ordinamento lo si pò fare per gli n-campi presenti sul portale dicendo qualcosa del tipo:
- se premi il pulsante X allora ordina per X, se Y allora ordina per Y, ...
e inltre con la stessa tecnica si può lavorare con i campi alfanumerici.
Per i campi alfa, se mi ricordo posto l'esempio
CIao
Ruggero
-
- Messaggi: 172
- Iscritto il: venerdì 11 maggio 2007, 2:00
ma io faccio cosi, funziona anche se non so spiegare il perchè
Dalla tabella principale vedo una tabella secondaria che ha 4 campi
primo
secondo
terzo
quarto
poi un campo globale "ordinaper" (che prende i valori da 1 a 4)
poi un campo calcolato "usaperordine":
casi (
ordinaper=1;primo;
ordinaper=2;secondo;
ordinaper=3;terzo;
ordinaper=4;quarto;"")
Il mio portale sulla tabella principale lo ordino per il campo calcolato "usoperordine", quindi con un pulsante modifico il campo "ordinaper con i valori da 1 a 4" e a secondo del numero che scelgo "usaperordine" cambia e l'ordinamento del portale..... NON FUNZIONA poiche il campo "usaperordine" e calcolato e non indicizzabile, ma....
Se oltre che il portale ordino anche la relazione "ordinaper" e i campi primo, secondo, terzo e quarto li indicizzo forzatamente, CAVOLO funziona.
In pratica ordino il mio portale per tutti i campi relazionati come mi pare quando voglio, senza script, immediato o sostituzioni....
Sara un bugs di Filemaker che fa una cosa che non dovrebbe fare, comunque FUNZIA.
per chi vuole ho il file di prova.
Dalla tabella principale vedo una tabella secondaria che ha 4 campi
primo
secondo
terzo
quarto
poi un campo globale "ordinaper" (che prende i valori da 1 a 4)
poi un campo calcolato "usaperordine":
casi (
ordinaper=1;primo;
ordinaper=2;secondo;
ordinaper=3;terzo;
ordinaper=4;quarto;"")
Il mio portale sulla tabella principale lo ordino per il campo calcolato "usoperordine", quindi con un pulsante modifico il campo "ordinaper con i valori da 1 a 4" e a secondo del numero che scelgo "usaperordine" cambia e l'ordinamento del portale..... NON FUNZIONA poiche il campo "usaperordine" e calcolato e non indicizzabile, ma....
Se oltre che il portale ordino anche la relazione "ordinaper" e i campi primo, secondo, terzo e quarto li indicizzo forzatamente, CAVOLO funziona.
In pratica ordino il mio portale per tutti i campi relazionati come mi pare quando voglio, senza script, immediato o sostituzioni....
Sara un bugs di Filemaker che fa una cosa che non dovrebbe fare, comunque FUNZIA.
per chi vuole ho il file di prova.
-
- Messaggi: 143
- Iscritto il: giovedì 24 maggio 2007, 2:00
- Località: Varese
Grazie Ruggero, grazie Camomilla,
non ne avete fatto menzione nelle risposte, ma a scanso di equivoci, chiedevo se i metodi che avete indicato mantengono la performance di ordinamento anche nel caso di grossi quantitativi di dati, che come faceva notare Stregatto, era il limite per il metodo che mi aveva a suo tempo consigliato?
Sarei curioso di provarli, se possibile potete postarmi degli esempi o indicarmi un link da dove scaricarli?
grazie
Angelo
non ne avete fatto menzione nelle risposte, ma a scanso di equivoci, chiedevo se i metodi che avete indicato mantengono la performance di ordinamento anche nel caso di grossi quantitativi di dati, che come faceva notare Stregatto, era il limite per il metodo che mi aveva a suo tempo consigliato?
Sarei curioso di provarli, se possibile potete postarmi degli esempi o indicarmi un link da dove scaricarli?
grazie
Angelo
FMP Adv. 9.0v3, Windows 7 Ultimate 64Bit
-
- Messaggi: 54
- Iscritto il: giovedì 28 dicembre 2006, 1:00
Ciao, ho anch'io la necessità di ordinare i record in un portale autorelazionato ed ho provato ad implementare la soluzione B di Stregatto che mi sembra la più indicata per me ma non mi fà l'ordinamento, nel campo ORDINAPER ci sono tutti i record inseriti in modo progressivo ma ordinati per un'altro campo, non per quello che ho chiesto io, da cosa può dipendere che non mi esegue l'ordinamento per il campo voluto ?!?
grazie
grazie
FMPRO 12 Adv, Windows 7