Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: vb e input box

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    65

    vb e input box

    Ciao a tutti

    Ho creato un controllo data collegato ad un database access 2000.
    Ho definito un command button “Trova” per fare un ricerca all’interno
    Dei text box , ho preparato un input box per digitare la stringa di
    Ricerca.
    Quello che vorrei capire è cosa devo scrivere per far fare una ricerca
    In tutti i text box del form , senza limitare la ricerca solo al text1.
    Dovrei anche riuscire a fare un ricerca che non sia perfettamente “uguale”
    al testo contenuto nell’input box.
    Per esempio se devo cercare la parola “pippo” vorrei fare In modo che
    scrivendo solo “pip” nell’input box mi faccia una ricerca di tutte le parole
    che contengono parte della parola “pip” in modo da trovare “pippo” e
    che questo tipo di ricercavenga effettuata in tutti i text box contenuti nel
    form tex1,2,3 ecc..

    Mi potreste aiutare ?

    Grazie 1000
    satgio

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    potresti utilizzare matrici di controlli.
    Es Text(0)~Text(9) "10 caselle di testo"

    Questa è la ricerca:



    strRicerca = InputBox("Testo da cercare")

    e poi agire sulla matrice

    for i = 0 to Text1.Count -1
    If InStr(Text1(i),strRicerca)>0 then
    msgbox "stringa trovata su text1(" & i & ")"
    else
    msgbox "stringa non trovatanext i
    end if
    next i

    Non l'ho provato. Vedi tu.
    Ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    65
    non c'è un'altro modo ?

    per esempio :
    sto facendo il corso di visual basic di html.it e spiegano
    come fare delle ricerche all'interno del textbox nel
    seguente modo :

    Private Sub Command1_Click()
    'Ricerca un nome all'interno dell'agenda.
    Dim NomeDaCercare As String
    NomeDaCercare = InputBox$("Immettere il nome da ricercare:", "Ricerca nell'agenda")
    If NomeDaCercare <> "" Then
    'Esegue la ricerca solo se è stato immesso un nome.
    Data1.Recordset.Index = "Nome"
    Data1.Recordset.Seek "=", NomeDaCercare
    If Data1.Recordset.NoMatch Then
    Data1.Recordset.MoveFirst
    Data1.Refresh
    'Il nome cercato non è stato trovato.
    MsgBox "Nome non trovato.", vbInformation, Me.Caption
    End If
    End If
    End Sub

    http://programmazione.html.it/visual...albasic_20.htm

    Il fatto è che ho appena iniziato a studiare visual basic e
    le matrici di controlli non le ho ancora usate.

    Pensavo fosse possibile utilizzare qualcosa come l'esempio
    dato da loro , ma modificando il Data1.Recordset.Seek "=" per
    sostituire "=" con altro in modo che facci la ricerca in
    maniera approssimativa e poi modificando il resto per far la
    ricerca anche nel text2 e nel text 3.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    ah.. non avevo capito che dovevi eseguire ricerche su database.

    Dunque quando lavori sui database, è poco performante fare le ricerche sui controlli, le ricerche vanno fatte sul recordset, e possibilmente con l'ausilio del linguaggio SQL.
    Un esempio di query SQL può essere questo:

    strValore = InputBox("Immettere il nome da ricercare:", "Ricerca nell'agenda")

    strSQL = "SELECT * FROM Tabella WHERE Campo ='" & strValore & "'"

    Puoi attribuire ad un recordset come sorgente, la stringa SQL,
    e associare al recordset il tuo controllo.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    65
    Io dovrei farlo con un database access 2000, come potrei dirgli di controllare nei 3 textbox ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    Ma scusa, tu utilizzi un normale controllo Data?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    65
    si utilizzo un normale control data

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    Allora la sorgente del recordset di un controllo data la puoi impostare tu. E questa sorgente può essere una query fatta con SQL, o con Access stesso. Ma quindi tu usi DAO, che versione?

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    65
    janx, io non so se uso DAO , il fatto è che ho fatto gli escercizi di vb del sito html.it e ti guidano a creare un'agenda elettronica, allora ho provato a fare un piccolo database per gestire i cd basandomi sullo stesso cdriterio di quella dannata agenda :P. Ora mi funziona quasi tutto + o - apparte il fatto che nell'esempio da loro fatto l'input box "trova" faceva una ricerca solo nel texbox "nome" in modo da restituire il nome del contatto cercato nell'agenda. Ora io vorrei fare in modo che il mio db cds faccia una ricerca in 3 textboxs, perchè ho 3 campi :

    Cd n° (atuo number) indexed
    Titolo (text index) indexed
    Contenuto (text index) indexed

    se mi copio l'esempio dell'agenda ho del codice strutturato in questo modo :

    Private Sub Command1_Click()
    'Ricerca nel cd db
    Dim CdDaCercare As String
    CdDaCercare = InputBox$("Immettere il nome da ricercare:", "Ricerca nel Cd Database")
    If CdDaCercare <> "" Then
    'Esegue la ricerca solo se è stato immesso un nome.
    Data1.Recordset.Index = "Titolo"
    Data1.Recordset.Seek "=", CdDaCercare
    If Data1.Recordset.NoMatch Then
    Data1.Recordset.MoveFirst
    Data1.Refresh
    'Il Cd cercato non è stato trovato.
    MsgBox "Cd non trovato.", vbInformation, Me.Caption
    End If
    End If
    End Sub

    Il problema è il seguente:

    Facendo in questo modo l'input box che parte con il bottone "trova"
    mi fa le ricerche solo nle textbox2 il campo "Titolo" e ti restituisce il risultato positivo della ricerca solo se viene immesso un nome identico a quello contenuto nel database. (per cercare "pippo" devi scrivere "pippo" altriemnti non lo trova)

    Io vorrei che la ricerca sia estesa su i 3 textbox e che vengano trovati anche i nomi simili a quelli salvati nel database. (se scrivo "pip" mi dovrebbe mandare alla scheda del Cd "pippo")

    Spero di essere stato chiaro, e ti ringrazio per la pazienza dimostrata.

    (imparerò mai a programmare in vb?)

    Un Saluto
    Satgio

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53
    Allora. Stai usando DAO.
    Tu vuoi fare una ricerca su 3 campi, in modo che se io nell'inputbox ci scrivo "cas", mi venga fatta una ricerca sui 3 campi, e quando uno di questi contiene nel suo valore "cas" mi dia esito positivo giusto?

    Quindi riassumento tu stai effettuando una ricerca indicizzata, utilizzando il metodo Seek. Il problema è che tu, utilizzando l'operatore "=", stai definendo una ricerca "esatta", cioè cerchi ESATTAMENTE ciò che scrivi, per effettuare invece una ricerca parziale, cioè se scrivi "cas", ti rova "casa", "cassa", "incas" ec.., devi utilizzare gli operatori "<", ">", ">=" e "<=".
    [es.(.Seek ">=")]
    Ok?

    Per la ricerca in tutti i campi, penso che una soluzione sia quella di fare una ricerca sequenziale, nel senso che fai prima la ricerca sul campo CD N°, se questa ha esito negativo, inizi la ricerca sul secondo campo (Titolo.Seek...) e così via.

    Purtroppo io DAO nn lo uso, l'ho solo studiacchiato tempo fa
    Quindi nn so nemmeno se quello che ti sto consigliando sia del tutto logico.

    Ti posso solo dire che con SQL e ADO, risolveresti il tutto in 2 linee di codice, oltretutto molto + comprensibile.

    Prova e fammi sapere.

    Ciao. Janx.

    P.S. se ti piace davvero.... impari..impari...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.