Jump to content
Sign in to follow this  
carlosmorais

criar parâmetro para filtrar dados de DataGrid

Recommended Posts

carlosmorais

boas,

não consigo criar um parâmetro para filtrar os dados a inserir numa DataGrid, para apenas os da data escolhida numa MaskedTextBox.

a comentário estão as linhas que tentei utilizar, mas não funciona...

fica também uma imagem para ajudara perceber o que quero fazer.

http://img607.imageshack.us/i/vbnet.png/

 
    Private da As MySqlDataAdapter
    Private ds As DataSet

    Private Sub ver_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ver.Click
        
        Dim myConnectionString As String = "Server=localhost;" & _
          "Database=picaoponto;" & _
          "Uid=root;" & _
          "Pwd=123pt;" & _
          "Connect Timeout=30;"
        
        Dim connection As New MySqlConnection(myConnectionString)
        'Dim connect As New MySqlConnection
        
        Dim SQL As String = "SELECT codfuncionario, entrada, saida FROM registodeponto where data =  @data "

        'Dim command As New MySqlCommand(SQL, connect)
        da = New MySqlDataAdapter(SQL, connection)
        'command.Parameters.Add("@data", MySqlDbType.Date).Value = MaskedTextBox1.Text

       ds = New DataSet

       da.Fill(ds, "myTable")

        DataGridView1.DataSource = ds.Tables("myTable")

        DataGridView1.Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells

        connection = Nothing

alguma ajuda?  :cheesygrin:

cumps.

Share this post


Link to post
Share on other sites
bioshock

Olha bem para estas linhas:

Dim SQL As String = "SELECT codfuncionario, entrada, saida FROM registodeponto where data =  @data"
da.Fill(ds, "myTable")
DataGridView1.DataSource = ds.Tables("myTable")

Share this post


Link to post
Share on other sites
carlosmorais

pah, não estou a ver... :nono1:

só se filtrar os dados depois... 🤔

Share this post


Link to post
Share on other sites
bioshock

Por partes:

Sabes o que é e para que serve um Dataset?

Supondo que sim, repara na tua query:

Dim SQL As String = "SELECT codfuncionario, entrada, saida FROM registodeponto where data = @data"

Passando por miúdos: Seleccionas dois campos (codfuncionario, entra e saida) da tabela registodeponto onde a data é igual a @data.

Ora, o que deves agora atribuir ao Dataset, é o nome da tabela de onde estás a seleccionar os dados, portanto, em vez de teres:

da.Fill(ds, "myTable")
DataGridView1.DataSource = ds.Tables("myTable")

Deverias de ter...:

da.Fill(ds, "registodeponto")
DataGridView1.DataSource = ds.Tables("registodeponto")

Segundo, é claro que se usas a seguinte instrução numa query (data = @data) tens, obrigatoriamente, de usar os devidos parâmetros.

Algo mais completo:

Dim connectionString As String = "Whatever..."
Dim connection As New MySqlConnection(connectionString)
' A tal instrução..
Dim query As String = "SELECT campo FROM tabela WHERE data = @data"
Dim command As New MySqlCommand(query, connection)
' Os tais parâmetros
command.Parameters.Add("@data", MySqlDbType.Date).Value = MaskedTextBox1.Text
Dim DataSet As New DataSet
Dim Adapter As New MySqlDataAdapter(query, connection)
Adapter.Fill(DataSet , "tabela")
Me.DataGridView1.DataSource = DataSet.Tables("tabela")

Em suma, é isso.

Share this post


Link to post
Share on other sites
bioshock

Bem também reparei ali num erro meu. Visto estares a usar parâmetros tens de atribuir o command ao DataAdapter.

Dim Adapter As New MySqlDataAdapter(command)

Full:

Dim connection As New MySqlConnection(connectionString)

Dim query As String = "SELECT codfuncionario, entrada, saida FROM registodeponto WHERE data = @data"
Dim command As New MySqlCommand(query, connection)
command.Parameters.Add("@data", MySqlDbType.Date).Value = MaskedTextbox1.Text

Dim DataSet As New Dataset
' Aqui estava o erro que te falei
Dim Adapter As New MySqlDataAdapter(command)

Adapter.Fill(DataSet, "registodeponto")
DataGridView1.DataSource = DataSet.Tables("registodeponto")

E isso deve funcionar. Caso contrário, os valores que estás a obter da MaskedTextbox não são valores que possam ser aceites na base de dados para fazer comparação.

Caso dê erro, substitui a MaskedTextbox1.Text por um valor que tu saibas que está na base de dados :)

Share this post


Link to post
Share on other sites
carlosmorais

resolveu! o problema tinha de estar no parâmetro, pois já tinha substituído a MaskedTextbox e dava no mesmo.

Obrigado por tudo.  :confused:

Cumps.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.