Oppure

Loading
21/04/09 20:00
sps84
Premetto che ho cercato ovunque, premetto che sono alla prime armi eccc... ma come si puo' fare in modo di eseguire una ricerca dentro un datagrid creato con la procedura guidata?
In sostanza ho due programmi che fungono da cataloghi per capirsi...

1)uno il data grid l' ho creato con la procedura guidata ho inserito il binding dei controlli e tutto funge tranna la ricerca....

2)il datagrid lo popolo con il codice ed il "cerca" mi funziona, tranne ovviamente il binding dei controlli...

Come posso fare?8-| Se qualcuno sa indicarmi l'errore... sarei contento...

caso 1:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: questa riga di codice carica i dati nella tabella 'DbDataSet.articoli'. È possibile spostarla o rimuoverla se necessario.
        Me.ArticoliTableAdapter.Fill(Me.DbDataSet.articoli)

    End Sub

    Private Sub BtnIndietro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIndietro.Click
        ArticoliBindingSource.Position -= 1
    End Sub

    Private Sub BtnAvanti_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAvanti.Click
        ArticoliBindingSource.Position += 1
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim dbdataview As DataView
        dbdataview = New DataView(DbDataSet.Tables("articoli"))
        Dim intposition As Integer
        intposition = dbdataview.Find(TextBox1.Text)
        ArticoliBindingSource.Position = intposition

    End Sub
End Class


Caso 2:

Imports system.data
Imports System.Data.OleDb

Public Class Form1
    Dim dbdataset As New DataSet
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        data()
        Me.BindingSource.DataSource = dbdataset
        Me.DataGridView1.DataSource = Me.BindingSource

    End Sub

    Private Sub data()
        Try
            Dim dbconn As New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0.;Data Source=" & Application.StartupPath & "\data.mdb")
            Dim dbdadp As New OleDbDataAdapter

            dbdadp.SelectCommand = New OleDbCommand
            dbdadp.SelectCommand.Connection = dbconn
            dbdadp.SelectCommand.CommandText = "SELECT * FROM articoli WHERE ArDesArt LIKE '" & TxtCerca.Text & "%'"
            dbdadp.SelectCommand.CommandType = CommandType.Text

            dbconn.Open()
            dbdadp.Fill(dbdataset, "articoli")
            dbconn.Close()

            DataGridView.AutoGenerateColumns = True
            DataGridView.DataSource = dbdataset
            DataGridView.DataMember = "articoli"

  

            dbdadp = Nothing
            dbconn = Nothing


        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub TxtCerca_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtCerca.TextChanged
        data()
    End Sub
    Private Sub BtnSvuota_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnSvuota.Click
        TxtCerca.Text = ""
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        BindingSource.Position += 1
    End Sub
End Class


aaa
22/04/09 18:54
Il Totem
Ma un semplice ciclo For? :rotfl: Se usi vb2008 puoi usare anche linq. Puoi anche aggiungere un filtro al databindingsource. Decidi quale metodo adottare, poi continuiamo.
aaa
22/04/09 18:58
sps84
ho vb 2005 un ciclo for non saprei come usarlo... un filtro al databindingsource cio' provato ma non filtrava nulla...:rofl::rofl: . Se invece faccio un binding dei dati presenti in una datagrid si puo?
aaa
23/04/09 15:17
Il Totem
Non sai usare un ciclo for? E' semplice, basta scrivere una cosa del genere:
For Each Row As DataRow In DataSet.Rows
  If Row.Items(5).ToString().Contains("testo") Then
    'trovato!
  End If
Next


Comunque io presumevo che il binding l'avessi già fatto. La ricerca l'ho considerata come un'operazione in più rispetto alla normale visualizzazione di tutti i dati. Per gestire il binding: totem.altervista.org/guida/versione2/…. Se usi un datagridview basta impostare la sua proprietà DataSource sul binding source. Per aggiungere un filtro al binding source, basta impostare la proprietà Filter su una espressione sql che restituisca vero o falso. Esempio:
BindingSource1.Filter = "campo2 LIKE '%testo%'"

L'espressione non richiede la clausola WHERE, né il ";" finale, ma può anche contenere operatori logici come AND e OR. Il binding source si occupa di filtrare gli elementi del database che soddisfano l'espressione automaticamente.
aaa
23/04/09 16:13
sps84
scusa totem ma questo dove devo metterlo??

BindingSource1.Filter = "campo2 Like '%testo%'"

aaa
24/04/09 15:19
Il Totem
Dove? Dove ti serve. Se la ricerca avviene in un click, lo metti in quel click. Mi sembrava scontato.
aaa
24/04/09 17:32
sps84
ho risolto... apenna posoo posto il codice...:k::k:
aaa