Formulario con due formulari secondari

Discussioni sulle caratteristiche di database
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Formulario con due formulari secondari

Messaggio da Lukaccio »

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 :shock:
Allegati
PROVA.odb
(129.63 KiB) Scaricato 242 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
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Ciao, allego il file modificato:
  1. Non ho usato la macro (mi pare che non serva)
  2. Ho spostato il pulsante Aggiorna nel tuo SubForm (se lasciato nel MaiForm richiede la conferma in una finestra successiva)
  3. Ho aggiunto una query utilizzando il codice SQL che avevi messo per calcolare la somma
  4. Ho aggiunto un nuovo SubForm collegato alla query per visualizzare la somma
  5. Ho aggiunto un secondo pulsante per aggiornare la somma
I limiti del sistema adottato sono nella presenza di 2 pulsanti di aggiornamento. Per eliminarli serve una macro che aggiorni i due SubForm collegata all'evento Modificato della casella di riepilogo.
Allegati
PROVA-2.odb
(129.63 KiB) Scaricato 293 volte
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Grazie :bravo:

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
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Ecco il file con la macro che elimina la necessità di usare i pulsanti.
PROVA-3.odb
(129.51 KiB) Scaricato 262 volte
Lukaccio ha scritto:quando devo inserire due subform invece che una, qual'è la procedura corretta?
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.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Grazie nuovamente :super:


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
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Lukaccio ha scritto:non è possibile ottenere l'aggiornamento automatico del formulario non appena cambio il mese dalla casella di riepilogo?
È quello che fa la macro nel nuovo file ...
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Scusami nelle opzioni erano bloccate le macro :oops:

Ho aggiunto una 3° Subform (ci ho preso gusto :lol: ), come devo modificare la macro per aggiornare pure quella?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Strumenti > Macro > Organizza macro > OpenOffice Basic e si apre la finestra di dialogo dove scegliere il database ed il modulo della macro:
Schermata 2018-10-07 alle 11.14.04.png
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
Con lo stesso procedimento lo incolli nel nuovo file.
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.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Si scusami alla fine ci ero arrivato :shock:

Nel frattempo avevo aggiunto questo nuovo quesito :

Lukaccio ha scritto:
Ho aggiunto una 3° Subform (ci ho preso gusto :lol: ), come devo modificare la macro per aggiornare pure quella?
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

La macro dovrebbe aggiornare tutto.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Non lo fa :|
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Allega il database con il terzo SubForm.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Ho individuato il problema :crazy:


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 175 volte
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Lukaccio ha scritto:Comunque visto che mi sono spiegato da cani vedere allegato
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).

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.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Vedi un po per favore :
Allegati
PROVA-5.odb
(131.17 KiB) Scaricato 107 volte
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Il terzo SubForm contiene questo codice che non lo relaziona in alcun modo al mese selezionato nel MainForm:

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' } )
ma è vincolato dalle 2 date e il cui risulatato è sempre 4.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Appunto :oops:

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 :crazy:
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

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 ...
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

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 :oops:
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

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:
  • 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
Ora funziona anche il terzo SubForm con il semplice codice

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 120 volte
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

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)?


:oops: :oops: :oops: :oops:
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Basterà sostituire

Codice: Seleziona tutto

MONTH("DATA")
con

Codice: Seleziona tutto

MONTH( "DATA" ) || '-' || YEAR( "DATA" )
cioè con la concatenazione del mese e dell'anno separati da un trattino.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

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)
Allegati
Errore.JPG
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Lukaccio ha scritto:Solo in QX?
No, dappertutto, dove è stata usata in precedenza MONTH("DATE").
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

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 :oops:
Allegati
PROVA-7.odb
(131.19 KiB) Scaricato 130 volte
LibreOffice 5.2 su Windows 7 HomePremium 64 Bit SP1
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

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.
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

:bravo: :bravo: :bravo:


Funziona benissimo. :D

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
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Direi:

Codice: Seleziona tutto

SELECT DISTINCT  ...... FROM ...... ORDER BY MONTH( "DATA" ) || '-' || YEAR( "DATA" ) ASC
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Lukaccio
Messaggi: 43
Iscritto il: domenica 17 settembre 2017, 21:10

Re: Formulario con due formulari secondari

Messaggio da Lukaccio »

Mette prima :
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
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con due formulari secondari

Messaggio da charlie »

Capisco, è il giusto ordinamento dati di un campo testo. Bisogna pensare ad un altro criterio ....
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi