CONSULTA ENTRE DATAS SQL

PROGRAMADORVB6 10/02/2012 09:52:51
#394397
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 :

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
ONBASS 10/02/2012 10:31:16
#394400
MARCELO.TREZE 10/02/2012 10:37:01
#394403
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)
JULIANOPAN 10/02/2012 10:37:02
#394404
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)
KERPLUNK 10/02/2012 10:39:48
#394406
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.
PEGUDO 10/02/2012 10:48:43
#394409
Resposta escolhida
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.
PROGRAMADORVB6 10/02/2012 11:56:54
#394422
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 :
 [ô]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
MARCELO.TREZE 10/02/2012 15:11:23
#394439
mude a formataçãp para

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
PEGUDO 10/02/2012 15:42:04
#394450
Pegue aí
PROGRAMADORVB6 10/02/2012 20:23:37
#394465
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 :
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
FOXMAN 11/02/2012 09:40:47
#394479
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.....
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas