Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [VB.NET] Ricerca automatica modificando contenuto di una TextBox

    Ciao a tutti avrei questo problema: sto cercando tramite un textbox di usare una funzione cerca, quindi imposto il focus sul txtCerca e poi svolgo la funzione cerca, però vorrei che mentre scrivo nel txtcerca avvenga già la ricerca. Non uso un command perchè vi sono più di 100 colonne, vi lascio il codice, non capisco dove sbaglio:

    #codice

    txtCerca.Focus
    Dim q As New SqlClient.SqlDataAdapter("Select * from Conai where Cod like '" & txtCerca.Text.Replace("*", "%") & "'", cn)
    If cn.State <> ConnectionState.Open Then
    cn.Open()
    End If
    Dim f As New DataTable
    q.Fill(f)
    dgvi.DataSource = f

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Il titolo della discussione è totalmente inadatto: mancava il linguaggio e anche una descrizione sensata del problema.
    Questa volta li ho aggiunti io, ma in futuro dovrai pensarci tu.

    Leggi anche il Regolamento per prendere visione di queste e altre norme.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ciao, quel codice l'hai messo dove? nell'evento TextChanged? butta nel caso un'occhiata qui per avere qualche ispirazione https://stackoverflow.com/questions/...vent-in-vb-net

  4. #4
    Ciao optime graze per la risposta, mi spiego meglio:
    Tramite una label viene modificata il testo a seconda di dove ti posizione con il cursore nella tabella, ad esempio se ti posizione nella colonna codice la label si trasforma in "cerca codice", stessa cosa per le altre 99 colonne. ho impostato nel from_load il txt.focus, il txtchanges non conosco proprio, scusate sono alle prime armi. Poi nel private sub del txt box il codice riportato prima che in teoria quando cerco un campo mi visualizza tutto, solo che io verrei visualizza anche se cerco il campo "Rosso" e scrivo solo "Ros", il like l'ho messo ma non capisco perchè nel avviare il programma non esegue la ricerca corretta

  5. #5
    andiamo per step, che mettere le mani sulla tastiera senza avere il disegno in testa (o meglio, sulla carta!) fa solo danni

    - il codice di ricerca deve scattare quando digiti qualcosa
    - qual è l'evento che "sente" quello che scrivi? il TextChanged
    - allora (anche seguendo le indicazioni nel link che ti ho postato) metti il codice di ricerca lì
    - meglio ancora, per cominciare a fare qualche esperimento, ti piazzi una label di controllo da qualche parte e controlli che l'evento TextChanged funzioni bene, prendendo il contenuto via via digitato nella text box e copiandolo nella label

    fa' questi tentativi e quando funzionano vediamo la ricerca

    se poi posti uno screenshot della tua form (con i nomi dei controlli) aiuterebbe nell'aiuto

  6. #6
    Grazie optime scusami se dirò qualche stupidata, ti posto il codice, spero si capisca.
    Imposto combio nome della label quando l'utente si mette in una determinata cella della colonna;
    Imposto la funzione like;

    codice:
    Private Sub lbl1_Resize(sender As Object, e As System.EventArgs) Handles lbl1.Resize
        txtCerca.Left = lbl1.Left + lbl1.Width + 10
    End Sub
    
    
    Private Sub datagridviewconai_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewconai.CellEnter
    
    
        lbl1.Text = "Cerca " + DataGridViewconai.Columns(e.ColumnIndex).HeaderText
    
    
    End Sub
    
    
    Public Sub Cerca(ByVal SearchString As String, ByRef datagridviewconai As DataGridView)
       
     If SearchString <> "*" Then
    
    
            Dim sFind As String = SearchString
            Dim Operatore As String = "="
    
    
            If sFind.Contains("*") Then
                Operatore = " Like "
                txtCerca.Text = txtCerca.Text.Replace("*", "%")
    
    
            End If
    
    
    
    
            Dim datOrigine As DataTable = datagridviewconai.DataSource
    
    
            If Not IsNothing(datagridviewconai.SortedColumn) And Operatore.Equals("=") Then
    
    
                'E' ordinata
                If Operatore.Equals("=") Then
                    'Cerco esattamente il valore richiesto
                    Dim R As Integer = datOrigine.DefaultView.Find(SearchString)
                    If R >= 0 Then
                        datagridviewconai.CurrentCell = datagridviewconai.Rows(datOrigine.DefaultView.Find(SearchString)).Cells(datagridviewconai.CurrentCell.ColumnIndex)
    
    
                    Else
                    End If
                End If
            Else
                'Non è ordinata
                Dim fr() As DataRow
    
    
                fr = datOrigine.Select("[" & datagridviewconai.Columns(datagridviewconai.CurrentCell.ColumnIndex).DataPropertyName & "]" & Operatore & "'" & sFind & "'", datagridviewconai.Columns(datagridviewconai.CurrentCell.ColumnIndex).DataPropertyName.ToString)
    
    
    
    
                If fr.Count > 0 Then
    
    
                    Dim Trovato As Boolean = False
                    For Each R As DataRow In fr
                        If datOrigine.Rows.IndexOf(R) > datagridviewconai.CurrentRow.Index Then
    
    
                            datagridviewconai.CurrentCell = datagridviewconai.Rows(datOrigine.Rows.IndexOf(R)).Cells(datagridviewconai.CurrentCell.ColumnIndex)
                            Trovato = True
                            Exit For
                        End If
                    Next
                    If Not Trovato Then
                        datagridviewconai.CurrentCell = datagridviewconai.Rows(datOrigine.Rows.IndexOf(fr(0))).Cells(datagridviewconai.CurrentCell.ColumnIndex)
                    End If
                Else
    
    
                End If
            End If
    
    
        End If
    
    
    End Sub
    Private Sub txtCercaKey_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCerca.TextChanged
        Cerca(txtCerca.Text, DataGridViewconai)
    End Sub
    Se non ti è chiaro fammi sapere
    Non capisco se il codice lo devo screivere all'interno del textbox

  7. #7
    ma hai fatto quella prova per capire se txtCercaKey_TextChanged intercetta correttamente quello che scrivi all'interno della textbox?

  8. #8
    si ma con scarsi risultati

  9. #9
    vogliamo concentrarci su quei risultati "scarsi" e farli diventare "top", poi passiamo al resto?

  10. #10
    Ho messo il focus al textboxcerca in più aggiunto la query ogni volta che modifico il textbox
    codice:
       
    
    Private Sub txtCercaKey_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCerca.TextChanged
           txtCerca.Focus()
           Try
               txtCerca.Text = Trim(txtCerca.Text)
               If txtCerca.Text = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
                   
                   Dim q As New SqlClient.SqlDataAdapter("Select * from Conai where Codfacia like '%" & txtCerca.Text & "%' or Itemcode like '%" & txtCerca.Text & "%'", cn)
    
    
               End If
           Catch ex As Exception
               MessageBox.Show(ex.Message, Me.Name & " - " & (New System.Diagnostics.StackFrame()).GetMethod().Name, MessageBoxButtons.OK, MessageBoxIcon.Error)
           End Try
    
    
       End Sub

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 © 2025 vBulletin Solutions, Inc. All rights reserved.