Lista valori con contenuto variabile.
♥ 0 |
Buongiorno, Ho evidentemente un problema, che credo sia anche bello tosto. Sto realizzando una gestione per il noleggio di macchine, nel caso specifico legati all’edilizia. Ad esempio, il nuovo contratto serve per il noleggio di un Montacarichi per il periodo 10/01/15 – 23/01/15 Ho allegato lo schema delle relazioni legate al file principale “noleggio”. Sulla sinistra ed in grigio, ho ridefinito una relazione tra la tabella “noleggio” e se stessa “noleggio_NOLEGGIO” dove elenco tutti i contratti che si accavallano con le date. A “noleggio_NOLEGGIO” ho legato il relativo dettaglio, “noleggio_noleggio_NOLEGGIODETTAGLIO”, ottenendo così le n righe di dettaglio con tutte le macchine in noleggio per il periodo preso in esame, a cui ho poi legato una ridefinizione della Tabella Macchine, che mi riporta solo ed unicamente l’elenco delle macchine utilizzate. (in verde “noleggio_noleggio_noleggiodettaglio_MACCHINE”) Quindi se per ipotesi la macchina con ID=1 è presente più volte, in questa ultima relazione è elencata una volta sola. Fin qui tutto perfettamente funzionante e corrispondente alle attese. L’ideale sarebbe poter definire una relazione tra “noleggio_noleggio_noleggiodettaglio_MACCHINE” e un suo duplicato “noleggio_noleggio_noleggiodettaglio_macchine_MACCHINE” che esprima tutte le ricorrenze che non sono già presenti nella tabella (o meglio relazione) precedente ed utilizzarla come fonte per la lista a discesa. MA QUESTO NON È POSSIBILE. Quale soluzione allora?
Segnalato come spam
|
Domanda privata
OK!!! scritto così: If ( EVuoto ( articoliInUso ) ; EseguiSQL ( tutti ; ”” ; ”” ) ; EseguiSQL ( stringaSQL ; ”” ; ”” ) ) ) Segnalata come spam
|
|
Domanda privata
secondo me è un problema di sintassi. A dichiarare prima il refila e a costruire la query con ” e & funziona? .g. Segnalata come spam
|
|
Domanda privata
Ciao, Segnalata come spam
|
|
Domanda privata
eh già, non ci avevo pensato a questa ciliegina Mikhail Segnalata come spam
|
|
Domanda privata
esatto, mik .g. Segnalata come spam
|
|
Domanda privata
Ciao a tutti, Segnalata come spam
|
|
Domanda privata
si può eseguire quasi tutte le opzioni dello statement SELECT, quindi sicuramente si. Se è per questo invece di usare la CF decuplicateList puoi anche usare un distinct sql. Segnalata come spam
|
|
Domanda privata
Grazie per la risposta complessa ma ritengo esaustiva. Ancora grazie, Segnalata come spam
|
|
Domanda privata
Fare si può fare, ma non è la strada che consiglierei. cmq, andiamo per ordine: – Se ci fosse la possibilità di valorizzare un campo di calcolo ad ”1” se il record appartiene alla relazione, potrei poi agganciare un duplicato di se stesso su quel campo per condizione di ”diverso”, ottenendo così solo le macchine non in ”uso”. puoi farlo, con un calcolato non indicizzabile a patto che la relazione sia uno a molti, che ci sia sempre un unico utente e che non ci siano due richieste di noleggi; ma secondo me è un modo molto scomodo di procedere, e utilizzi il peggio delle due techiche (script e relazioni) senza il pregio di nessuna. se non voui procedere con il metodo che ti ho suggerito e vuoi comunque ragionare come ”lista di id”, avendo FileMaker 12 o 13 puoi usare la funzione EseguiSQL, per ricavare l’elenco degli ID utilizzati secondo determinate specifiche: in sostanza devi intercettare quattro tipi di noleggi: in Filemakerese qualcosa tipo: EseguiSQL( ¶ & EseguiSQL( ¶ & EseguiSQL( ¶ & EseguiSQL( in questo modo hai la lista di tutte le macchine i cui noleggi si accavallano al tuo periodo. Puoi quindi utilizzare una CF come deduplicatelist (http://www.briandunning.com/cf/1109) per eliminare i doppioni. quindi utilizzi un’altra funzione personalizzata, come DifferenceValues (http://www.briandunning.com/cf/98) per sottrarre dalla totalità delle macchine quelle che hai ricavato con il calcolo precedente. un calcolo sintetico in merito potrebbe essere: let([ post=EseguiSQL( in=EseguiSQL( out=EseguiSQL( list= pre & ¶ post & ¶ & in & ¶ & out; DifferenceValues(tualistavaloriIDmacchinaricompleti; ded) ) questo approccio ha il merito che non ti servono grandi modifiche al grafico relazionale, salvo per quanto attiene alla tabella di appoggio. La velocità comunque rimane il suo punto debole. .g. Segnalata come spam
|
|
Domanda privata
Ciao Giulio, Dimmi una cosa, è possibile determinare tramite un campo di calcolo, se un determinato record fa parte o meno di una relazione? Segnalata come spam
|
|
Domanda privata
Buongiorno, Giorgio. in sintesi, si parte da: in cui per ciascun macchinario avrai una lista di noleggi con data inizio e fine. oltre a questo, hai un modulo di proposta noleggio, in cui, data una data di inizio e fine (e facoltativamente una tipologia di macchinario) che ti deve mostrare solo le macchine disponibili, ovvero che siano disponibili per tutto il periodo di noleggio. secondo me hai sbagliato il concetto di partenza. Per avere quello che ti serve, devi partire dalla tabella macchinari, creando un calcolo che esamini le date di inizio e fine noleggio proposti (due campi globali): per raggiungere il risultato la cose più semplice è utilizzare una funzione personalizzata ricorsiva che confronti la lista dei noleggi in essere con le date di inizio e fine proposte, dando un risultato univoco (1 o 0, si o no); il calcolo non è indicizzabile, e non può quindi generare una lista valore, ma può essere usato mediante portale filtrato, che puoi usare al posto della lista valori (anzi, ti permette una procedura guidata molto più flessibile, sia perché puoi mostrare più dati sia perché puoi fare scelte multiple). .g. Segnalata come spam
|