Portali a cascata

Utilizzo dei portali in un database FileMaker

Moderatore: Moderatori

Rispondi
Pantera
Messaggi: 3
Iscritto il: giovedì 5 aprile 2007, 2:00
Località: Gabicce Mare

Portali a cascata

Messaggio da Pantera »

Ciao a tutti.
E' il mio primo messaggio, spero di beccare poki insulti :P

Alura, cerchero' di essere "preciso" il piu' possibile.
Sono giorni che sto' dietro a questa cosa, ma non sono riuscito
ancora a tirar fuori nulla.

Devo costruire un applicativo per gestire la lista attività di tutti
i miei colleghi. L'applicativo non è piccolissimo, magari ne riparlero',
ma per ora vorrei capire come risolvere.

Tabelle e "chiavi"
-----------------------------------------------------------------
- Risorse (Sono gli impiegati)
idRisorsa univoco, testo, non vuoto
- Attività (sono le diverse attività degli impiegati)
idAttività univoco, numerico, autoincrementato, indicizzato
rifRisorsa numerico, indicizzato
- Tempi (sono gli intervalli di tempo usato per ogni attività)
rifAttività numerico, indicizzato

Relazioni
-----------------------------------------------------------------
- Attività verso Risorse tramite rifRisorsa
Spuntata la casella per cui posso aggiungere nuove attività
- Tempi verso Attività tramite rifAttività
Spuntata la casella per cui posso aggiungere nuovi tempi


In generale: ho "n" risorse, per ogni risorsa possono esistere
"n" attività e per ognuna di queste esistono "n" intervalli di tempo impiegato.

Ho creato un formato con l'elenco delle risorse.
Il formato è in visualizzazione "lista"
Seleziono una risorsa, il record attivo delle risorse
viene selezionato correttamente.

Ho creato un altro formato, partendo dal file "risorse"
Ho inserito un portale che mostra solo i record correlati
di Attività
Funziona, vedo tutte le attività della risorsa che ho
selezionato nella lista
Su questo formato c'e' pero' un altro portale che
dovrebbe mostrare, quando clicco sull'attività
nel primo portale, tutti i "tempi" della terza tabella
relativa ovviamente all'attività "selezionata"

Non ci sono riuscito in nessun modo.

I portali mostrano i record correlati relativi pero'
solo alla tabella che è nativa del formato, giusto?

E' qui che mi perdo.
In quasi tutti i programmi e in tutti i database relazionali ci sono "cascate" di relazioni, io vorrei semplicemente cliccare su una riga del portale, e filtrare da questa il secondo portale, poi se clicco su questo, filtrare un eventuale terzo portale in base alla selezione, etc...

Scusate per la lunghezza del messaggio, e' una settimana che leggo questo forum, ho guardato di tutto, le liste correlate, i portali, le relazioni, ma forse non mi e' chiara proprio la "tecnica" di come FileMaker tratta queste cose...

Potete scrivere come fare in modo dettagliato?

Sbaglio le relazioni?
Sbaglio come uso i portali?
Ho provato a rendere un campo del primo portale un pulsante per andare sul record correlato della terza relazione, ma non mi funziona... :|

E' che dopo aver provato di tutto inizia la confusione, meglio fermarsi e rifare il punto.

Ziao e grazie

Pantera
Win XP Sp2 - FM 8.5 Pro
ruggerotoniolo
Messaggi: 69
Iscritto il: mercoledì 12 novembre 2003, 1:00
Località: Montegrotto Terme
Contatta:

Messaggio da ruggerotoniolo »

Ciao Pantera,

personalmente io risolvo questa situazione molto comune nelle mie applicazioni, utilizzando i campi globali.

In altr parole, mi preparo una serie di campi (o nella tabella principale che utilizzo solo per questi propositi [contiene solo 1 record con tutti i campi globali/generici] oppure nella tabella in cui stò lavorando [soluzione meno pulita]) definiti come Globali (da selezionare nella sezione Memorizzazione relativa alle opzioni del campo stesso).

A questo punto preparo un formato contenente i 3 portali (anche se potenzialmente potrebbero essere N o almeno tanti quanti i campi globali predisposti) e creo le relazioni tra la tabella del formato (quella contenente i campi globali) e gli n-portali - 1 utilizzando i campi globali.

Dico -(meno) 1 in quanto sul primo portale (quello che deve scatenare le selezioni successive) devo in relatà vedere tutti i record.

Su questo primo portale, in corrispondenza inserisco un pulsante che ha il compito di copiare il campo chiave del record visionato (necessario per accedere ai dati filtrati nel secondo portale) sul campo globale 1

Nel momento in cui il campo globale 1 viene popolato, ottengo la visualizzazione dei dati filtrati del secondo portale. Se in ques'ultimo aggiungo un altro pulsante che copia la chiave nel campo globale 2, dopo averlo selezionato ottengo la visualizzazione dei dati nel terzo portale e così via.

Non mi dilungo sul come devono essere create le relazioni in quanto non conosco il tipo di applicativo che stai costruendo: ma potrei averne di 1-a-n (la prima chiave mi fa vedere i campi del secondo portale, la chiave del secondo portale quelli del terso, ...) o N-a-N (la chiave del primo mi fa vedere i campi del secondo, selezionando la chiave del secondo ed utilizzando nella relazione anche il primo, ottengo i dati del terzo portale, ...).

COmunque sia funziona ed è il metodo (sicuramento non l'unico) che io utilizzo maggiormente in quanto per me il più veloce e sicuro.

Se hai dei dubbi, non aver timori nel farmelo sapere.

Ciao

Ruggero
Pantera
Messaggi: 3
Iscritto il: giovedì 5 aprile 2007, 2:00
Località: Gabicce Mare

Messaggio da Pantera »

Uhm :wink:
mi sembra decisamente MOLTO interessante. Finalmente comincio a entrare in questi meccanismi abbastanza particolari :)

Un paio di domande mi sorgono spontanee pero'...

la cosa immagino possa proprio funzionare, e non mi sembra nemmeno particolarmente difficile crearla (magari ci provo proprio ora) pero' una cosa è cerca. Se tu fai una tabella con i campi globali con un solo record tutto funziona per un solo utente del db.

Il mio db è invece pubblicato su server, e tutti i miei collaboratori accedono allo stesso per inserire i loro "task" e progetti :)

Giusto per rispondere a qualche tua curiosità, sono un dirigente e voglio dar modo ai miei collaboratori (che considero decisamente in gamba) di avere visibilita' con la direzione andando ad inserire tutti i lavori che come reparto facciamo ogni giorno.

Quindi io segno i progetti principali, segno certe attività che poi "delego" assegnandole alle diverse persone e loro si possono vedere quello che devono fare, o inserire addirittura nuove attività.

E' un progetto ambizioso, coinvolge la direzione, ma siamo tutti certi che possa avere un notevole valore.

Tornando a noi, sicuramente come dicevi funziona, ma se volessi farlo multiutente e sicuro, come potrei fare? Magari un record per ogni collaboratore... e legarlo in qualche modo allo user del db... ???....

Ah... ultima domanda e poi spero di aver concluso

Riusciresti (se non ti crea troppo disturbo e se hai tempo) a postare uno script su come fare per "riempire" il campo globale?
Io intato ci provo cmq magari potremmo usarlo per confronto, per vedere se ho fatto bene (mi sento ancora decisamente insicuro su filemaker, nonostante il mio "passato" da sviluppatore in vb/sql)....

Grazie cmq del tuo prezioso tempo.

Ziao

Pantera
Win XP Sp2 - FM 8.5 Pro
ruggerotoniolo
Messaggi: 69
Iscritto il: mercoledì 12 novembre 2003, 1:00
Località: Montegrotto Terme
Contatta:

Messaggio da ruggerotoniolo »

Ciao Pantera,

il campo globale è concettulamente simile a una variabile di ambiente ed è legata alla sessione, tranne che per una particolarità: può essere permanentemente cambiato solo dall'Host (o server) - le modifiche effettuate da un client non vengono "sentite" in fase di memorizzazione.

In altre parole, se l'utente A imposta il campo globale a 1 e l'utente b lo stesso campo a 2, rimarranno 1 e 2 sui singoli client ma sul server / host rimane memorizzato quello originale (tranne che un utente non utilizzi l'host/server come client).

Un'altra tecnica, comunque , può essere quella dic reare una tabella Utente dove personalizzare tutto quello che lo riguarda (inclusi i campi ex-globali di prima): in acune situazioni è la soluzione migliore, ma implica una buona dose di script di gestione/aggiornamento dei dati legati all'utente stesso.

Per quanto riguarda il come impostare un campo globale:
1) assicurarsi che il campo sia definito tale nella sezione Memorizzazione relativa alle opzioni del campo
2) usa la funzione "Definisci" per impostare il valore sul campo globale

in altre parole, l'utilizzo di un campo globale è uguale ad un qualsiasi altro campo con l'eccezione del fatto che è unico nle database.

Sperando di esserti stato d'aiuto, ti saluto e rimango sempre a disposizione assieme agli altri amici del Forum.

Ciao

Ruggero
Pantera
Messaggi: 3
Iscritto il: giovedì 5 aprile 2007, 2:00
Località: Gabicce Mare

Messaggio da Pantera »

Ke spettakolo :)

Sono riuscito a fare esattamente cio' che serviva.
Si i campi globali sono veramente utili.
Ti ringrazio tantissimo per le informazioni e il tempo.

Per ora procedo nello sviluppo :P

Avanti koi karri!

Saluti
Win XP Sp2 - FM 8.5 Pro
Rispondi