Formulario con due formulari secondari
Formulario con due formulari secondari
Salve
Voglio costruire un formulario con 2 formulari secondari, nel dettaglio c'è :
1) Una casella di riepilogo che serve a selezionare il mese di riferimento
2) una subform che in base al mese selezionato nella casella di riepilogo, mi mostra tutti i contratti siglati in quel mese cliente per cliente
3) una altra subform che in base al mese selezionato nella casella di riepilogo, mi mostra la somma di tutti i contratti siglati in quel mese
in piu ho aggiunto un pulsante per aggiornare il formulario.
Il formulario non mi mostra il totale dei contratti, la casella in questione rimane vuota.
Allego file di prova
PS
La macro è un residuo vecchio, scusatemi
Voglio costruire un formulario con 2 formulari secondari, nel dettaglio c'è :
1) Una casella di riepilogo che serve a selezionare il mese di riferimento
2) una subform che in base al mese selezionato nella casella di riepilogo, mi mostra tutti i contratti siglati in quel mese cliente per cliente
3) una altra subform che in base al mese selezionato nella casella di riepilogo, mi mostra la somma di tutti i contratti siglati in quel mese
in piu ho aggiunto un pulsante per aggiornare il formulario.
Il formulario non mi mostra il totale dei contratti, la casella in questione rimane vuota.
Allego file di prova
PS
La macro è un residuo vecchio, scusatemi
- Allegati
-
- PROVA.odb
- (129.63 KiB) Scaricato 244 volte
Ultima modifica di Lukaccio il domenica 14 ottobre 2018, 19:27, modificato 2 volte in totale.
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Ciao, allego il file modificato:
- Non ho usato la macro (mi pare che non serva)
- Ho spostato il pulsante Aggiorna nel tuo SubForm (se lasciato nel MaiForm richiede la conferma in una finestra successiva)
- Ho aggiunto una query utilizzando il codice SQL che avevi messo per calcolare la somma
- Ho aggiunto un nuovo SubForm collegato alla query per visualizzare la somma
- Ho aggiunto un secondo pulsante per aggiornare la somma
- Allegati
-
- PROVA-2.odb
- (129.63 KiB) Scaricato 295 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Grazie
Funziona. ma in effetti come hai detto tu sarebbe meglio eliminare i due pulsanti di aggiornamento, mi spieghi come fare per favore?
Inoltre nell'ottica di imparare e non solamento di copiare mi spieghi come hai fatto?
In altri termini quando devo inserire due subform invece che una, qual'è la procedura corretta?
Funziona. ma in effetti come hai detto tu sarebbe meglio eliminare i due pulsanti di aggiornamento, mi spieghi come fare per favore?
Inoltre nell'ottica di imparare e non solamento di copiare mi spieghi come hai fatto?
In altri termini quando devo inserire due subform invece che una, qual'è la procedura corretta?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Ecco il file con la macro che elimina la necessità di usare i pulsanti.
Devi aprire il navigatore del formulario, selezionare il MainForm, fare clic destro e scegliere Nuovo e poi Formulario. In questo modo sarà automaticamente un SubForm del Main. Poi, nelle proprietà del nuovo SubForm, settare Collega da e Collega per e poi tutto il resto.Lukaccio ha scritto:quando devo inserire due subform invece che una, qual'è la procedura corretta?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Grazie nuovamente
un'unica cosa non è possibile ottenere l'aggiornamento automatico del formulario non appena cambio il mese dalla casella di riepilogo?
perche così per aggiornare la visualizzazione dei contratti cliente per cliente e del totale di contratti, secondo ovviamente il mese selezionato dalla casella di riepilogo, devo per forza chiudere e riapriere il formulario.
Altrimenti si puo mettere un unico pulsante di aggiornamento?
un'unica cosa non è possibile ottenere l'aggiornamento automatico del formulario non appena cambio il mese dalla casella di riepilogo?
perche così per aggiornare la visualizzazione dei contratti cliente per cliente e del totale di contratti, secondo ovviamente il mese selezionato dalla casella di riepilogo, devo per forza chiudere e riapriere il formulario.
Altrimenti si puo mettere un unico pulsante di aggiornamento?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
È quello che fa la macro nel nuovo file ...Lukaccio ha scritto:non è possibile ottenere l'aggiornamento automatico del formulario non appena cambio il mese dalla casella di riepilogo?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Scusami nelle opzioni erano bloccate le macro
Ho aggiunto una 3° Subform (ci ho preso gusto ), come devo modificare la macro per aggiornare pure quella?
Ho aggiunto una 3° Subform (ci ho preso gusto ), come devo modificare la macro per aggiornare pure quella?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Strumenti > Macro > Organizza macro > OpenOffice Basic e si apre la finestra di dialogo dove scegliere il database ed il modulo della macro:
Con lo stesso procedimento lo incolli nel nuovo file.
Poi, devi assegnare la macro
poi scegli: Modifica e si apre la finestra con il codice da copiare, che è questo:
Codice: Seleziona tutto
Sub RefreshForm (oEvent As Object) 'assign this macro to List Box > Events > Execute
oListBox = oEvent.Source.Model 'create an object model from List Box event
oListBox.commit() 'save the List Box selection to the host data-Form
oForm = oListBox.Parent 'get the host Form object from the List Box model object
oForm.UpdateRow() 'save the data-Form content to the current data-source record
oForm.Reload 'reload the Form to trigger SubForm refresh
End Sub
Poi, devi assegnare la macro
charlie ha scritto:... una macro che aggiorni i due SubForm collegata all'evento Modificato della casella di riepilogo.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Si scusami alla fine ci ero arrivato
Nel frattempo avevo aggiunto questo nuovo quesito :
Nel frattempo avevo aggiunto questo nuovo quesito :
Lukaccio ha scritto:
Ho aggiunto una 3° Subform (ci ho preso gusto ), come devo modificare la macro per aggiornare pure quella?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
La macro dovrebbe aggiornare tutto.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Non lo fa
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Allega il database con il terzo SubForm.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Ho individuato il problema
Il file di prova che ho allegato, conteneva solo i positivi cioe gli incontri che si sono conclusi con la firma di un contratto.
Nel database ad esempio a giugno, avrò 20 appuntamenti ma solo 8 contratti.
A me interessava visualizzare per ogni mese i contratti per cliente, il totale dei contratti, ma anche il numero degli appuntamenti presi.
Il problema che per fare questo, come si vede dalle query del file di prova, avevo trovato un sistema basato sulla data dell'appuntamento preso (nella forma 01/10/2018 ad esempio) che non riesco a conciliare con la casella di riepilogo che va selezionare il mese come stringa di testo ed in una altra colonna.
Comunque visto che mi sono spiegato da cani vedere allegato
Il file di prova che ho allegato, conteneva solo i positivi cioe gli incontri che si sono conclusi con la firma di un contratto.
Nel database ad esempio a giugno, avrò 20 appuntamenti ma solo 8 contratti.
A me interessava visualizzare per ogni mese i contratti per cliente, il totale dei contratti, ma anche il numero degli appuntamenti presi.
Il problema che per fare questo, come si vede dalle query del file di prova, avevo trovato un sistema basato sulla data dell'appuntamento preso (nella forma 01/10/2018 ad esempio) che non riesco a conciliare con la casella di riepilogo che va selezionare il mese come stringa di testo ed in una altra colonna.
Comunque visto che mi sono spiegato da cani vedere allegato
- Allegati
-
- PROVA.odb
- (130.65 KiB) Scaricato 176 volte
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Mi spiace ma neanche l'allegato chiarisce cosa vuoi aggiungere, cioè qual è il terzo subform che vuoi aggiungere (visto che nell'esempio non lo hai aggiunto).Lukaccio ha scritto:Comunque visto che mi sono spiegato da cani vedere allegato
N.B. Ogni volta che alleghi un file nuovo cambiagli il nome rispetto ai precedenti (tuoi e miei), ad esempio seguendo una numerazione progressiva come avevo cominciato a fare io. Il tuo ultimo doveva chiamarsi PROVA-4......
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Vedi un po per favore :
- Allegati
-
- PROVA-5.odb
- (131.17 KiB) Scaricato 108 volte
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Il terzo SubForm contiene questo codice che non lo relaziona in alcun modo al mese selezionato nel MainForm:
ma è vincolato dalle 2 date e il cui risulatato è sempre 4.
Codice: Seleziona tutto
SELECT COUNT( "DATA" ) AS "DATA" FROM ( SELECT "CNT", "NOTE AGENTE", "PROV", "DATA", "ORA", "NOME", "TELEFONO", "INDIRIZZO DELL'APT", "COMUNE", "CFPIVA", "NOTE", "MESE" FROM "X" WHERE "DATA" BETWEEN {d '2017-10-01' } AND {d '2017-10-31' } )
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Appunto
In sostanza nella seconda subform abbiamo :
SLECT SUM( "CNT" ) AS "NUM" FROM ( SELECT "Filtro x MESE"."MESE" AS "1", "X"."MESE" AS "2", "X"."CNT", "X"."NOTE AGENTE", "X"."PROV", "X"."DATA", "X"."ORA", "X"."NOME", "X"."TELEFONO", "X"."INDIRIZZO DELL'APT", "X"."COMUNE", "X"."CFPIVA", "X"."NOTE" FROM "Filtro x MESE", "X" WHERE "Filtro x MESE"."MESE" = "X"."MESE" )
ora devo confrontare una stringa di testo con una data, ossia ad esempio 10/10/2017 con ottobre in maniera da legare l'istruzione sql al parametro selezionato nella casella di riepilogo (che appunto è una stringa di testo).
dovrebbe essere all'incirca:
WHERE "Filtro x MESE"."MESE" = "X"."DATA"
ma ovviamente non funziona perchè nella colonna mese ci sono delle stringhe di testo, nella colonna data delle date.
Scusami non so se riesco a spiegarmi
In sostanza nella seconda subform abbiamo :
SLECT SUM( "CNT" ) AS "NUM" FROM ( SELECT "Filtro x MESE"."MESE" AS "1", "X"."MESE" AS "2", "X"."CNT", "X"."NOTE AGENTE", "X"."PROV", "X"."DATA", "X"."ORA", "X"."NOME", "X"."TELEFONO", "X"."INDIRIZZO DELL'APT", "X"."COMUNE", "X"."CFPIVA", "X"."NOTE" FROM "Filtro x MESE", "X" WHERE "Filtro x MESE"."MESE" = "X"."MESE" )
ora devo confrontare una stringa di testo con una data, ossia ad esempio 10/10/2017 con ottobre in maniera da legare l'istruzione sql al parametro selezionato nella casella di riepilogo (che appunto è una stringa di testo).
dovrebbe essere all'incirca:
WHERE "Filtro x MESE"."MESE" = "X"."DATA"
ma ovviamente non funziona perchè nella colonna mese ci sono delle stringhe di testo, nella colonna data delle date.
Scusami non so se riesco a spiegarmi
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Poichè la casella di riepilogo del mainform seleziona un mese, i subform collegati hanno senso se riferiti al mese selezionato. I primi due lo sono, il terzo no.
Spero di essermi spiegato io ...
Spero di essermi spiegato io ...
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Ti ho compreso benissimo
Infatti con la mia risposta, volevo semplicemente chiederti in che modo collegare anche la terza subform al mese selezionato dalla casella di riepilogo per ottenere l'effeto desiderato che in definitiva è quello di ottenere :
1) il numero complessivo di contratti firmati per quel mese
2) il numero di contratti siglati dal singolo cliente per quel mese
3) il numero complessivo di appuntamenti presi per quel mese, compresi quelli che non hanno portato a nessun contratto.
insomma la mia è una domanda, lo so benissimo che la terza subform è errata ma non so come correggerla
Infatti con la mia risposta, volevo semplicemente chiederti in che modo collegare anche la terza subform al mese selezionato dalla casella di riepilogo per ottenere l'effeto desiderato che in definitiva è quello di ottenere :
1) il numero complessivo di contratti firmati per quel mese
2) il numero di contratti siglati dal singolo cliente per quel mese
3) il numero complessivo di appuntamenti presi per quel mese, compresi quelli che non hanno portato a nessun contratto.
insomma la mia è una domanda, lo so benissimo che la terza subform è errata ma non so come correggerla
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Si tratta di confrontare il MESE di Filtro x MESE con il MESE della Data.
Per farlo ho dovuto apportare modifiche perché la funzione che calcola il mese di una data MONTH("Data") dà come risultato un numero ed invece la tabella X ha il mese espresso in lettere:
Per farlo ho dovuto apportare modifiche perché la funzione che calcola il mese di una data MONTH("Data") dà come risultato un numero ed invece la tabella X ha il mese espresso in lettere:
- Scrivere la query QX che rispetto alla tabella X ha il campo MESE calcolato dalla funzione MONTH("Data"). (Non serve più che nella tabella si scrivano a mano i nomi dei mesi ed il campo MESE può essere eliminato)
- Sostituire in tutto il codice presente nel formulario "X" con "QX"
- Sostituire il tipo campo MESE della tabella Filtro x MESE con tipo INTEGER
- Usare i numeri interi per selezionare il mese al posto del loro nome in lettere anche nella Casella di riepilogo
Codice: Seleziona tutto
SELECT COUNT( "QX"."DATA" ) AS "DATA" FROM "QX", "Filtro x MESE" WHERE "QX"."MESE" = "Filtro x MESE"."MESE"
- Allegati
-
- PROVA-6.odb
- (131.53 KiB) Scaricato 123 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Grazie la soluzione trovata è ovviamente molto elegante, però devo vedere se il resto del database è compatibile con questa variazione (purtroppo questo è un problema per chi come me, non è così esperto, ma ci provo.....)
Trovo una unica "criticità" al momento, nel mio database ci sono appuntamenti del 2017 e del 2018, come distinguere un appuntamento ad esempio dell'ottobre 2017 da uno preso nell'ottobre 2018, visto che il numero è sempre 10 (ottobre)?
Trovo una unica "criticità" al momento, nel mio database ci sono appuntamenti del 2017 e del 2018, come distinguere un appuntamento ad esempio dell'ottobre 2017 da uno preso nell'ottobre 2018, visto che il numero è sempre 10 (ottobre)?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Basterà sostituire con cioè con la concatenazione del mese e dell'anno separati da un trattino.
Codice: Seleziona tutto
MONTH("DATA")
Codice: Seleziona tutto
MONTH( "DATA" ) || '-' || YEAR( "DATA" )
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Solo in QX?
Perche' diventando QX :
SELECT "ID", "CNT", "NOTE AGENTE", "PROV", "DATA", "ORA", "NOME", "TELEFONO", "INDIRIZZO DELL'APT", "COMUNE", "CFPIVA", "NOTE", MONTH( "DATA" ) || '-' || YEAR( "DATA" ) AS "MESE" FROM "X"
Mi da un messaggio di errore (vedi allegato)
Perche' diventando QX :
SELECT "ID", "CNT", "NOTE AGENTE", "PROV", "DATA", "ORA", "NOME", "TELEFONO", "INDIRIZZO DELL'APT", "COMUNE", "CFPIVA", "NOTE", MONTH( "DATA" ) || '-' || YEAR( "DATA" ) AS "MESE" FROM "X"
Mi da un messaggio di errore (vedi allegato)
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
No, dappertutto, dove è stata usata in precedenza MONTH("DATE").Lukaccio ha scritto:Solo in QX?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
A meno di errori, a me sembra esserci solo in QX.
il problema forse, sussiste perchè alla fine nella tabella filtro c'è un numero nella casella di riepilogo una data espressa come mese-anno.
Boo suggeriscimi tu
il problema forse, sussiste perchè alla fine nella tabella filtro c'è un numero nella casella di riepilogo una data espressa come mese-anno.
Boo suggeriscimi tu
- Allegati
-
- PROVA-7.odb
- (131.19 KiB) Scaricato 131 volte
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Ti avevo dato un suggerimento senza provare. Il messaggio di errore parla chiaro: "Tipo di dato errato".
Bisogna cambiare nuovamente il tipo dato in Testo nella tabella Filtro X MESE.
Ho provato e funziona.
Bisogna cambiare nuovamente il tipo dato in Testo nella tabella Filtro X MESE.
Ho provato e funziona.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Funziona benissimo.
Un'ultima domanda come fare a far si che nella casella di riepilogo mi escano le date in ordine giusto, ossia da gennaio a dicembre?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Direi:
Codice: Seleziona tutto
SELECT DISTINCT ...... FROM ...... ORDER BY MONTH( "DATA" ) || '-' || YEAR( "DATA" ) ASC
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Formulario con due formulari secondari
Mette prima :
10-2017
1-2017
12-2017
poi in maniera corretta :
2-2017
3-2017
ecc
10-2017
1-2017
12-2017
poi in maniera corretta :
2-2017
3-2017
ecc
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Re: Formulario con due formulari secondari
Capisco, è il giusto ordinamento dati di un campo testo. Bisogna pensare ad un altro criterio ....
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org