Sviluppare funzionalita su Microsoft Office con VBA Ricerca a doppia selezione optionbutton

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 94 totali)
  • Autore
    Articoli
  • #42274 Score: 0 | Risposta

    pixel
    Partecipante

      Buonasera a tutti,
      sono qui per chiedervi un aiuto. Il problema è questo:
      quando effettuo una ricerca cliente, inserisco il cognome nella textbox e selezione optionbutton "Cognome" e
      la ricerca viene eseguita correttamente.
      Invece io vorrei nella ricerca, in textbox, poter scrivere il cognome e nome selezionando le due
      optionbutton "cognome" + "nome".
      In pratica vorrei fare una ricerca con selezione optionbutton doppia.
      Ho girata in rete ma niente ho trovato che facesse al mio caso e da solo proprio non ci riesco.
      Allego il file
      Grazie

      #42277 Score: 0 | Risposta

      alfrimpa
      Partecipante
        33 pts

        Ma perché non usi per le ricerche un campo univoco tipo il codice fiscale?

        #42284 Score: 0 | Risposta

        pixel
        Partecipante

          Buongiorno Alfrimpa,  grazie per aver risposto. Infatti questa cosa lo già pensata,. se  non si dovesse riuscire, mi vedrò costretto nel scrivere il cognome e nome in un unica textbox.  Il motivo per cui mi sono rivolto a voi  esperti e proprio questo, di aiutarmi a trovare una possibile soluzione, sempre che si possa fare. Grazie 

          #42286 Score: 0 | Risposta

          pixel
          Partecipante

            P.S. Come si potrà notare, ho diviso le optionbutton in due gruppi, Gruppo1 e Gruppo2.  Questo fa si che possa scegliere di abilitarne 2 per volta. Ecco perchè penso che si possa fare. 

            #42287 Score: 0 | Risposta

            alfrimpa
            Partecipante
              33 pts

              Scusami Pixel ma non capisco la logica.

              Tu hai 8 optionbutton divisi in due gruppi da 4.

              Hai la necessità di fare ricerche per tutte le combinazioni possibili anche ad esempio Data arrivo <--> Telefono o Num prog <--> Data Partenza?

              Una volta che hai selezionato due optionbutton cosa fai? Cosa deve succedere?

              #42288 Score: 0 | Risposta

              pixel
              Partecipante

                Ciao Alfrimpa,  adesso quando effettuo una ricerca cliente inserendo nella textbox solo il cognome ed attivo opt cognome, come potrai notare dal file allegato,  lui mi ricerca il cognome da me scritto in textbox es. Rossi. Cosa vorrei ottenere ?

                Bene, vorrei poter inserire nella textbox non solo il cognome ma anche il nome. Ad esempio: Rossi Mario, attivare  opt cognome e opt nome, ed in questo caso mi deve dare come risultato il cliente  Rossi Mario. 

                #42289 Score: 0 | Risposta

                alfrimpa
                Partecipante
                  33 pts

                  Ma se oltre a Rossi Mario ci fosse Rossi Michele Michele dove deve essere visualizzato?

                  Potresti, qualora selezioni gli optionbutton nome e cognome aprire una userform con una listbox che contenga Rossi Mario e Rossi Michele e facendo doppio clic su uno di questi ne visualizzi i dati completi sulla userform principale.

                  Ma nella textbox Ricerca inserisci il cognome il nome o l'uno o l'altro?

                  Se è così mi sembra una cosa assurda.

                  #42291 Score: 0 | Risposta

                  pixel
                  Partecipante

                    -Alfrimpa

                    Non riesco a spiegarmi bene.

                    Lui mi deve cercare solo ciò che viene scritto nella textbox. In questo caso deve cercare solo il cliente Rossi Mario e non Rossi Michele, ecc....

                    Quindi secondo te se scrivo  Rossi Mario ed attivo due opt (cognome + nome) lui non potrà mai restituirmi le informazioni al  primo Rossi Mario trovato sul foglio Dati? 

                     

                    #42292 Score: 0 | Risposta

                    alfrimpa
                    Partecipante
                      33 pts

                      A prescindere dagli optionbutton se scrivi Rossi Mario sul foglio in quale colonna deve cercare?

                      In questo caso non troverà mai Rossi Mario perchè non hai una colonna che abbia nome e cognome.

                      Devi concatenare in un'altra colonna nome e cognome e nel codice abbinato al pulsante Inizia ricerca verificare che gli optionbutton nome e cognome siano entrambi selezionati ed in questo caso effettuare la ricerca sulla colonna che contiene nomi e cognomi concatenati.

                      Ovviamente se volessi estendere questo meccanismo a tutti gli optionbutton sarebbe un macello non so se te ne rendi conto.

                      #42293 Score: 0 | Risposta

                      pixel
                      Partecipante

                        Il problema è proprio questo. Se vedi il file allegato  nella colonna "I" cè il cognome e nella colonna J ce il nome. Come detto prima si potrebbe scrivere in un unica colonna cognome e nome ad esempionella"I". ok.

                        Ma se voglio fare la stessa ricerca con la selezione di due opt scrivendo nella textbox di ricerca cognome + nome che sul foglio dati come potrai ben notare, si trovano in due colonne differenti. in questo caso colonna I e colonna J, la ricerca si può fare secondo te?

                        #42294 Score: 0 | Risposta

                        alfrimpa
                        Partecipante
                          33 pts

                          Credo di averti risposto; hai letto il mio post precedente che ho integrato?

                          #42296 Score: 0 | Risposta

                          pixel
                          Partecipante

                            Scusami, hai ragione ho saltato un tuo post. 

                            Io pensavo che nella ricerca si potesse concatenare nella stessa textbox la ricerca di due colonne e due opt.  Quindi credo che non si possa fare.

                            Onestamente non ci avevo pensato alla tua soluzione ad inserire un altra colonna, concatenando cognome e nome.  Insomma, anche se non è in quello che speravo ma comunque può considerarsi una buona soluzione al  quesito.

                            Grazie Alfrimpa per il tempo, competenza e professionalità messo a mia disposizione nel trovare comunque una soluzione, che possa essere utile a tanti altri che come me masticano poco il VBA. 

                            Grazie

                            #42297 Score: 0 | Risposta

                            Fulvio
                            Partecipante

                              Io ho capito quello che vuoi fare, ma alfrimpa ti ha alzato qualche dubbio corretto.

                              1) se fai la ricerca solo per cognome sembra che funzioni, ma tira fuori solo uno dei record che hanno quel cognome, per come l'hai sviluppato tu, perché se tu avessi Vasco Rossi e Valentino Rossi, per come l'hai fatto tu, tira fuori solo uno dei due e non tutti e due

                              2) fare la ricerca concatenata senza avere i campi già concatenati è possibile, ma non facile. Se tu scrivi Rossi Mario non è la stessa cosa di scrivere Mario Rossi, quindi dovresti trovare anche il modo di obbligare chi scrive ad inserire prima il Cognome e poi il Nome

                              3) anche scrivendo il Cognome e Nome devi trovare il modo di splittare la stringa che hai scritto in due parti in modo che la tua funzione cerchi per cognome e se lo trova poi controlla anche il nome, una volta verificato se combaciano allora ti carica i dati, altrimenti passa al prossimo, ma anche qui non è detto che non ci sia il problema di omonimi, ovvero due Rossi Mario nati in due città differenti.

                              altra cosa, mio consiglio personale, sostituisci gli optionbutton con i checkButton.

                              In soldoni quello che devi fare, se vuoi mantenere la tua soluzione e non usare il CF o PIVA è quello di splittare la stringa inserita nel campo "ricerca avanzata" in tante parti, capire quale parte è il cognome e quale il nome e poi iniziare la ricerca usando il cognome, appena il sistema trova una corrispondenza, controllare che il nome corrisponda alla parte del nome.

                              se corrisponde visualizzi i dati che ti servono, se non corrisponde prosegui con la ricerca

                              #42299 Score: 0 | Risposta

                              pixel
                              Partecipante

                                Ciao Fulvio, ti rispondi per step,

                                Infatti, Alfrimpa mi ha messo qualche dubbio.

                                1- la Ricerca funziona egregiamente per come se scrivo il cognome nella textbox attivo la optionbutton " Cognome". Inoltre, chiaramente per com'è impostato il Form ( " Cognome"  è la prima textbox che vado a scrivere) anche la ricerca deve partire in primis dal cognome. Poi se provi il file allegato, vedrai che se ci sono 2 clienti "Rossi" lui ti trova il primo e se poi vai avanti ti mostra anche il 2°,3° e cosi via.

                                2- La ricerca per come interessa a me "senza obbligare" deve essere fatta inserendo prima il cognome e poi il nome.

                                3 - Ho pochissima conoscenza del VBA ed è per questo che ho chiesto il vostro aiuto. Però con il programma così com'è, se ci sono due Rossi Mario, il programma mi da il Primo Rossi Mario trovato e se pigio su avanti mi da il 2 e cosi via. 

                                Tua cit. altra cosa, mio consiglio personale, sostituisci gli optionbutton con i checkButton.

                                Mi dici cosa cambierebbe?

                                Per ultima parte <in soldoni>  credo di non aver capito e al contempo non sono in grado di farlo, altrimenti non starei a chiedervi aiuto.

                                Grazie per il tuo contributo.

                                #42300 Score: 0 | Risposta

                                alfrimpa
                                Partecipante
                                  33 pts

                                  pixel ha scritto:

                                  Ho pochissima conoscenza del VBA

                                  Allora come hai fatto a scrivere tutto quel po' po' di codice che è nel file?

                                  Le ricerche vanno fatte su dati precisi  e non con l'approccio che hai intenzione di usare tu.

                                  Poi è fondamentale la presenza di un campo (chiave) che identifichi univocamente ciascun record

                                  #42301 Score: 0 | Risposta

                                  pixel
                                  Partecipante

                                    Quel codice non è mio. Come potrei se nel post precedente ho scritto che ho poca conoscenza del VBA? Pensavo si fosse capito, evidentemente no, sono stato poco chiaro e mi scuso. Comunque il codice non è farina del mio sacco, ma lo trovato in rete adattandolo alle mie esigenze. Adesso senza allontanarsi dal problema, se non cè altro rimedio mi vedrò costretto ad inserire nella textbox "Cognome" anche il nome, così quando effettuerò una ricerca, inserirò nella textbox di ricerca il cognome e nome abilitando la optionbutton denominata Ragione sociale anzicchè Cognome.

                                    Perdindirindina, non pensavo fosse così complicata la mia richiesta di aiuto. Che dirvi se non Grazie. 

                                     

                                     

                                    #42302 Score: 0 | Risposta

                                    Luca73
                                    Partecipante
                                      58 pts

                                      Il Maggior Problema sarebbe dividere il nome ed il cognome nella ricerca.

                                      Vedo che poi la ricerca viene fatta con un ciclo For-NExt Pertanto inserire una doppia scelta non è una cosa impossibile.

                                      Giusto una domanda: Tutti i record hanno un cognome unico senza spazi?

                                      Ad esempio hai un Tronchetti Provera Marco o Jhon Fitzgerald Kennedy?

                                      E per il Nome hai nomi doppi Luca Maria, Gian Mario? con spazio intendo! 

                                      Se tutti i cognomi e i nomi non hanno spazi intermedi allora la ricerca la vedo una cosa possibile.

                                      Altrimenti Vedo due soluzioni:

                                      O usate due text Box

                                      Oppure accettare di scrivere il nome ed il cognome con inframmezzato un carattere speciale (ad esempio Rossi#Giuseppe) in modo da riuscire poi a spezzare la stringa in due parti una per il nome e una per il cognome.

                                      Rimane il fatto che dovrai scrivere sempre prima il cognome e poi il nome.

                                       Altra limitazione sarà il fatto che se hai due persone omonime te ne selezionerà una sola.

                                       

                                      #42303 Score: 0 | Risposta

                                      pixel
                                      Partecipante

                                        Ciao Luca,  

                                        i cognomi possono avere anche degli spazi. Infatti con il file allegato se registri un cliente cove il cognome è ad esempio De Bartolomeo, se vai nella ricerca e scrivi De Bartolomeo e selezioni optionbutton "cognome" vedrai che ti  trova il cliente anche se ha uno oppure più spazi. A 

                                        Se provi il file in allegato vedrai che se ci dovessero essere  di di uno di De Bartolomeo, con il pulsante "Trova successivo", ti troverà il De Bartolomeo successivo.

                                        #42304 Score: 0 | Risposta

                                        Luca73
                                        Partecipante
                                          58 pts

                                          OK Leggi il resto del mio post e fammi sapere

                                          #42305 Score: 0 | Risposta

                                          vecchio frac
                                          Senior Moderator
                                            272 pts

                                            Luca73 ha scritto:

                                            sarebbe dividere il nome ed il cognome nella ricerca.

                                            L'avrei detto io fra poco con Split allo spazio oppure, vedi sotto,

                                            Luca73 ha scritto:

                                            accettare di scrivere il nome ed il cognome con inframmezzato un carattere speciale

                                            Su molti sistemi vecchi (molto vecchi, diciamo pure su mini Unix ai miei tempi dell'Università) si usava la virgola in fase di inserimento del dato, così questo fungeva da carattere speciale per separare le due informazioni. In questo modo puoi esser sicuro di poter cercare per cognome e per nome combinando i due dati come vuoi e superando l'obiezione che dovrai scrivere sempre prima il cognome e il nome. Perchè se una ricerca ha esito negativo puoi avviare la seconda ricerca semplicemente invertendo i valori. Non molto ortodosso ma può funzionare.

                                            #42307 Score: 0 | Risposta

                                            pixel
                                            Partecipante

                                              Luca,

                                              sarebbe più fattibile inserire un altra textbox e non scrivere il cognome e nome con un carattere speciale.

                                              Solo che concatenare le due textbox dove nella prima metto il cognome e nella seconda il nome, non saprei come farlo. 

                                              A questo punto forse la soluzione migliore sarebbe scrivere nella textbox "Cognome" anche il nome. in modo che quando si effettua una ricerca ad esempio De Bartolomeo Luigi,  e selezione optionbutton denominato ragione sociale e non più cognome, mi andrà a popolare il resto delle txtbox.  Però non voglio scartare la tua idea con due textbox di ricerca.

                                              #42310 Score: 0 | Risposta

                                              Luca73
                                              Partecipante
                                                58 pts

                                                Il Problema di Usare Split nasce con i nomi e cognomi con lo spazio, Ecco Perche la mia richiesta di cui sopra.

                                                 

                                                #42312 Score: 0 | Risposta

                                                pixel
                                                Partecipante

                                                  Ora sto provando con un altra textbox ma non sono ancora riuscito

                                                  #42330 Score: 0 | Risposta

                                                  Fulvio
                                                  Partecipante

                                                    il mio consiglio del check button rispetto al optionButton nasce dal fatto che l'OptionButton nasce per l'uso della scelta univoca e non la scelta multipla e come puoi vedere dal tuo form se selezioni un option non puoi più deselezionarlo se non premendo il pulsante di pulizia, che ti cancella anche tutti gli altri.

                                                    comunque il succo Option per selezione singola Check per selezione multipla

                                                    #42335 Score: 0 | Risposta

                                                    pixel
                                                    Partecipante

                                                      Grazie Fulvio per la tua spiegazione.

                                                      Devo ringraziare tutti voi per il vostro contributo nel cercare e ricercare una possibile soluzione al mio quesito. Penso di essere riuscito. Vi spiego come ho fatto. Se poi qualcun altro ha altre idee e  vorrebbe  condividerle, ben venga.

                                                      Ora finalmente posso ricercare i clienti in vari modi ad es.: "Rossi Mario" oppure "De rossi Mario" ancora " DE rossi Mario Michele "  e tutto questo selezionando una sola Opt  denominata "Nome & Cognome" oppure ho creato un altra Opt denominato "Cognome & Data di Nascita" in modo tale da ricercare ad es.: De Rossi 15-05-1956 .       Lo sto testando e tutto sembra che il tutto funzioni bene.

                                                      La mia soluzione l'ho trovata grazie al suggerimento di  Alfrimpa, dove mi invitava  nel creare una colonna di appoggio concatenando il Cognome e nome. Pensavo di non esserne capace, invece sono riuscito a creare una colonna di appoggio per entrambe le soluzioni.

                                                      Allego parte di codice che ho inserito.

                                                      'Da aggiungere al Tasto Inserisci. Gli diciamo di scrivere concatenado il Cognome e nome, oppure cognome e data di nascita, separando con uno spazio.
                                                      
                                                      .Range("CV" & lUltRiga).Value = Me.txtCognome.Text & " " + Me.txtNome.Text
                                                          .Range("CW" & lUltRiga).Value = Me.txtCognome.Text & " " + Me.txtData_di_Nascita.Text
                                                      
                                                      
                                                      Stessa cosa al Tasto Modificame.
                                                      c.Offset(0, 99).Value = Me.txtCognome.Text + " " + Me.txtNome.Text
                                                           c.Offset(0, 100).Value = Me.txtCognome.Text + " " + Me.txtData_di_Nascita.Text
                                                      
                                                      ? Unica cosa non so se è meglio mettere tra parentesi, oppure va bene anche così. 

                                                      Lo sto testando e tutto sembra che il tutto funzioni bene.

                                                      Voglio ringraziare tutti voi per il vostro Contributo iniziando da Alfrimpa, Fulvio e Luca 73.

                                                      Grazie di cuore ragazzi.

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 94 totali)
                                                    Rispondi a: Ricerca a doppia selezione optionbutton
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: