[Risolto] Creare filtro in una maschera di dialogo

Discussioni sull'applicazione per i fogli di calcolo
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Creare filtro in una maschera di dialogo

Messaggio da sanraff »

Buonasera hubert, anch'io ti faccio i complimenti per come scrivi in italiano, infatti nemmeno io mi era accorto che non lo fossi.

Ti ringrazio per avermi dato delle delucidazioni per il mio primo quesito, ma potresti gentilmente spiegarmi come posso risolvere anche il secondo?, non so se te ne eri accorto, ma purtroppo ero incappato in due problematiche, di cui una me l'hai spiegato con il tuo ultimo lavoro e l'altra è questa:
patel ha scritto:2)Ammettiamo di dover gestire tante colonne che per una questione di spazio, non possono essere rappresentate in un'unica tabella creata all'interno della maschera di dialogo, quindi volendone creare due posizionate una sopra l'altra, in cui in una vengono visualizzati i dati anagrafici e nella seconda quelli descrittivi esempio nella prima tabella vengono riportati "Cognome, Nome, Data di nascita ecc.." mentre nella seconda vengono riportati "Descrizione, Codice art., Q.tà ecc...", con la premessa che devono lavorare in modo sincronizzato, in che modo va modificata la macro?.
.

Purtroppo il consiglio di patel non lo posso seguire poiché i dati riportati nelle due tabelle devono lavorare in modo sincronizzato e non distinti l'uno dall'altro.

Forse per farmi capire meglio cosa vorrei ottenere, riallego il primo file a cui stavo lavorando, che poi ho tralasciato per seguire il vostro perché è più performante.

Come funzionava:
Dopo aver lanciato il file, si doveva preme sul pulsante "Attiva filtro" che avrebbe aperto la maschera di dialogo preposta a svolgere tale compito, poi si cliccava sul "OptionButton --> Carica Clienti" per dar modo al sistema di caricare le informazioni da filtrare.
A questo punto tramite la "TextBox --> Ricerca" iniziavo a scrivere seguendo l'ordine logico per "Cognome, Nome ed eventuale Data di Nascita" il soggetto da ricercare ed il programma mi avrebbe restituito sotto forma di "Filtro" i dati correlati.

I campi immessi nella maschera, li avevo impostati seguendo due ordini, nella parte superiore nel riquadro "Anagrafica", avevo riportato "Cognome, Nome e Data di Nascita", mentre nel riquadro "Report", avevo riportato quelli descrittivi. La suddivisione l'avevo impostata solo da un punto di vista figurativo, mentre i dati lavorano uno in funzione dell'altro.

Cmq se fai test, capisci meglio di cosa sto parlando.

Ancora grazie per il vostro contributo.
Allegati
Filtra con maschera di dialogo.ods
(20.91 KiB) Scaricato 157 volte
OpenOffice 3.3 SU WINDOWS 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4016
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Creare filtro in una maschera di dialogo

Messaggio da patel »

sanraff ha scritto: Purtroppo il consiglio di patel non lo posso seguire poiché i dati riportati nelle due tabelle devono lavorare in modo sincronizzato e non distinti l'uno dall'altro.
io avevo capito benissimo che devono avorare in modo sincronizzato , ti ho detto soltanto di preparare la prima e poi sarebbe stato facile aggiungere la seconda. Tu falle distinte e te le sincronizzo io.
A dimostrazione prova il file allegato
Allegati
ListboxMultiFiltrataDoppia.ods
(20.5 KiB) Scaricato 108 volte
Ultima modifica di patel il sabato 17 giugno 2017, 10:07, modificato 1 volta in totale.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
Messaggi: 4016
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Creare filtro in una maschera di dialogo

Messaggio da patel »

hubert lambert ha scritto: Sarà più complicato se le colonne non sono contigue, perché bisogna allora indicare alla macro quali sono i dati da inserire nelle righe. Allego un esempio, dove

Codice: Seleziona tutto

    rows(r) = Dati(r) 'cioè tutta la riga r
diventa

Codice: Seleziona tutto

    rows(r) = array(Dati(r)(0), Dati(r)(1), Dati(r)(3))
cioè le prima, seconda e quarta valore della riga r.
Ciao Hubert, l'esempio allegato mostra le prime 3 colonne e non la 0, 1, 3
io credo che tu debba sostituire la riga

Codice: Seleziona tutto

datamodel.addRows(dimarray(ubound(Dati)), Dati)
con

Codice: Seleziona tutto

datamodel.addRows(dimarray(ubound(rows)), rows)
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3291
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Creare filtro in una maschera di dialogo

Messaggio da Gaetanopr »

patel ha scritto:eravamo preoccupati...ci mancavi.
Grazie patel, anche voi mi siete mancati.
sanraff ha scritto: 2)Ammettiamo di dover gestire tante colonne che per una questione di spazio, non possono essere rappresentate in un'unica tabella creata all'interno della maschera di dialogo, quindi volendone creare due posizionate una sopra l'altra, in cui in una vengono visualizzati i dati anagrafici e nella seconda quelli descrittivi esempio nella prima tabella vengono riportati "Cognome, Nome, Data di nascita ecc.." mentre nella seconda vengono riportati "Descrizione, Codice art., Q.tà ecc...", con la premessa che devono lavorare in modo sincronizzato, in che modo va modificata la macro?.
.

Ti allego esempio
Allegati
ListboxMultiFiltrata_due_grid.ods
(16.3 KiB) Scaricato 121 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Creare filtro in una maschera di dialogo

Messaggio da hubert lambert »

patel ha scritto:
hubert lambert ha scritto:Ciao Hubert, l'esempio allegato mostra le prime 3 colonne e non la 0, 1, 3
io credo che tu debba sostituire la riga

Codice: Seleziona tutto

datamodel.addRows(dimarray(ubound(Dati)), Dati)
con

Codice: Seleziona tutto

datamodel.addRows(dimarray(ubound(rows)), rows)
Hai proprio ragione, grazie per l'aver notato. Ho risposto un po troppo in fretta, scusatemi!
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
patel
Volontario attivo
Volontario attivo
Messaggi: 4016
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Creare filtro in una maschera di dialogo

Messaggio da patel »

per questa volta sei perdonato :D
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Creare filtro in una maschera di dialogo

Messaggio da sanraff »

Buongiorno a tutti ragazzi, scusatemi se vi rispondo solo adesso, ma mentre stavo testando le vostre macro, la versione di OoO 4.1.3 installata Venerdì scorso proprio per l'occasione poiché quella che avevo prima non mi permetteva di visualizzare correttamente le macro realizzate con il controllo di tabella, è andata completamente in crash.

Dopo svariati tentativi nel capire di risolvere la cosa, non avendo ottenuto nulla e preso dalla disperazione, ho installato una versione di Libre Office la 5.3, che mi ha dato l'opportunità di testare il vostro lavoro realizzando il progetto di cui allego copia ove però vorrei capire come si fa a fare un'ultima cosa, prima di mettere "Risolto".

Mi riferisco alla formattazione di alcuni campi, mi spiego meglio:
Acquisendo le informazioni dalla tabella di Calc, quella realizzata nella maschera di dialogo, i campi "Data, Valuta ed Orario", li visualizza sotto forma di numero, mentre a me occorrerebbe visualizzarli per come sono espressi nella tabella di Calc, cioè la "Data con gg/mm/aaaa, la Valuta con il simbolo dell'euro e due cifre decimali dopo la virgola, L'Orario con quattro numeri ed il punto nel mezzo ( 08.30 )".

Potreste insegnarmi a capire come si fa?, e vi ringrazio nuovamente per il vostro contributo.
Allegati
ListboxMultiFiltrata_3.ods
(20.02 KiB) Scaricato 129 volte
OpenOffice 3.3 SU WINDOWS 7
Gaetanopr
Volontario
Volontario
Messaggi: 3291
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Creare filtro in una maschera di dialogo

Messaggio da Gaetanopr »

Ho aggiunto alcune righe di codice alla fine della macro per convertire le date e gli orari.
Per la valuta del listino il codice da inserire è il seguente e così via per le altre colonne che contengono valute.

Codice: Seleziona tutto

datan = Format(datamodel2.getRowData(i-1)(2), "#.#0 [$€-80C];[RED]-#.#0 [$€-80C]") 
	  datamodel2.updateCellData(2, i-1, datan) 
scegliendo il formato che si desidera
Allegati
ListboxMultiFiltrata_3 (1).ods
(17.68 KiB) Scaricato 132 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Creare filtro in una maschera di dialogo

Messaggio da sanraff »

Buonasera Gaetanopr, ho fatto test inerente al tuo ultimo lavoro, però mi sono accorto che mancava questa parte
sanraff ha scritto:la Valuta con il simbolo dell'euro e due cifre decimali dopo la virgola
allora ci ho provato io a fare un tentativo scrivendo:
REM Numero con Valuta
for i = 1 To datamodel2.rowcount
datan = CSng(datamodel2.getRowData(i-1)(2))
' datan = Val(datamodel2.getRowData(i-1)(2)) -------> provata stringa in alternativa ma non raggiungo lo scopo
datamodel2.updateCellData(2, i-1, datan & " €")
next i

Adesso il simbolo della valuta c'è però il numero viene sempre espresso intero e non decimale, come da mia richiesta.

Puoi per piacere spiegarmi dove sbaglio??? :crazy:
grazie
OpenOffice 3.3 SU WINDOWS 7
Gaetanopr
Volontario
Volontario
Messaggi: 3291
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Creare filtro in una maschera di dialogo

Messaggio da Gaetanopr »

Gaetanopr ha scritto: Per la valuta del listino il codice da inserire è il seguente e così via per le altre colonne che contengono valute.

Codice: Seleziona tutto

datan = Format(datamodel2.getRowData(i-1)(2), "#.#0 [$€-80C];[RED]-#.#0 [$€-80C]") 
	  datamodel2.updateCellData(2, i-1, datan) 
scegliendo il formato che si desidera
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
sanraff
Messaggi: 316
Iscritto il: sabato 27 ottobre 2012, 14:08

Re: Creare filtro in una maschera di dialogo

Messaggio da sanraff »

scusami, non so perchè, ma non avevo visto questa tua risposta
Gaetanopr ha scritto:Per la valuta del listino il codice da inserire è il seguente e così via per le altre colonne che contengono valute.
Codice: Seleziona tutto Espandi visuale
datan = Format(datamodel2.getRowData(i-1)(2), "#.#0 [$€-80C];[RED]-#.#0 [$€-80C]")
datamodel2.updateCellData(2, i-1, datan)
cmq ho provato questa soluzione per formattare meglio il campo orario e funziona uguale, cioè
da così:
datan = CDate(datamodel2.getRowData(i-1)(7)), --> dove i numeri si presentano in 12.00.00 (anche con i secondi)
l'ho riscritta così:
datan = Format(datamodel2.getRowData(i-1)(7), "HH:MM" --> in questo modo i numeri si presentano (08.30) come volevo io.

grazie di tutto, con voi e grazie a questo post mi avete insegnato tantissime cose

alla prossima. :super:
OpenOffice 3.3 SU WINDOWS 7
Rispondi