CONSULTA ENTRE DATAS SQL
Olá bom dia.
Estou com um problema em fazer filtragem entre datas, já vi aqui várias respostas, tentei seguir as várias opiniões e nada, o que poderá ser?
- O erro é este :
- A Função no módulo :
- Para filtrar no formulário :
Grato desde já pela vossa atenção.
Programadorvb6
Estou com um problema em fazer filtragem entre datas, já vi aqui várias respostas, tentei seguir as várias opiniões e nada, o que poderá ser?
- O erro é este :
- A Função no módulo :
Imports System.Data.OleDb
Module Ligacao_BD
Public Sub Procura_Especifica(ByVal Codigo_Sql As String, F As RegistoH)
Dim Liga_BD As String = ConString.ToString
Dim ObjCommandoP As New OleDbCommand
ObjCommandoP.Connection = New OleDbConnection(Liga_BD)
ObjCommandoP.CommandText = Codigo_Sql.ToString
ObjCommandoP.Connection.Open()
Dim ObjLerDados As OleDbDataReader = ObjCommandoP.ExecuteReader()
If Codigo_Sql.ToString <> Nothing Then
Try
If ObjLerDados.HasRows Then
Do While ObjLerDados.Read()
F.Caixa_Nome.Text = Convert.ToString(ObjLerDados(1))
F.Caixa_Razao.Text = Convert.ToString(ObjLerDados(2))
F.Caixa_Piso.Text = Convert.ToString(ObjLerDados(3))
F.Caixa_Empresa.Text = Convert.ToString(ObjLerDados(6))
Loop
Else
MessageBox.Show([Ô]Valores não encontrados. [Ô], [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
ObjLerDados.Close()
ObjLerDados.Dispose()
Catch ex As Exception
MessageBox.Show([Ô]Erro descrição : [Ô] & vbCrLf & ex.Message & vbCrLf, [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
End Module
- Para filtrar no formulário :
Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between [ô][Ô] & Me.Data_De.Value.Date & [Ô][ô] And [ô][Ô] & Me.Data_Ate.Value.Date & [Ô][ô][Ô] & [Ô]Order By Data[Ô], Folha_Laboral.RegistoH)
Grato desde já pela vossa atenção.
Programadorvb6
tente isto, formatar da data
Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between [ô][Ô] & Format(Me.Data_De.Value.Date,[Ô]YYYY-MM-DD[Ô]) & [Ô][ô] And [ô][Ô] & Format(Me.Data_Ate.Value.Date,[Ô]YYYY-MM-DD[Ô]) & [Ô][ô][Ô] & [Ô]Order By Data[Ô], Folha_Laboral.RegistoH)
faz assim
Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between CONVERT(DATETIME,[ô][Ô] & Format(Me.Data_De.Value, [Ô]yyyy-MM-dd[Ô]) & [Ô] 00:00:00[ô],102)
And CONVERT(DATETIME,[ô][Ô] & Format(Me.DtComissaoFim.Value, [Ô]yyyy-MM-dd[Ô]) & [Ô] 23:59:59[ô],102) & [Ô][ô][Ô] & [Ô]Order By Data[Ô], Folha_Laboral.RegistoH)
Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between CONVERT(DATETIME,[ô][Ô] & Format(Me.Data_De.Value, [Ô]yyyy-MM-dd[Ô]) & [Ô] 00:00:00[ô],102)
And CONVERT(DATETIME,[ô][Ô] & Format(Me.DtComissaoFim.Value, [Ô]yyyy-MM-dd[Ô]) & [Ô] 23:59:59[ô],102) & [Ô][ô][Ô] & [Ô]Order By Data[Ô], Folha_Laboral.RegistoH)
O erro me parece simples, não existe espaço entre o último apóstrofo e o [Ô]Order By[Ô]... está faltando esse espaço
Nesse caso(faltando o espaço) o interpretador vai interpretar(jura?) aquela data ligada com o [Ô]order by[Ô] como se fosse um valor só, gerando o erro que vc está tendo.
Nesse caso(faltando o espaço) o interpretador vai interpretar(jura?) aquela data ligada com o [Ô]order by[Ô] como se fosse um valor só, gerando o erro que vc está tendo.
Diz uma coisa,
O campo data está como do tipo data/time mesmo?
Se estiver, acho que você dev colocar o caracter especial que indica o tipo data, exemplo: #10/02/2012#
Outra coisa, no meu MySql, eu preciso colocar o Mês antes do Dia, exemplo: #02/10/2012# (10 de Fevereiro).
Veja se é o seu caso, senão você pode retornar datas erradas ou até nenhuma data.
Abraços.
O campo data está como do tipo data/time mesmo?
Se estiver, acho que você dev colocar o caracter especial que indica o tipo data, exemplo: #10/02/2012#
Outra coisa, no meu MySql, eu preciso colocar o Mês antes do Dia, exemplo: #02/10/2012# (10 de Fevereiro).
Veja se é o seu caso, senão você pode retornar datas erradas ou até nenhuma data.
Abraços.
Olá Pegudo.
Estou a utilizar uma base de dados Acess.
O Campo Data está definido Dtata/Time
- Definição BD
- Fica com os dados assim :
Já Tentei :
Grato desde já pela vossa atenção.
programadorvb6
Estou a utilizar uma base de dados Acess.
O Campo Data está definido Dtata/Time
- Definição BD
- Fica com os dados assim :
Já Tentei :
[ô]Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between #[Ô] & Format(Me.Data_De.Value, [Ô]dd/mm/yyyy[Ô]) & [Ô]# And #[Ô] & Format(Me.Data_Ate.Value, [Ô]dd/mm/yyyy[Ô]) & [Ô]#[Ô], Folha_Laboral.RegistoH)
[ô]Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between [ô][Ô] & Me.Data_De.Value.Date & [Ô][ô] And [ô][Ô] & Me.Data_Ate.Value.Date & [Ô][ô][Ô] & [Ô] Order By Data[Ô], Folha_Laboral.RegistoH)
[ô]Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between [ô][Ô] & Format(Me.Data_De.Value.Date, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô] And [ô][Ô] & Format(Me.Data_Ate.Value.Date, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô][Ô] & [Ô] Order By Data[Ô], Folha_Laboral.RegistoH)
[ô]Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between CONVERT(DATE,[ô][Ô] & Format(Me.Data_De.Value.Date, [Ô]yyyy-MM-dd[Ô]) & [Ô][ô],102) And CONVERT(DATE,[ô][Ô] & Format(Me.Data_Ate.Value, [Ô]yyyy-MM-dd[Ô]) & [Ô][ô],102)[Ô] & [Ô] Order By Data[Ô], Folha_Laboral.RegistoH)
Grato desde já pela vossa atenção.
programadorvb6
mude a formataçãp para
tente ai
Call Procura_Especifica([Ô]SELECT * FROM FolhaLab WHERE Data Between #[Ô] & Format(Me.Data_De.Value.Date,[Ô]mm/dd/yyyy[Ô]) & [Ô]# And #[Ô] & Format(Me.Data_Ate.Value.Date,[Ô]mm/dd/yyyy[Ô]) & [Ô]# Order By Data[Ô], Folha_Laboral.RegistoH)
tente ai
Pegue aÃ
Olá boa noite.
Quero desde já agradecer a todos os que me estão ajudando neste projecto.
O exemplo disponibilizdo pelo amigo Pegudo, funfa na perfeição , mas não mostra os valores correctos na Listview.
Tentei fazer assim mas sem sucesso :
Grato desde já pela vossa disponibilidade
Atentamente.
Programadorvb6
Quero desde já agradecer a todos os que me estão ajudando neste projecto.
O exemplo disponibilizdo pelo amigo Pegudo, funfa na perfeição , mas não mostra os valores correctos na Listview.
Tentei fazer assim mas sem sucesso :
Public Sub Procura_Especifica(ByVal Codigo_Sql As String, F As RegistoH)
Dim Liga_BD As String = ConString.ToString
Dim DR As DataRow
Dim Cor As Byte = 0
F.Grelha.Items.Clear()
Dim ObjCommandoP As New OleDbCommand
ObjCommandoP.Connection = New OleDbConnection(Liga_BD)
ObjCommandoP.CommandText = Codigo_Sql.ToString
ObjCommandoP.Connection.Open()
Dim ObjLerDados As OleDbDataReader = ObjCommandoP.ExecuteReader()
Dim ListItem As ListViewItem
If Codigo_Sql.ToString <> Nothing Then
Try
If ObjLerDados.HasRows Then
Do While ObjLerDados.Read()
F.Caixa_Nome.Text = Convert.ToString(ObjLerDados(1))
F.Caixa_Razao.Text = Convert.ToString(ObjLerDados(2))
F.Caixa_Piso.Text = Convert.ToString(ObjLerDados(3))
F.Caixa_Empresa.Text = Convert.ToString(ObjLerDados(6))
Loop
For Each DR In DT.Rows
If Not DR Is DBNull.Value Then
ListItem = F.Grelha.Items.Add(DR([Ô]Data[Ô]))
ListItem.SubItems.Add(DR([Ô]Nome[Ô]).ToString())
ListItem.SubItems.Add(DR([Ô]Entrada[Ô]).ToString())
ListItem.SubItems.Add(DR([Ô]Saida[Ô]).ToString())
ListItem.SubItems.Add(DR([Ô]Empresa[Ô]).ToString())
If Cor = 0 Then Cor += 1 : ListItem.BackColor = Color.White Else Cor = 0 : ListItem.BackColor = Color.LemonChiffon
End If
Next
Else
MessageBox.Show([Ô]Valores não encontrados. [Ô], [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
ObjLerDados.Close()
ObjLerDados.Dispose()
Catch ex As Exception
MessageBox.Show([Ô]Erro descrição : [Ô] & vbCrLf & ex.Message & vbCrLf, [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
Grato desde já pela vossa disponibilidade
Atentamente.
Programadorvb6
PROGAMADORVB6, só uma DICA.
Todos os bancos, assim como as linguagens de programação tem as chamadas PALAVRAS RESERADAS.
Essas palavras não DEVERIAM ser utilizadas em seus códigos ou nas SQLs.
No seu exemplo, lá na primeira sql vc esta utilizando a palavara DATA como sendo campo de uma tabela.
Data, Date,Time, etc..etc...entre outros campos são geralmente palavras reservadas. Evite o uso dessas palavras.
é só uma dica.....
Todos os bancos, assim como as linguagens de programação tem as chamadas PALAVRAS RESERADAS.
Essas palavras não DEVERIAM ser utilizadas em seus códigos ou nas SQLs.
No seu exemplo, lá na primeira sql vc esta utilizando a palavara DATA como sendo campo de uma tabela.
Data, Date,Time, etc..etc...entre outros campos são geralmente palavras reservadas. Evite o uso dessas palavras.
é só uma dica.....
Tópico encerrado , respostas não são mais permitidas