inserire un campo di ricerca in un formulario
-
utonto_medio
- Messaggi: 17
- Iscritto il: martedì 30 marzo 2010, 17:54
inserire un campo di ricerca in un formulario
ciao a tutti.
ho da poco creato il mio primo db (monotabella perchè nonostante luuunghe letture non capisco come funzionino le relazioni tra tabelle).
Ovviamente essendo io totalmente novizio ho già fatto un milione di modifiche e sono quasi soddisfatto (chi si accontenta gode)
Nel formulario vorrei però poter inserire una serie di campi di ricerca in modo da poter trovare tutte le righe che hanno quel determinato valore (o sequenza di caratteri...) in un determinato campo o in più campi (stabiliti da me). E' possibile? è alla portata di utonto?
Utilizzando il filtro notavo che è case sensitive... non fa al caso mio... io sono utonto... è già tanto se scrivo correttamente i caratteri... insomma per me "Pippo" e "pippo" devono essere la stessa cosa.
Avrei in realtà anche un'altra domanda:
io piazzo il mio bel file in una cartella del server, un utente che non ha installato OO può vedere visualizzare il mio file? (ad esempio in un browser...)
in alternativa posso fare in modo che lui veda il file in OO ma non possa modificarlo?
grazie a tutti per l'attenzione e le eventuali risposte...
utonto_medio anzi no... utonto_base
PS: non ho idea di cosa sia un motore DB, o di cosa sia MySQL... tutto ciò che so è che esistono.
ho da poco creato il mio primo db (monotabella perchè nonostante luuunghe letture non capisco come funzionino le relazioni tra tabelle).
Ovviamente essendo io totalmente novizio ho già fatto un milione di modifiche e sono quasi soddisfatto (chi si accontenta gode)
Nel formulario vorrei però poter inserire una serie di campi di ricerca in modo da poter trovare tutte le righe che hanno quel determinato valore (o sequenza di caratteri...) in un determinato campo o in più campi (stabiliti da me). E' possibile? è alla portata di utonto?
Utilizzando il filtro notavo che è case sensitive... non fa al caso mio... io sono utonto... è già tanto se scrivo correttamente i caratteri... insomma per me "Pippo" e "pippo" devono essere la stessa cosa.
Avrei in realtà anche un'altra domanda:
io piazzo il mio bel file in una cartella del server, un utente che non ha installato OO può vedere visualizzare il mio file? (ad esempio in un browser...)
in alternativa posso fare in modo che lui veda il file in OO ma non possa modificarlo?
grazie a tutti per l'attenzione e le eventuali risposte...
utonto_medio anzi no... utonto_base
PS: non ho idea di cosa sia un motore DB, o di cosa sia MySQL... tutto ciò che so è che esistono.
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: inserire un campo di ricerca in un formulario
Se per campo di ricerca intendi una cosa del genere
in cui su un campo di testo indichi dei caratteri e questo filtra in automatico una tabella o altro, allora ti serve una macro di questo tipo:
La macro va collegato all'evento "Modificato" del campo di ricerca, mentre deve essere "aggiustato" il nome della tabella (nel mio caso "clienti") e del campo (nel mio caso "nome").
Per la visione del file sul browser, penso sia un po' scomodo (ci sono i servizi di Zoho - qui c'è l'extension per Firefox: https://addons.mozilla.org/it/firefox/addon/3328 , oppure GoogleDocuments), è molto più semplice salvare i file su una cartella a cui assegni permessi di sola lettura a tutti, mentre a te metti tutti i permessi, cosa da fare dal sistema operativo (click destro sulla cartella, proprietà, protezione o qualcosa di simile).
Codice: Seleziona tutto
Sub FiltraPerCliente(oEv)
oModel = oEv.Source.Model
sTestoPerRicerca = oEv.Source.getAccessibleContext.Text
oForm = oModel.Parent
oForm.Filter = " ( ""clienti"".""nome"" LIKE '%" & sTestoPerRicerca & "%' )"
oForm.reload()
End Sub
Per la visione del file sul browser, penso sia un po' scomodo (ci sono i servizi di Zoho - qui c'è l'extension per Firefox: https://addons.mozilla.org/it/firefox/addon/3328 , oppure GoogleDocuments), è molto più semplice salvare i file su una cartella a cui assegni permessi di sola lettura a tutti, mentre a te metti tutti i permessi, cosa da fare dal sistema operativo (click destro sulla cartella, proprietà, protezione o qualcosa di simile).
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
-
utonto_medio
- Messaggi: 17
- Iscritto il: martedì 30 marzo 2010, 17:54
Re: inserire un campo di ricerca in un formulario
eh... è + complicato di quanto immaginassi (pensavo che esistesse una tipologia di campi apposita... non si può proporre?)
prendendo l'esempio che hai postato tu Clienti è il nome della tabella? [avevo letto il post mentre stavo ascoltando un'altra persona]
e se io volessi estendere la ricerca al campo "indirizzi" oltre che nome come potrei fare? (intendo dire che la ricerca di quel carattere o sequenza di caratteri viene effettuate su due o più campi? una sorta di cerca in campo 1 e campo 2)
intanto grazie.
aggiornamento:
funzionaaaaaaaaaaa!!!!!
sono commosso!!!
ora mi basterebbe capire:
come estendere la ricerca su due campi? ho provato a mettere un And tra il nome di due campi (ciascuno virgolettato) ma non ho avuto esito positivo
come rendere la ricerca non "case sensitive" (quindi che mi trovi quella parola indipendentemente dall'uso di maiuscole e minuscole
prendendo l'esempio che hai postato tu Clienti è il nome della tabella? [avevo letto il post mentre stavo ascoltando un'altra persona]
e se io volessi estendere la ricerca al campo "indirizzi" oltre che nome come potrei fare? (intendo dire che la ricerca di quel carattere o sequenza di caratteri viene effettuate su due o più campi? una sorta di cerca in campo 1 e campo 2)
intanto grazie.
aggiornamento:
funzionaaaaaaaaaaa!!!!!
ora mi basterebbe capire:
come estendere la ricerca su due campi? ho provato a mettere un And tra il nome di due campi (ciascuno virgolettato) ma non ho avuto esito positivo
come rendere la ricerca non "case sensitive" (quindi che mi trovi quella parola indipendentemente dall'uso di maiuscole e minuscole
Openoffice 3.2 su win XP
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: inserire un campo di ricerca in un formulario
devi mettere un AND ricopiando tutto il filtro due volte, tipo (vedi sotto per LCASE):utonto_medio ha scritto:eh... è + complicato di quanto immaginassi (pensavo che esistesse una tipologia di campi apposita... non si può proporre?)
prendendo l'esempio che hai postato tu Clienti è il nome della tabella? [avevo letto il post mentre stavo ascoltando un'altra persona]
e se io volessi estendere la ricerca al campo "indirizzi" oltre che nome come potrei fare? (intendo dire che la ricerca di quel carattere o sequenza di caratteri viene effettuate su due o più campi? una sorta di cerca in campo 1 e campo 2)
intanto grazie.
aggiornamento:
funzionaaaaaaaaaaa!!!!!sono commosso!!!
ora mi basterebbe capire:
come estendere la ricerca su due campi? ho provato a mettere un And tra il nome di due campi (ciascuno virgolettato) ma non ho avuto esito positivo
" ( LCASE(""clienti"".""nome"") LIKE LCASE('%" & sTestoPerRicerca & "%' )) AND ( LCASE(""clienti"".""nome"") LIKE LCASE('%" & sTestoPerRicerca & "%' ))
(cambiando ovviamente il nome del campo che ti serve)
modifica la riga del filtro della macro così:utonto_medio ha scritto:come rendere la ricerca non "case sensitive" (quindi che mi trovi quella parola indipendentemente dall'uso di maiuscole e minuscole
Codice: Seleziona tutto
oForm.Filter = " ( LCASE(""clienti"".""nome"") LIKE LCASE('%" & sTestoPerRicerca & "%' ))"
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
-
utonto_medio
- Messaggi: 17
- Iscritto il: martedì 30 marzo 2010, 17:54
Re: inserire un campo di ricerca in un formulario
non ho ancora avuto modo di provare la ricerca su più campi. prometto che appena ho un momento provo.
ora ho provato ad impostare un anche un formulario secondario (vista tabellare), il mio campo di ricerca però effettua la ricerca sul primario (che non è tabellare) mi mostra un record alla volta.
Se volessi che inserendo un valore nel campo di ricerca il formulario secondario mi mostrasse solo le righe che in quel campo (o in più campi) contengano quel valore sarebbe possibile?
ho visto che esiste un tipo di campo testo chiamato "varchar_ignorecase" se uso quello posso utilizzare la prima macro che mi era stata proposta in questo post? (e non incorrere nel problema della diversità tra caratteri minuscoli e maiuscoli?
quali sono vantaggi e svantaggi di questo tipo di campo?
ancora grazie.
u.
ora ho provato ad impostare un anche un formulario secondario (vista tabellare), il mio campo di ricerca però effettua la ricerca sul primario (che non è tabellare) mi mostra un record alla volta.
Se volessi che inserendo un valore nel campo di ricerca il formulario secondario mi mostrasse solo le righe che in quel campo (o in più campi) contengano quel valore sarebbe possibile?
ho visto che esiste un tipo di campo testo chiamato "varchar_ignorecase" se uso quello posso utilizzare la prima macro che mi era stata proposta in questo post? (e non incorrere nel problema della diversità tra caratteri minuscoli e maiuscoli?
quali sono vantaggi e svantaggi di questo tipo di campo?
ancora grazie.
u.
Openoffice 3.2 su win XP
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: inserire un campo di ricerca in un formulario
E' possibile collegare la ricerca al formulario che vuoi, e impostarla sui campi che vuoi, basta modificarla opportunamente (puoi crearla con la procedura guidata, poi copiarla ed incollarla nella macro).
Per varchar_ignorecase, dovrebbe funzionare come dici (mai provato).
Per varchar_ignorecase, dovrebbe funzionare come dici (mai provato).
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
-
utonto_medio
- Messaggi: 17
- Iscritto il: martedì 30 marzo 2010, 17:54
Re: inserire un campo di ricerca in un formulario
Ciao Xergio,
non ho capito cosa intendi con
mi vien fuori una tabella con tutte le mie righe ed i campi.
a questo punto non ho ben chiaro come incollarla con la macro e come associare la macro al formulario secondario...
intanto grazie
ciao
u.
non ho capito cosa intendi con
ho creato una ricerca con la procedura guidata (sperando di averlo fatto in maniera corretta). Quando mi chiede di inserire il Valore (>/=/<... a) ho lasciato vuoto.puoi crearla con la procedura guidata, poi copiarla ed incollarla nella macro)
mi vien fuori una tabella con tutte le mie righe ed i campi.
a questo punto non ho ben chiaro come incollarla con la macro e come associare la macro al formulario secondario...
intanto grazie
ciao
u.
Openoffice 3.2 su win XP
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: inserire un campo di ricerca in un formulario
La procedura guidata è disponibile qui:
Per fare una ricerca in più campi nello stesso formulario, puoi fare un filtro simile e poi copiarlo ed incollarlo al posto di quello che avevi prima, nella stessa macro che hai già usato e collegato.
Se invece vuoi fare una ricerca in un formulario e poi una successiva ricerca in un formulario secondario, puoi ripetere il processo della prima macro per entrambi i formulari, creando due diverse macro collegate ai rispettivi campi di testo di ricerca.
Se invece vuoi fare una ricerca in un formulario e poi una successiva ricerca in un formulario secondario, puoi ripetere il processo della prima macro per entrambi i formulari, creando due diverse macro collegate ai rispettivi campi di testo di ricerca.
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
-
utonto_medio
- Messaggi: 17
- Iscritto il: martedì 30 marzo 2010, 17:54
Re: inserire un campo di ricerca in un formulario
ciao intanto grazie:
per ora ho avuto tempo solo di occuparmi della ricerca:
avendo io un database delle composizioni di materiali e relative sigle, clienti...
avendo 4 campi per il nome del materiale, 4 per la sigla, 4 per la quantità ho modificato la macro così:
ho usato OR perchè con AND mi restituiva solo i record che hanno in tutti e 4 i campi il valore inserito nel campo di ricerca.
poi ho creato un'altra casella di ricerca per le sigle, la macro è identica ovviamente cambiano i campi in cui effettuare la ricerca.
Se faccio la ricerca in un solo campo (di ricerca) funziona, se invece cerco in contemporanea o in sequenza per materiale e per sigla mi restituisce solo i record che hanno il valore del campo sigla.
ho sbagliato a fare due macro diverse? dovevo farne una unica?
ovviamente sicuramente si andrà ad aggiungere la ricerca per cliente e sicuramente altri...
altra domanda. posso usare degli operatori logici nella ricerca? es. "PIPPO+PLUTO" per cercare i record che in quei campi hanno PIPPO e/o PLUTO e così via
Per finire notavo che se faccio una ricerca e mi trova N record se scorro all'N+1esimo mi scopaiono i valori inseriti nei campi ricerca e non ho modo per tornare indietro se non effettuando un'altra ricerca e poi cancellando il valore dal campo ricerca per poter avere tutti i miei record.
"mi sono stato spiegato"
per ora ho avuto tempo solo di occuparmi della ricerca:
avendo io un database delle composizioni di materiali e relative sigle, clienti...
avendo 4 campi per il nome del materiale, 4 per la sigla, 4 per la quantità ho modificato la macro così:
Codice: Seleziona tutto
Sub materiale_ricerca(oEv)
oModel = oEv.Source.Model
sTestoPerRicerca = oEv.Source.getAccessibleContext.Text
oForm = oModel.Parent
oForm.Filter = " ( LCASE(""Tabella completa"".""M1 descr."") LIKE LCASE('%" & sTestoPerRicerca & "%' ))OR( LCASE(""Tabella completa"".""M2 descr."") LIKE LCASE('%" & sTestoPerRicerca & "%' ))OR( LCASE(""Tabella completa"".""M3 descr."") LIKE LCASE('%" & sTestoPerRicerca & "%' ))OR( LCASE(""Tabella completa"".""M4 descr."") LIKE LCASE('%" & sTestoPerRicerca & "%' )) "
oForm.reload()
End Subpoi ho creato un'altra casella di ricerca per le sigle, la macro è identica ovviamente cambiano i campi in cui effettuare la ricerca.
Se faccio la ricerca in un solo campo (di ricerca) funziona, se invece cerco in contemporanea o in sequenza per materiale e per sigla mi restituisce solo i record che hanno il valore del campo sigla.
ho sbagliato a fare due macro diverse? dovevo farne una unica?
ovviamente sicuramente si andrà ad aggiungere la ricerca per cliente e sicuramente altri...
altra domanda. posso usare degli operatori logici nella ricerca? es. "PIPPO+PLUTO" per cercare i record che in quei campi hanno PIPPO e/o PLUTO e così via
Per finire notavo che se faccio una ricerca e mi trova N record se scorro all'N+1esimo mi scopaiono i valori inseriti nei campi ricerca e non ho modo per tornare indietro se non effettuando un'altra ricerca e poi cancellando il valore dal campo ricerca per poter avere tutti i miei record.
"mi sono stato spiegato"
Openoffice 3.2 su win XP
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: inserire un campo di ricerca in un formulario
a. Il filtro collegato al particolare form del database è unico, per cui ogni volta che lo modifichi cancelli il filtro precedente.
Potresti però:
1- salvare il filtro precedente (sPrecFilter = oForm.Filter)
2- impostare il nuovo filtro abbinandolo a quello salvato
3- impostare un bottone di "reset" del filtro
b. Puoi usare quello che si può usare all'interno del filtro di OOo, credo l'unico modo sia quello che già stai usando con OR, devi solo aggiungere più condizioni
c. Non ho provato perchè la ricerca l'ho fatta su una ricerca(!), appena mi capita faccio un test
Potresti però:
1- salvare il filtro precedente (sPrecFilter = oForm.Filter)
2- impostare il nuovo filtro abbinandolo a quello salvato
3- impostare un bottone di "reset" del filtro
b. Puoi usare quello che si può usare all'interno del filtro di OOo, credo l'unico modo sia quello che già stai usando con OR, devi solo aggiungere più condizioni
c. Non ho provato perchè la ricerca l'ho fatta su una ricerca(!), appena mi capita faccio un test
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Re: inserire un campo di ricerca in un formulario
ho trovato molto utile questa discussione, ho adattato il campo di ricerca ad un lavoro che sto sviluppando, ma non riesco ad ottenere nessun risultato, allora ho testato la macro è ho ricevuto un errore:
OpenOffice 3.1 su Windows Vista
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: inserire un campo di ricerca in un formulario
Il messaggio ti dice che la variabile "oEv" è vuota, presumo che non hai collegato la macro ad un evento (in modifica del formulario, click destro sul controllo, "campo di controllo", linguetta "Eventi" e colleghi la macro:
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Re: inserire un campo di ricerca in un formulario
Ciao ragazzi, è il mio primo post qui.
Premettendo che sono inesperto in questo genere di cose, sono riuscito a fare una tabella con Cognome, nome, indirizzo ecc.
Ho creato poi un formulario con tutti questi campi.
Quando faccio ricerca record (ho 4000 record) ci sta più di un minuto in base al cognome che inserisco,
Avrei bisogno di questa modalità spiegata in questo post per usufruire di una ricerca molto più veloce ed intuitiva, il problema è che essendo inesperto ho capito ben poco cosa c'è da fare e in secondo luogo avrei la necessita di inserire questa ricerca direttamente nel formulario, senza la necessità di spostare pagina per effettuare la ricerca.
Spero di essere stato chiaro, e se c'è qualcuno cosi gentile da spiegarmi come fare spero che lo faccia passo passo, senò non capisco nulla
Grazie, Turi.
Premettendo che sono inesperto in questo genere di cose, sono riuscito a fare una tabella con Cognome, nome, indirizzo ecc.
Ho creato poi un formulario con tutti questi campi.
Quando faccio ricerca record (ho 4000 record) ci sta più di un minuto in base al cognome che inserisco,
Avrei bisogno di questa modalità spiegata in questo post per usufruire di una ricerca molto più veloce ed intuitiva, il problema è che essendo inesperto ho capito ben poco cosa c'è da fare e in secondo luogo avrei la necessita di inserire questa ricerca direttamente nel formulario, senza la necessità di spostare pagina per effettuare la ricerca.
Spero di essere stato chiaro, e se c'è qualcuno cosi gentile da spiegarmi come fare spero che lo faccia passo passo, senò non capisco nulla
Grazie, Turi.
OpenOffice.org 3.3.0 su windows 7 e windows XP
Re: inserire un campo di ricerca in un formulario
Ragazzi finalmente ci sono riuscito, ma adesso ho un problema
se nella ricerca inserisco l'apostrofo mi da errore... come potrei ovviare al problema??? Grazie mille
OpenOffice.org 3.3.0 su windows 7 e windows XP
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: inserire un campo di ricerca in un formulario
Dato che l'apostrofo è il carattere usato dal motore SQL per dividere i campi, devi usare un'ESCAPE, solitamente la \, però è più comodo raddoppiarlo, quindi mettere due volte il carattere di apostrofo.
Puoi farlo da programma, cioè prima di passare la stringa al database formattarla opportunamente.
In Python ad esempio:
(n.b.: aggiungendo uno spazio dopo ogni carattere per una migliore visibilità si vede così: ( " ' " , " ' ' " ) )
Puoi farlo da programma, cioè prima di passare la stringa al database formattarla opportunamente.
In Python ad esempio:
Codice: Seleziona tutto
(stringa).replace("'","''")Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Re: inserire un campo di ricerca in un formulario
Con questa macro:
dove va inserito ?? XD
Please.
Codice: Seleziona tutto
Sub FiltraPerCliente(oEv)
oModel = oEv.Source.Model
sTestoPerRicerca = oEv.Source.getAccessibleContext.Text
oForm = oModel.Parent
oForm.Filter = " ( LCASE(""Pretesseramento2010"".""Cognome"") LIKE LCASE('%" & sTestoPerRicerca & "%' )) OR ( LCASE(""Pretesseramento2010"".""Tessera n°"") LIKE LCASE('%" & sTestoPerRicerca & "%' )) OR ( LCASE(""Pretesseramento2010"".""Data di richiesta"") LIKE LCASE('%" & sTestoPerRicerca & "%' )) OR ( LCASE(""Pretesseramento2010"".""Data di nascita"") LIKE LCASE('%" & sTestoPerRicerca & "%' ))"
oForm.reload()
End SubPlease.
OpenOffice.org 3.3.0 su windows 7 e windows XP
Re: inserire un campo di ricerca in un formulario
Buongiorno a tutti, vorrei creare un capo ricerca molto simile, l'unica differenza ma credo solo a livello di layout è che io uso un formulario non a tabella ma a campi, avrei bisogno di una ricerca anche non in tempo reale, praticamente ho creato un campo di testo, vorrei mettere un pulsante che mi avvia la ricerca e mi fa comparire nei campi soltanto i dati relativi al cliente filtrato, non mi intendo tanto di macro, però se qualcuno potrebbe spiegarmi piano piano cosa dovrei fare ne sarei molto felice, imparo in fretta..ho un po di dimestichezza con l'informatica..mi servirebbe magari solo qualche dritta..grazie mille!
OpenOffice 3.2 su Windows 7
Re: inserire un campo di ricerca in un formulario
xergio ha scritto:Se per campo di ricerca intendi una cosa del genere in cui su un campo di testo indichi dei caratteri e questo filtra in automatico una tabella o altro, allora ti serve una macro di questo tipo:La macro va collegato all'evento "Modificato" del campo di ricerca, mentre deve essere "aggiustato" il nome della tabella (nel mio caso "clienti") e del campo (nel mio caso "nome").Codice: Seleziona tutto
Sub FiltraPerCliente(oEv) oModel = oEv.Source.Model sTestoPerRicerca = oEv.Source.getAccessibleContext.Text oForm = oModel.Parent oForm.Filter = " ( ""clienti"".""nome"" LIKE '%" & sTestoPerRicerca & "%' )" oForm.reload() End Sub
Per la visione del file sul browser, penso sia un po' scomodo (ci sono i servizi di Zoho - qui c'è l'extension per Firefox: https://addons.mozilla.org/it/firefox/addon/3328 , oppure GoogleDocuments), è molto più semplice salvare i file su una cartella a cui assegni permessi di sola lettura a tutti, mentre a te metti tutti i permessi, cosa da fare dal sistema operativo (click destro sulla cartella, proprietà, protezione o qualcosa di simile).
Mi è stata molto utile la macro, ma avrei gentilmente un problema
la macro vorrei che faccia riferimento a una ricerca salvata e non a una tabella (in questo caso Clienti) ho provato a mettere il nome della ricerca mi da errore.
è possibile ?
Codice: Seleziona tutto
Sub FiltraPerCliente(oEv)
oModel = oEv.Source.Model
sTestoPerRicerca = oEv.Source.getAccessibleContext.Text
oForm = oModel.Parent
oForm.Filter = " ( ""clienti"".""nome"" LIKE '%" & sTestoPerRicerca & "%' )"
oForm.reload()
End Sub
Open Office 3.2.1
Windows 7 Ultimate 64 bit
Windows 7 Ultimate 64 bit
Re: inserire un campo di ricerca in un formulario
ho un problema molto simile, vorrei salvare i dati in una ricerca o comunque mi serve per filtrare un'altro formSilman ha scritto:xergio ha scritto:Se per campo di ricerca intendi una cosa del genere in cui su un campo di testo indichi dei caratteri e questo filtra in automatico una tabella o altro, allora ti serve una macro di questo tipo:La macro va collegato all'evento "Modificato" del campo di ricerca, mentre deve essere "aggiustato" il nome della tabella (nel mio caso "clienti") e del campo (nel mio caso "nome").Codice: Seleziona tutto
Sub FiltraPerCliente(oEv) oModel = oEv.Source.Model sTestoPerRicerca = oEv.Source.getAccessibleContext.Text oForm = oModel.Parent oForm.Filter = " ( ""clienti"".""nome"" LIKE '%" & sTestoPerRicerca & "%' )" oForm.reload() End Sub
Per la visione del file sul browser, penso sia un po' scomodo (ci sono i servizi di Zoho - qui c'è l'extension per Firefox: https://addons.mozilla.org/it/firefox/addon/3328 , oppure GoogleDocuments), è molto più semplice salvare i file su una cartella a cui assegni permessi di sola lettura a tutti, mentre a te metti tutti i permessi, cosa da fare dal sistema operativo (click destro sulla cartella, proprietà, protezione o qualcosa di simile).
Mi è stata molto utile la macro, ma avrei gentilmente un problema
la macro vorrei che faccia riferimento a una ricerca salvata e non a una tabella (in questo caso Clienti) ho provato a mettere il nome della ricerca mi da errore.
è possibile ?
Codice: Seleziona tutto
Sub FiltraPerCliente(oEv) oModel = oEv.Source.Model sTestoPerRicerca = oEv.Source.getAccessibleContext.Text oForm = oModel.Parent oForm.Filter = " ( ""clienti"".""nome"" LIKE '%" & sTestoPerRicerca & "%' )" oForm.reload() End Sub
Codice: Seleziona tutto
Sub FiltraPerCliente(oEv)
oModel = oEv.Source.Model
sTestoPerRicerca = oEv.Source.getAccessibleContext.Text
oForm = oModel.Parent
oForm.Filter = " ( ""clienti"".""nome"" LIKE '%" & sTestoPerRicerca & "%' )"
oForm.reload()
End Sub
così metto questa macro nel form che chiamo tramite il primo e come filtro mi risulta il campo del form precedente
OpenOffice 3.2 su Windows 7
Re: inserire un campo di ricerca in un formulario
Ragazzi ho utilizzato questa macro e va alla grande, ma ora mi chiedo come faccio a fare in modo che se ho in un campo cognome in uno nome, effettuando la ricerca e scrivendo cognome (spazio) nome mi dia solo quel record corrispondente???
Grazie
Grazie
OpenOffice.org 3.3.0 su windows 7 e windows XP
-
giannidalmi
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: inserire un campo di ricerca in un formulario
se ti può servire questa macro nel mio DB (biblioteca) è in un form in cui ci sono due listbox (tipo e autore) e un pulsante (trova) associato alla macro
penso che tu possa adattarla ad un solo campo di testo in cui scrivi cognome e nome e poi dividi per la ricerca con la funzione MID(stringa, posizione di partenza, numero caratteri): la posizione di partenza ed il umero di caratteri puoi individuarli prima con la funzione Instr(stringa," ")(individua la posizione dello spazio nella stringa)(le cose si complicano se hai (DELLA VALLE GIUSEPPE: due spazi!!)
buon lavoro
penso che tu possa adattarla ad un solo campo di testo in cui scrivi cognome e nome e poi dividi per la ricerca con la funzione MID(stringa, posizione di partenza, numero caratteri): la posizione di partenza ed il umero di caratteri puoi individuarli prima con la funzione Instr(stringa," ")(individua la posizione dello spazio nella stringa)(le cose si complicano se hai (DELLA VALLE GIUSEPPE: due spazi!!)
Codice: Seleziona tutto
SUB trova(oEv)
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object
dim oModel as object
dim oForm as object
dim ctlInventario as object
dim ctlTipologia as object
dim ctlAutore as object
dim tipo as string
dim autore as string
Connection=ConnettiDB("biblio_I")
Statement = Connection.createStatement()
oModel = oEv.Source.Model
oForm=oModel.Parent
ctlTipologia =oForm.GetByName("lista_tipo")
ctlAutore = oForm.GetByName("lista_autori")
tipo =ctlTipologia.text
autore= ctlAutore.text
autore = Replace(autore, "'", "''")
oForm.Filter = " (""vistamedia"".""tipologia"") LIKE '%" & tipo & "%' AND (""vistamedia"".""autore"") LIKE '%" & autore & "%' "
oForm.reload()
end sub
'esempio sub/function per dividere nome e cognome
sub dividi()
dim str as string
dim pos as integer
str= "guido rossi"
pos= Instr(str," ")
msgbox pos
msgbox MID(str,1,pos)
msgbox MID(str,pos+1,len(str))
end sub
open office 3.2.1
window 7
window 7
Re: inserire un campo di ricerca in un formulario
giannidalmi grazie ma non so adattarla alla mia ricerca, mi spiego meglio, io devo ricercare solo Cognome e Nome in un database chiamato barcollo_office dove all'interno c'è la tabella LibroSoci dove va effettuata la ricerca..
Scusa la mia ignoranza ma potresti adattarmelo con questi parametri???
E soprattutto come associo il pulsante Trova con questa macro???
Sono molto ignorante in materia:)
Grazie in anticipo.
Scusa la mia ignoranza ma potresti adattarmelo con questi parametri???
E soprattutto come associo il pulsante Trova con questa macro???
Sono molto ignorante in materia:)
Grazie in anticipo.
OpenOffice.org 3.3.0 su windows 7 e windows XP
-
giannidalmi
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: inserire un campo di ricerca in un formulario
provo a spiegarmi meglio..
credo tu abbia un form collegato alla tabella LIBROSOCI che visualizza tutti i dati della tabella per ogni socio
in questo form devi inserire una textbox in cui inserirai il 'nome (spazio) cognome' del socio che cerchi
Il bottone 'trova' nel tuo caso non serve
collega la macro al textbox, dovrebbe funzionare su 'evento>modificato'
ho adattato la sub a quello che mi sembra il tuo caso , non l'ho provata ma potrebbe funzionare
se vuoi una ricerca più precisa usa '=' al post di 'LIKE' (se scrivi "ROSSI" LIKE trova "ROSSI" e "ROSSINI" = solo "ROSSI")
prova e fammi sapere
ciao
credo tu abbia un form collegato alla tabella LIBROSOCI che visualizza tutti i dati della tabella per ogni socio
in questo form devi inserire una textbox in cui inserirai il 'nome (spazio) cognome' del socio che cerchi
Il bottone 'trova' nel tuo caso non serve
collega la macro al textbox, dovrebbe funzionare su 'evento>modificato'
Codice: Seleziona tutto
SUB trova(oEv)
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object
dim oModel as object
dim oForm as object
dim ctl_cognome_nome as object
dim sCognome_nome as string
dim str as string
dim pos as integer
Connection=ConnettiDB("tuo_db")
Statement = Connection.createStatement()
oModel = oEv.Source.Model
oForm=oModel.Parent
ctl_cognome_nome =oForm.GetByName("nome_tuo_controllo_texbox"")
sCognome_nome =ctl_cognome_nome.text
pos= Instr(sCognome_nome ," ")
sCognome= MID(str,1,pos)
sNome=MID(str,pos+1,len(str))
'msgbox pos
'msgbox MID(str,1,pos)
' msgbox MID(str,pos+1,len(str))
oForm.Filter = " (""LIBROSOCI"".""cognome"") LIKE '%" & sCognme & "%' AND (""LIBROSOCI"".""nome"") LIKE '%" & sNome & "%' "
oForm.reload()
end sub
se vuoi una ricerca più precisa usa '=' al post di 'LIKE' (se scrivi "ROSSI" LIKE trova "ROSSI" e "ROSSINI" = solo "ROSSI")
prova e fammi sapere
ciao
Ultima modifica di giannidalmi il lunedì 21 marzo 2011, 9:26, modificato 1 volta in totale.
open office 3.2.1
window 7
window 7
-
giannidalmi
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: inserire un campo di ricerca in un formulario
ho dimenticato che l'struzione connection=connettiDB(nomedb) è collegata alla funzione
son di fretta devo andare la lavoro
ciao
Codice: Seleziona tutto
Function connettiDB(nomedb)
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim InteractionHandler as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName(nomedb)
If Not DataSource.IsPasswordRequired Then
Connection = DataSource.GetConnection("","")
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
connettiDB=Connection
End function
ciao
open office 3.2.1
window 7
window 7
Re: inserire un campo di ricerca in un formulario
Ti ringrazio lo stesso ma continuo a non capire XD..
Se per te va bene posso attendere quando sarai un po più libero..
l'ho modificata cosi:
Nel codice ho evidenziato dove mi da errore
Se per te va bene posso attendere quando sarai un po più libero..
l'ho modificata cosi:
Codice: Seleziona tutto
SUB trova(oEv)
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object
dim oModel as object
dim oForm as object
dim ctl_cognome_nome as object
dim sCognome_nome as string
dim str as string
dim pos as integer
Connection=ConnettiDB("barcollo_office")
Statement = Connection.createStatement()
oModel = oEv.Source.Model
oForm=oModel.Parent
ctl_cognome_nome =oForm.GetByName("Campo di testo 2")
sCognome_nome =ctl_cognome_nome.text
pos= Instr(sCognome_nome ," ")
sCognome= MID(str,1,pos)
sNome=MID(str,pos+1,len(str))
'msgbox pos
'msgbox MID(str,1,pos)
' msgbox MID(str,pos+1,len(str))
oForm.Filter = " (""LIBROSOCI"".""cognome"") LIKE '%" & sCognme & "%' AND (""LIBROSOCI"".""nome"") LIKE '%" & sNome & "%' "
oForm.reload()
end sub
Function connettiDB(barcollo_office)
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim InteractionHandler as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName(barcollo_office) <===== MI DA ERRORE QUI
If Not DataSource.IsPasswordRequired Then
Connection = DataSource.GetConnection("","")
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
connettiDB=Connection
End functionNel codice ho evidenziato dove mi da errore
OpenOffice.org 3.3.0 su windows 7 e windows XP
-
giannidalmi
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: inserire un campo di ricerca in un formulario
il problema è legato alla connesione al database "barcollo_office" e non so bene che dirti tranne che non era il caso di modificare il nome della variabile 'nomedb'
per il resto devi cambiare il nome della textbox :
non deve contenere spazi= ("Campo di testo 2") NO; ("campo_di_testo_2") Sì
poi prova a togliere il commento (') alle tre istruzioni -msgbox
e mettere il commento(') l'istruzione -Connection=ConnettiDB("barcollo_office")
forse non avrai il collegamento al database e quindi probabilmente non ti farà la ricerca ma potrai vedere l'esito dellla divisione del cognome dal nome
poi potremo discutere del colegamento al db anche se ho l'impresione che il colegamento al db venga fatto diversamente e quindi l'eliminazione dell'istruzione (Connection=ConnettiDB("barcollo_office") potrebbe anche non creare nessun problema
ciao
P.S. se ancora non funziona, se vuoi puoi allegarmi il file di programma
P.S. che vuol dire XD?
per il resto devi cambiare il nome della textbox :
non deve contenere spazi= ("Campo di testo 2") NO; ("campo_di_testo_2") Sì
poi prova a togliere il commento (') alle tre istruzioni -msgbox
e mettere il commento(') l'istruzione -Connection=ConnettiDB("barcollo_office")
forse non avrai il collegamento al database e quindi probabilmente non ti farà la ricerca ma potrai vedere l'esito dellla divisione del cognome dal nome
poi potremo discutere del colegamento al db anche se ho l'impresione che il colegamento al db venga fatto diversamente e quindi l'eliminazione dell'istruzione (Connection=ConnettiDB("barcollo_office") potrebbe anche non creare nessun problema
ciao
P.S. se ancora non funziona, se vuoi puoi allegarmi il file di programma
P.S. che vuol dire XD?
open office 3.2.1
window 7
window 7
Re: inserire un campo di ricerca in un formulario
fatto cosi:
Non va ancora
Si è verificata un'eccezione
TYPE: com.sun.star.sdb.DatabaseContext
Che si fa adesso??? XD
Codice: Seleziona tutto
SUB trova(oEv)
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object
dim oModel as object
dim oForm as object
dim ctl_cognome_nome as object
dim sCognome_nome as string
dim str as string
dim pos as integer
Connection=ConnettiDB("barcollo_office")
Statement = Connection.createStatement()
oModel = oEv.Source.Model
oForm=oModel.Parent
ctl_cognome_nome =oForm.GetByName("ricerca")
sCognome_nome =ctl_cognome_nome.text
pos= Instr(sCognome_nome ," ")
sCognome= MID(str,1,pos)
sNome=MID(str,pos+1,len(str))
msgbox pos
msgbox MID(str,1,pos)
msgbox MID(str,pos+1,len(str))
oForm.Filter = " (""librosoci"".""cognome"") LIKE '%" & sCognme & "%' AND (""librosoci"".""nome"") LIKE '%" & sNome & "%' "
oForm.reload()
end sub
Function connettiDB(nomedb)
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim InteractionHandler as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName(nomedb)
If Not DataSource.IsPasswordRequired Then
Connection = DataSource.GetConnection("","")
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
connettiDB=Connection
End functionSi è verificata un'eccezione
TYPE: com.sun.star.sdb.DatabaseContext
Che si fa adesso??? XD
OpenOffice.org 3.3.0 su windows 7 e windows XP
-
giannidalmi
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: inserire un campo di ricerca in un formulario
ho eliminato (commentato) (') le istruzionituri ha scritto:fatto cosi:Non va ancoraCodice: Seleziona tutto
SUB trova(oEv) Dim Connection As Object Dim Statement As Object Dim ResultSet As Object dim oModel as object dim oForm as object dim ctl_cognome_nome as object dim sCognome_nome as string dim str as string dim pos as integer 'Connection=ConnettiDB("barcollo_office") 'Statement = Connection.createStatement() oModel = oEv.Source.Model oForm=oModel.Parent ctl_cognome_nome =oForm.GetByName("ricerca") sCognome_nome =ctl_cognome_nome.text pos= Instr(sCognome_nome ," ") sCognome= MID(str,1,pos) sNome=MID(str,pos+1,len(str)) msgbox pos msgbox MID(str,1,pos) msgbox MID(str,pos+1,len(str)) oForm.Filter = " (""librosoci"".""cognome"") LIKE '%" & sCognme & "%' AND (""librosoci"".""nome"") LIKE '%" & sNome & "%' " oForm.reload() end sub Function connettiDB(nomedb) Dim DatabaseContext As Object Dim DataSource As Object Dim Connection As Object Dim InteractionHandler as Object DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext") DataSource = DatabaseContext.getByName(nomedb) If Not DataSource.IsPasswordRequired Then Connection = DataSource.GetConnection("","") Else InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler") Connection = DataSource.ConnectWithCompletion(InteractionHandler) End If connettiDB=Connection End function
Si è verificata un'eccezione
TYPE: com.sun.star.sdb.DatabaseContext
Che si fa adesso??? XD
'Connection=ConnettiDB("barcollo_office")
'Statement = Connection.createStatement()
riprova
buona fortuna
open office 3.2.1
window 7
window 7
Re: inserire un campo di ricerca in un formulario
mi da errore
Mi scrive numeri...
in base al cognome e nome che inserisco mi da errore con numeri diversi che vanno da 0 a 9
Mi scrive numeri...
in base al cognome e nome che inserisco mi da errore con numeri diversi che vanno da 0 a 9
OpenOffice.org 3.3.0 su windows 7 e windows XP
-
giannidalmi
- Messaggi: 62
- Iscritto il: lunedì 21 febbraio 2011, 7:00
Re: inserire un campo di ricerca in un formulario
ciao
avevo fatto qualche pasticcio... nel listato
comunque ora ho verificato che le istruzioni
'Connection=ConnettiDB("barcollo_office")
'Statement = Connection.createStatement()
non servono per cui le ho cancellate ed ho cancellato la funzione 'connettidb'
... poi ho correto il nome delle variabili nelle istruzioni msgbox ..
a mio parere ora dovrebbe proprio funzionare
altrimenti non ti resta che inviarmi il file.... o chiedere a qualcun altro...
purtroppo io non posso fare le prove per cui vado un po' a senso...
ciao
buona fortuna
avevo fatto qualche pasticcio... nel listato
comunque ora ho verificato che le istruzioni
'Connection=ConnettiDB("barcollo_office")
'Statement = Connection.createStatement()
non servono per cui le ho cancellate ed ho cancellato la funzione 'connettidb'
... poi ho correto il nome delle variabili nelle istruzioni msgbox ..
a mio parere ora dovrebbe proprio funzionare
Codice: Seleziona tutto
SUB trova(oEv)
dim oModel as object
dim oForm as object
dim ctl_cognome_nome as object
dim sCognome_nome as string
dim sCognome as string
dim sNome as sring
dim pos as integer
oModel = oEv.Source.Model
oForm=oModel.Parent
ctl_cognome_nome =oForm.GetByName("ricerca")
sCognome_nome =ctl_cognome_nome.text
pos= Instr(sCognome_nome ," ")
sCognome= MID(str,1,pos)
sNome=MID(str,pos+1,len(str))
msgbox pos
msgbox sCognome
msgbox sNome
oForm.Filter = " (""librosoci"".""cognome"") LIKE '%" & sCognme & "%' AND (""librosoci"".""nome"") LIKE '%" & sNome & "%' "
oForm.reload()
end sub
altrimenti non ti resta che inviarmi il file.... o chiedere a qualcun altro...
purtroppo io non posso fare le prove per cui vado un po' a senso...
ciao
buona fortuna
open office 3.2.1
window 7
window 7