Filtro ricerche da casella di testo o casella di riepilogo
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Filtro ricerche da casella di testo o casella di riepilogo
Dovrei impostare il filtro di una ricerca utilizzato in altre ricerche per generare delle stampe.
Al momento dovrei modificare la ricerca a mano per poi passare alla stampa dei dati estratti da altre 2 ricerche che si basano su questa.
Il problema è che la procedura per l'inserimento dei dati e le stampe viene utilizzata anche da colleghi che non hanno molta pratica.
Pertanto pensavo di utilizzare una macro che apra la ricerca, imposti il filtro da una casella di testo (meglio ancora una casella di riepilogo), chiuda la ricerca.
A questo punto anche i dati delle altre 2 ricerche risultano filtrati e li posso passare al modulo della stampa.
Qual'è il problema: non ci capisco niente di macro.
Qualcuno più esperto mi può aiutare?
Al momento dovrei modificare la ricerca a mano per poi passare alla stampa dei dati estratti da altre 2 ricerche che si basano su questa.
Il problema è che la procedura per l'inserimento dei dati e le stampe viene utilizzata anche da colleghi che non hanno molta pratica.
Pertanto pensavo di utilizzare una macro che apra la ricerca, imposti il filtro da una casella di testo (meglio ancora una casella di riepilogo), chiuda la ricerca.
A questo punto anche i dati delle altre 2 ricerche risultano filtrati e li posso passare al modulo della stampa.
Qual'è il problema: non ci capisco niente di macro.
Qualcuno più esperto mi può aiutare?
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- marcofoc
- Messaggi: 235
- Iscritto il: martedì 12 ottobre 2010, 16:48
- Località: Arzignano (VI)
- Contatta:
Re: Filtro ricerche da casella di testo o casella di riepilo
Ciao!
Come "filtri" i dati dalle prime de ricerche?
In teoria, se imposti una ricerca su una ricerca madre che abbia già un criterio di filtrazione, se lo porta avanti e te lo chiede quanto richiami la ricerca figlia:
esempio
ricerca_madre
ricerca_figlia
ora qui la ricerca non ha un senso, ma è epr farti capire che quando chiami la figlia, ti chiederà prima il filtro della madre e poi il filtro della figlia.
Come "filtri" i dati dalle prime de ricerche?
In teoria, se imposti una ricerca su una ricerca madre che abbia già un criterio di filtrazione, se lo porta avanti e te lo chiede quanto richiami la ricerca figlia:
esempio
ricerca_madre
Codice: Seleziona tutto
SELECT colonna1 FROM tabella WHERE colonna1 = :"filtro la madre con"
Codice: Seleziona tutto
SELECT colonna1 FROM ricerca_madre WHERE colonna1 = :"filtro ancora la figlia"
Non esistono buoni maestri senza buoni allievi...
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
E' proprio questo il punto.
Io vorrei creare un form dove l'utente possa inserire, o meglio ancora scegliare da casella di riepilogo, la pratica da stampare.
Il dato del form dovrebbe quindi essere passato alla ricerca per filtrare i dati.
Il risultato dovrebbe essere una cosa simile:
dove, ovviamente, 6 è il dato che l'utente ha specificato.
In pratica la macro mi dovrebbe creare una ricerca con il codice sql cambiando il 6 con il dato indicato.
Io vorrei creare un form dove l'utente possa inserire, o meglio ancora scegliare da casella di riepilogo, la pratica da stampare.
Il dato del form dovrebbe quindi essere passato alla ricerca per filtrare i dati.
Il risultato dovrebbe essere una cosa simile:
Codice: Seleziona tutto
SELECT "IDAUT" FROM "AUTORIZZAZIONI" WHERE "IDAUT" = 6
In pratica la macro mi dovrebbe creare una ricerca con il codice sql cambiando il 6 con il dato indicato.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- marcofoc
- Messaggi: 235
- Iscritto il: martedì 12 ottobre 2010, 16:48
- Località: Arzignano (VI)
- Contatta:
Re: Filtro ricerche da casella di testo o casella di riepilo
Per favore, prova ad essere un po' più preciso.
Metti i nomi delle tabelle e i nomi delle colonne.
Fammi capire cosa vuoi fare.
Metti i nomi delle tabelle e i nomi delle colonne.
Fammi capire cosa vuoi fare.
Non esistono buoni maestri senza buoni allievi...
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
Il database serve per registrare e stampare le autorizzazioni per il transito silvo-pastorale (tralascio le spiegazioni relative al silvo-pastorale).
La tabella da filtrare è una sola: autorizzazioni e contiene tutti i dati dei richiedenti e altri relativi all'autorizzazione. L'autorizzazione è numerata univocamente con IDAUT
La ricerca dovrebbe filtrare questa tabella secondo un IDAUT che indica l'utente (Q_SCEGLI_IDAUT).
Ogni autorizzazione può avere collegati più veicoli che sono specificati nella tabella VEICOLI.
Se imposto una query che faccia riferimento sia alla tabella AUTORIZZAZIONI sia la tabella VEICOLI mi ripete i dati dell'autorizzazione tante volte quanti sono i veicoli.
Quello che pensavo di fare io è questo:
Filtro i dati della tabella autorizzazioni isolando IDAUT con la ricerca Q_SCEGLI_IDAUT
Imposto una ricerca (Q_STAMPA_SCELTA) che collega la tabella AUTORIZZAZIONI con la ricerca Q_SCEGLI_IDAUT in modo che i dati vengono filtrati secondo l'unico valore presente in Q_SCEGLI_IDAUT
Imposto una ricerca (Q_SCEGLI_VEICOLI) che collega la tabella VEICOLI con la ricerca Q_SCEGLI_IDAUT in modo che i dati vengono filtrati secondo l'unico valore presente in Q_SCEGLI_IDAUT
I dati filtrati di Q_STAMPA_SCELTA e Q_SCEGLI_VEICOLI vengono passati ad un modello di testo Writer per la composizione della stampa.
Al momento è necessario aprire in modifica manuale la ricerca Q_SCEGLI_IDAUT per inserire il valore di IDAUT da filtrare.
Questo comporta che l'utente prima deve cercare nella tabella AUTORIZZAZIONI, fra le autorizzazioni registrate, quella che interessa per riportare il relativo IDAUT nella ricerca.
Io vorrei impostare un formulario con casella di riepilogo che riassuma i dati della tabella AUTORIZZAZIONI e che il dato presente nella casella venga utilizzato per filtrare i dati nella ricerca Q_SCEGLI_IDAUT. Per fare questo credo sia necessaria una macro ... che non so fare.
La tabella da filtrare è una sola: autorizzazioni e contiene tutti i dati dei richiedenti e altri relativi all'autorizzazione. L'autorizzazione è numerata univocamente con IDAUT
La ricerca dovrebbe filtrare questa tabella secondo un IDAUT che indica l'utente (Q_SCEGLI_IDAUT).
Ogni autorizzazione può avere collegati più veicoli che sono specificati nella tabella VEICOLI.
Se imposto una query che faccia riferimento sia alla tabella AUTORIZZAZIONI sia la tabella VEICOLI mi ripete i dati dell'autorizzazione tante volte quanti sono i veicoli.
Quello che pensavo di fare io è questo:
Filtro i dati della tabella autorizzazioni isolando IDAUT con la ricerca Q_SCEGLI_IDAUT
Imposto una ricerca (Q_STAMPA_SCELTA) che collega la tabella AUTORIZZAZIONI con la ricerca Q_SCEGLI_IDAUT in modo che i dati vengono filtrati secondo l'unico valore presente in Q_SCEGLI_IDAUT
Imposto una ricerca (Q_SCEGLI_VEICOLI) che collega la tabella VEICOLI con la ricerca Q_SCEGLI_IDAUT in modo che i dati vengono filtrati secondo l'unico valore presente in Q_SCEGLI_IDAUT
I dati filtrati di Q_STAMPA_SCELTA e Q_SCEGLI_VEICOLI vengono passati ad un modello di testo Writer per la composizione della stampa.
Al momento è necessario aprire in modifica manuale la ricerca Q_SCEGLI_IDAUT per inserire il valore di IDAUT da filtrare.
Questo comporta che l'utente prima deve cercare nella tabella AUTORIZZAZIONI, fra le autorizzazioni registrate, quella che interessa per riportare il relativo IDAUT nella ricerca.
Io vorrei impostare un formulario con casella di riepilogo che riassuma i dati della tabella AUTORIZZAZIONI e che il dato presente nella casella venga utilizzato per filtrare i dati nella ricerca Q_SCEGLI_IDAUT. Per fare questo credo sia necessaria una macro ... che non so fare.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- marcofoc
- Messaggi: 235
- Iscritto il: martedì 12 ottobre 2010, 16:48
- Località: Arzignano (VI)
- Contatta:
Re: Filtro ricerche da casella di testo o casella di riepilo
Io risolverei la situazione purtroppo rinunciando alla casella di riepilogo.
L'utente deve chiamare la ricerca con già in testà l'idaut..
Creerei prima la ricerca:
Q_SCEGLI_IDAUT
e poi le varie altre ricerche, come ad esempio quella dei veicoli:
Q_SCEGLI_VEICOLI
PS: quel mettere i nomi alle tabelle e colonne in maiuscolo non mi piace per niente.. ti potrebbe dare problemi in futuro. Se le ricerche che ti ho suggerito non dovessero funzionare, riscrivile fra apici. Per esempio
L'utente deve chiamare la ricerca con già in testà l'idaut..
Creerei prima la ricerca:
Q_SCEGLI_IDAUT
Codice: Seleziona tutto
SELECT IDAUT FROM AUTORIZZAZIONE WHERE IDAUT = :idaut
Q_SCEGLI_VEICOLI
Codice: Seleziona tutto
SELECT IDMEZZO FROM VEICOLI WHERE IDAUT = Q_SCEGLI_IDAUT.IDAUT
Codice: Seleziona tutto
SELECT "IDMEZZO" FROM "VEICOLI" WHERE "IDAUT" = "Q_SCEGLI_IDAUT"."IDAUT"
Non esistono buoni maestri senza buoni allievi...
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
In questo modo però (è il primo metodo che ho usato) devo inserire IDAUT quando apro la ricerca per le autorizzazione e anche quando apro quella dei veicoli.
Così facendo la ricerca Q_SCEGLI_IDAUT è inutile. Basta mettere :IDAUT come criterio per il filtro nelle altre due ricerche: il risultato è lo stesso e ho una ricerca in meno.
Avere la ricerca Q_SCEGLI_IDAUT mi serve proprio per inserire il numero di autorizzazione una sola volta e avere automaticamente i dati delle altre due ricerche filtrati.
Se vogliamo farlo inserire a mano metto un campo di testo nel modulo invece della casella di riepilogo, ma la macro che mi genera il codice SQL mi serve comunque.
Perchè non vanno bene i nomi in maiuscolo? Che problemi potrebbero generare?
Così facendo la ricerca Q_SCEGLI_IDAUT è inutile. Basta mettere :IDAUT come criterio per il filtro nelle altre due ricerche: il risultato è lo stesso e ho una ricerca in meno.
Avere la ricerca Q_SCEGLI_IDAUT mi serve proprio per inserire il numero di autorizzazione una sola volta e avere automaticamente i dati delle altre due ricerche filtrati.
Se vogliamo farlo inserire a mano metto un campo di testo nel modulo invece della casella di riepilogo, ma la macro che mi genera il codice SQL mi serve comunque.
Perchè non vanno bene i nomi in maiuscolo? Che problemi potrebbero generare?
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- marcofoc
- Messaggi: 235
- Iscritto il: martedì 12 ottobre 2010, 16:48
- Località: Arzignano (VI)
- Contatta:
Re: Filtro ricerche da casella di testo o casella di riepilo
Si è vero, la ricerca risulta doppia e inutile. Mi interessava fosse chiaro il metodo della richiesta del filtro che viene proposta anche se lo metti a monte di altre ricerche (a me risulta molto comodo).
I nomi in maiuscolo:
io uso Ooo per collegarmi ad un database PostgreSQL. Non cambia niente.
Mi sono accorto però che le etichette in maiuscolo vengono trattate in come se fossero "non consone". Quando creo le ricerche, vengono messe in automatico fra apici anzichè essere lasciate libere come quelle in minuscolo.
Se un domani volessi interfacciarti al tuo database con un altro linguaggio e crearti un'applicazione, ste etichette "non consone" ti incasineranno parecchio la programmazione. Perchè nel codice inserirai i token in SQL fra apici. Quindi immagina codice scritto fra apici con dentro codice scritto fra apici... un casino.
Io poi a suo tempo addirittura ho creato tabelle con nomi tipo "Unità di misura".
Non ti dico... maiuscole+minuscole+spazi+accenti .... ..... da prendersi a martellate sui....
I nomi in maiuscolo:
io uso Ooo per collegarmi ad un database PostgreSQL. Non cambia niente.
Mi sono accorto però che le etichette in maiuscolo vengono trattate in come se fossero "non consone". Quando creo le ricerche, vengono messe in automatico fra apici anzichè essere lasciate libere come quelle in minuscolo.
Se un domani volessi interfacciarti al tuo database con un altro linguaggio e crearti un'applicazione, ste etichette "non consone" ti incasineranno parecchio la programmazione. Perchè nel codice inserirai i token in SQL fra apici. Quindi immagina codice scritto fra apici con dentro codice scritto fra apici... un casino.
Io poi a suo tempo addirittura ho creato tabelle con nomi tipo "Unità di misura".
Non ti dico... maiuscole+minuscole+spazi+accenti .... ..... da prendersi a martellate sui....
Non esistono buoni maestri senza buoni allievi...
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
Dici che questa macro potrebbe funzionare?
al posto di oForm.Reload() però penso che si dovrebbe mettere un'istruzione che filtra la ricerca e non il form
il problema però resta sempre lo stesso ... di macro non ne capisco una mazza
Problema maiuscole: è preferibile quindi scrivere tutto in minuscolo? da altri 3D avevo capito il contrario.
Codice: Seleziona tutto
Sub Filtra(oEv as object)
dim oForm as object
dim oControl as object
dim CbxValue as string
oForm = oEv.source.model.parent
oControl = oForm.GetByName("NomeCasella")
CbxValue = oControl.CurrentValue
oForm.Filter = "( ""Tabella"".""CampoDaFiltrare"" LIKE '%" & CbxValue & "%' )"
oForm.Reload()
End sub
il problema però resta sempre lo stesso ... di macro non ne capisco una mazza
Problema maiuscole: è preferibile quindi scrivere tutto in minuscolo? da altri 3D avevo capito il contrario.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
Re: Filtro ricerche da casella di testo o casella di riepilo
crea una vista e poi ricerca
da li fai quello che vuoi
da li fai quello che vuoi
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
Ho provato, ma non capisco come.crea una vista e poi ricerca
La vista non mi permette di filtrare i dati, almeno non nel modo che lo fa una ricerca.
Io dovrei isolare un solo dato dalla tabella AUTORIZZAZIONI per poi usarlo in altre ricerche come filtro.
Come posso fare questo da una vista?
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- marcofoc
- Messaggi: 235
- Iscritto il: martedì 12 ottobre 2010, 16:48
- Località: Arzignano (VI)
- Contatta:
Re: Filtro ricerche da casella di testo o casella di riepilo
Perdonatemi... ma per voi che differenza c'è fra una vista e una ricerca?
Non esistono buoni maestri senza buoni allievi...
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
In linea di massima credo ben poche. Dovrebbe essere vista come una tabella e non come una query ... almeno per quel poco che ho capito.
Però la vista non mi permette di filtrare i dati con "?" sui criteri.
Però la vista non mi permette di filtrare i dati con "?" sui criteri.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- marcofoc
- Messaggi: 235
- Iscritto il: martedì 12 ottobre 2010, 16:48
- Località: Arzignano (VI)
- Contatta:
Re: Filtro ricerche da casella di testo o casella di riepilo
Ma tu usi Base per collegarti ad un altro database o usi Base con il suo motore interno?
Mi incuriosisce il tuo usare il termine "vista"...
secondo me intendi quelle che sono delle ricerche create sul lato server. Allora si che concordo sul fatto che non ti permettono di passare parametri per filtrare.
E' vero. Per quello devi crearti una vista (o una ricerca), in locale. Sul lato client.
Mi incuriosisce il tuo usare il termine "vista"...
secondo me intendi quelle che sono delle ricerche create sul lato server. Allora si che concordo sul fatto che non ti permettono di passare parametri per filtrare.
E' vero. Per quello devi crearti una vista (o una ricerca), in locale. Sul lato client.
Non esistono buoni maestri senza buoni allievi...
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
Base io lu uso con HSQL standalone perchè la base di dati è sul server ed in modalità standalone va tutto in malora.
Credo che si possa intendere come dici tu. alla fine, poichè i dati sono "esterni".
Credo che si possa intendere come dici tu. alla fine, poichè i dati sono "esterni".
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
Re: Filtro ricerche da casella di testo o casella di riepilo
@marcofoc
per i db una vista è una tabella con dati fissi provenienti dal join di più tabelle; usato per calcoli e altro dove serve avere dati pronti
hsqldb standalone crea una tabella nel db, (in genere se non specificato è di quello che si parla).
come vedere: in strumenti sql
@UTPiovene
Nel tuo problema ci sono cose che non capisco e ora provo a spiegare ma farò anch'io un pò a fatica.
problema:
c'è delle strade dove i veicoli possono passare solo con autorizzazioni.
quindi in tabella autorizzazioni manca idveicolo
da qui una sola query che estrae tutto
poi su Writer metti quello che viene
e macro che non sai fare butti nelle ortiche, naturalmente in zona pastorale solo se hai fatto autorizzazione
per i db una vista è una tabella con dati fissi provenienti dal join di più tabelle; usato per calcoli e altro dove serve avere dati pronti
hsqldb standalone crea una tabella nel db, (in genere se non specificato è di quello che si parla).
come vedere: in strumenti sql
Codice: Seleziona tutto
script 'nomefilechevuoi'
Nel tuo problema ci sono cose che non capisco e ora provo a spiegare ma farò anch'io un pò a fatica.
problema:
c'è delle strade dove i veicoli possono passare solo con autorizzazioni.
- località tante? aggiungi tabella area(zona percorso o quello che in italiano viene meglio), che contiene tante località ma idarea è uno solo
veicoli tanti, guidatori tanti (non è un problema di autorizzazioni)
cause una
quindi in tabella autorizzazioni manca idveicolo
da qui una sola query che estrae tutto
poi su Writer metti quello che viene
e macro che non sai fare butti nelle ortiche, naturalmente in zona pastorale solo se hai fatto autorizzazione
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
Vladko sei simpaticissimo come sempre.
Il problema è proprio che ad ogni autorizzazione, mentre la località è una, possono invece corrispondere più veicoli.
Il problema è proprio che ad ogni autorizzazione, mentre la località è una, possono invece corrispondere più veicoli.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Filtro ricerche da casella di testo o casella di riepilo
Sono dovuto uscire per un sopralluogo, riprendo dal precedente (perchè non posso modificare il messaggio precedente?)
Allora dicevo che per ogni autorizzazione ci possono essere più veicoli, quindi ho fatto una tabella dei veicoli autorizzati a cui ho collegato ID autorizzazione a cui fa riferimento.
Ora capisco che è poco simpatico fare paragoni con Access, ma lì si poteva impostare il filtro della query sulla base di un valore di testo contenuto in una casella di testo non collegata contenuta in un formulario. Quindi non dovevo fare altro che inserire il valore del formulario per vedere i dati filtrati.
Ho provato a fare la stessa cosa con Base, ma non funziona. Per questo pensavo ad una macro che prelevasse il valore della casella di testo o di riepilogo per creare di volta in volta la query.
Allora dicevo che per ogni autorizzazione ci possono essere più veicoli, quindi ho fatto una tabella dei veicoli autorizzati a cui ho collegato ID autorizzazione a cui fa riferimento.
Ora capisco che è poco simpatico fare paragoni con Access, ma lì si poteva impostare il filtro della query sulla base di un valore di testo contenuto in una casella di testo non collegata contenuta in un formulario. Quindi non dovevo fare altro che inserire il valore del formulario per vedere i dati filtrati.
Ho provato a fare la stessa cosa con Base, ma non funziona. Per questo pensavo ad una macro che prelevasse il valore della casella di testo o di riepilogo per creare di volta in volta la query.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1