FILTRO POR DATAS

MORCELI 11/11/2013 21:09:34
#431001
Boa noite pessoal
Sou novo aqui no forum, venho pedir uma ajuda de vocês, tenho a seguinte situação:
Sempre usei o excel para fazer meus controle usando VBA, agora eu mudei, baixei VB 2008, e até agora to me virando, cheguei em um ponto que preciso criar um filtro no datagridviw por criterio de nome e data inicial e data final, e click botão e faz o filtro trazendo o resultado no datagridview, alguem tem um exemplo para mim estudar como foi feito o respectivo filtro. O banco de dados é o Access 2010
PEGUDO 12/11/2013 09:14:15
#431013
Primeiro, eu aconselho a entrar em sites de cursos grátis, pelo menos para começar a pegar a malícia do negócio (O pessoal consulta muito o site do Macoratti).
Mas pra começar, o que você tem que ter em mente é: como o dado está configurado no seu banco de dados?
Se está como tipo [Ô]Texto[Ô], você pode fazer uma pesquisa com o Like, por exemplo:
[Ô]SELECT * FROM tblVendas WHERE cData LIKE [ô]%/11/2013[ô] [Ô]
Acima eu busco, na coluna cData, tudo que contenha [Ô]/11/2013[Ô], ou seja 01/11/2013, 02/11/2013, etc.

Se seu campo for do tipo DataHora, aí fica mais complicado porque tem que saber como o BD trata este tipo de dado. O Access trata da seguinte maneira: mês/dia/ano, ou seja 11/23/2013 (23 de novembro de 2013).

Aí você terá de enviar para o Access a data entre [Ô]#[Ô], por exemplo:
[Ô]SELECT * FROM tblVendas WHERE cData = #11/5/2013#[Ô]
Acima: Selecione tudo da tabela tblVendas onde a coluna cData seja iqual a 05/11/2013.

Obs: Outro detalhe é que, tanto o mês quanto o dia, se forem menores que 10, não podem ter o zero na frente:
05 - Errado;
5 - Certo.

Boa sorte.
MORCELI 12/11/2013 15:15:06
#431047
Então to na luta aqui, eu fiz um filtro aqui só que sem resultado, não sei onde estou errado.Segue ele para voces darem uma olhada

Imports System.Data.SqlClient

Public Class Form1
Dim provider As String

Dim dataFile As String

Dim connString As String
Dim myConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection
Dim ds As DataSet = New DataSet
Dim da As OleDb.OleDbCommand



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
provider = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source =[Ô]

dataFile = [Ô]C:\Users\USER\Desktop\Banco1.accdb[Ô]

connString = provider & dataFile

myConnection.ConnectionString = connString

myConnection.Open()


[ô] Dim sql As String = [Ô]SELECT Codigo,nome,data FROM estagio WHERE data between data AND data[Ô]
Dim sql As String = [Ô]SELECT Codigo,nome,data FROM estagio WHERE data = #Textbox1# and #Textbox2#[Ô]
Dim table As New DataTable()
Using cmd As New SqlCommand(sql)

da.Parameters.AddWithValue([Ô]@data[Ô], TextBox1.Text)
da.Parameters.AddWithValue([Ô]@data[Ô], TextBox2.Text)


Using da As New SqlDataAdapter(cmd)
da.Fill(table)
DataGridView1.DataSource = table
End Using
End Using
End Sub
End Class



DAMASCENO.CESAR 12/11/2013 23:37:23
#431081
Resposta escolhida
Faz assim:
Dim sql As String = [Ô]SELECT Codigo, nome, data FROM estagio WHERE data BETWEEN #[Ô] & Textbox1.Text & [Ô]# AND #[Ô] & Textbox2.Text & [Ô]#[Ô]
DAMASCENO.CESAR 12/11/2013 23:46:00
#431082
Esqueci, nao vai funcionar, vc precisa alterar a data de dd/mm/yyyy para mm/dd/yyyy:
faz assim:

dim Dia1, Dia2, Mes1, Mes2, Ano1, Ano2, Data1, Data2 as String

TextBox1.SelectionStart = 0
TextBox1.SelectionLength = 2
Dia1 = TextBox1.SelectedText

TextBox1.SelectionStart = 3
TextBox1.SelectionLength = 2
Mes1 = TextBox1.SelectedText

TextBox1.SelectionStart = 6
TextBox1.SelectionLength = 2
Mes1 = TextBox1.SelectedText

[ô]Faz igual no TextBox2 utilizando as outras variaveis

Data1 = Mes1 & [Ô]/[Ô] & Dia1 & [Ô]/[Ô] & Ano1

Dim sql As String = [Ô]SELECT Codigo, nome, data FROM estagio WHERE data BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]#[Ô]
MORCELI 13/11/2013 08:29:29
#431088
Obrigado pela ajuda até agora BEGUDO e DAMASCENO, peguei os seus exemplos de voces estudei e adaptei, dai então eu consegui resolver a minha questão da seguinte maneira, testei e deu tudo certo, não precisei fazer as jogadinhas com as datas propostas aqui, segue abaixo como foi feito e para ajudar outras pessoas.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
provider = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source =[Ô]

dataFile = [Ô]C:\Users\USER\Desktop\Banco1.accdb[Ô]

connString = provider & dataFile

myConnection.ConnectionString = connString

myConnection.Open()
Dim Data1 As Date
Dim Data2 As Date
Data1 = CDate(TextBox1.Text)
Data2 = CDate(TextBox2.Text)

[ô]Dim da As New OleDb.OleDbDataAdapter([Ô]select * from estagio where data BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]#[Ô], myConnection)
Dim da As New OleDb.OleDbDataAdapter([Ô]select * from estagio where data BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]#[Ô], myConnection)

Dim table As New DataTable()

da.Fill(table)

DataGridView1.DataSource = table
myConnection.Close()
End Sub
Tópico encerrado , respostas não são mais permitidas