CONSULTA ENTRE DATAS NO SQL SERVER COMPACT
Boa Noite
Alguém teria algum link para trabalhar com datas em sql server compact 4.0
Estou tentando montar uma consulta para popular um datagridview entre datas distintas, mas dá erro
O código que uso é o seguinte:
O erro descrito é o seguinte:
System.data.SqlServerCE..sqlCeExcepection(0x80004005). O tipo de dados não é válido para a operação booliana. [ Data type (if Known) = datetime, Data type (if Known) = nvarchar]
Se alguém puder ajudar, agradeço desde já
Alguém teria algum link para trabalhar com datas em sql server compact 4.0
Estou tentando montar uma consulta para popular um datagridview entre datas distintas, mas dá erro
O código que uso é o seguinte:
Private Sub preencheDgvDesPer()
Using con As SqlCeConnection = conectarDados()
con.Open()
Try
Dim strCom As String = [Ô]SELECT Data, NumDoc, Conta, Favorecido, Valor, Forma, Observacoes, idDespesa [Ô] & _
[Ô]FROM tbDespesa [Ô] & _
[Ô]WHERE Favorecido LIKE [ô]%[Ô] & txtLocalizar.Text & [Ô]%[ô] [Ô] & _
[Ô]AND Data BETWEEN [ô][Ô] & dtpDataInicial.Text & [Ô][ô] AND [ô][Ô] & dtpDataFinal.Text & [Ô][ô] [Ô] & _
[Ô]ORDER BY Data ASC[Ô]
Dim sqlCom As SqlCeCommand = New SqlCeCommand(strCom, con)
Dim da As New SqlCeDataAdapter(sqlCom)
Dim dt As DataTable = New DataTable([Ô]Despesa[Ô])
Dim ds As DataSet = New DataSet
dgvDespesa.Columns.Clear()
da.Fill(ds)
With dgvDespesa
.DefaultCellStyle.Font = New Font([Ô]Arial[Ô], 7, FontStyle.Regular)
.ColumnHeadersDefaultCellStyle.Font = New Font([Ô]Arial[Ô], 8, FontStyle.Regular)
.GridColor = Color.LightGray
.BorderStyle = BorderStyle.Fixed3D
.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.RowHeadersVisible = False
.BackgroundColor = Color.White
.ColumnCount = 8
.AutoGenerateColumns = False
.Columns(0).Name = [Ô]Data[Ô]
.Columns(1).Name = [Ô]Doc[Ô]
.Columns(2).Name = [Ô]Conta[Ô]
.Columns(3).Name = [Ô]Favorecido[Ô]
.Columns(4).Name = [Ô]Valor[Ô]
.Columns(5).Name = [Ô]Forma Pgto[Ô]
.Columns(6).Name = [Ô]Observações[Ô]
.Columns(7).Name = [Ô]ID[Ô]
.Columns(0).Width = 63
.Columns(1).Width = 55
.Columns(2).Width = 70
.Columns(3).Width = 147
.Columns(4).Width = 80
.Columns(5).Width = 100
.Columns(6).Width = 300
.Columns(0).DefaultCellStyle.Format = [Ô]dd/MM/yyyy[Ô]
.Columns(4).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(7).Visible = False
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = False
.AllowUserToResizeRows = False
End With
dt = ds.Tables(0)
For Each linha As DataRow In dt.Rows
dgvDespesa.Rows.Add(linha(0), linha(1), linha(2), linha(3), linha(4), linha(5), linha(6))
Next
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Using
End Sub
O erro descrito é o seguinte:
System.data.SqlServerCE..sqlCeExcepection(0x80004005). O tipo de dados não é válido para a operação booliana. [ Data type (if Known) = datetime, Data type (if Known) = nvarchar]
Se alguém puder ajudar, agradeço desde já
Qual linha que dá o erro?
se a coluna no banco é datetime, vc precisa converter os texts para datetime tmb, e no formato do banco....
A linha que dá erro é a seguinte:
Dim sqlCom As SqlCeCommand = New SqlCeCommand(strCom, con)
Dim da As New SqlCeDataAdapter(sqlCom)
Dim dt As DataTable = New DataTable([Ô]Despesa[Ô])
Dim ds As DataSet = New DataSet
dgvDespesa.Columns.Clear()
[txt-color=#e80000]da.Fill(ds)[/txt-color]
Se faço a consulta para verificar entre datas dá erro.
A consulta com: WHERE Favorecido LIKE..... funciona corretamente.
Dim sqlCom As SqlCeCommand = New SqlCeCommand(strCom, con)
Dim da As New SqlCeDataAdapter(sqlCom)
Dim dt As DataTable = New DataTable([Ô]Despesa[Ô])
Dim ds As DataSet = New DataSet
dgvDespesa.Columns.Clear()
[txt-color=#e80000]da.Fill(ds)[/txt-color]
Se faço a consulta para verificar entre datas dá erro.
A consulta com: WHERE Favorecido LIKE..... funciona corretamente.
Em vez de aspas simples, tente com tralha ou porcentagem:
ou então use aspas simples mesmo e converta suas datas para o formato [ô]25-09-2016[ô].
AND Data BETWEEN # [Ô] & dtpDataInicial.Text & [Ô] # AND # [Ô] & dtpDataFinal.Text & [Ô] # [Ô] & _
ou então use aspas simples mesmo e converta suas datas para o formato [ô]25-09-2016[ô].
Sugestões:
.....
AND Data BETWEEN #[Ô] & Format(CDate(dtpDataInicial.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & Format(CDate(dtpDataFinal.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô]# [Ô] & _
.....
ou
.....
AND Data BETWEEN #[Ô] & Convert.ToDateTime(dtpDataInicial.Text) & [Ô]# AND #[Ô] & Convert.ToDateTime(dtpDataFinal.Text) & [Ô]# [Ô] & _
....
Se o seu controle for um DateTimePicker (que parece que é o seu caso), nunca trabalhei com ele, mas creio que retorne um tipo Date, então neste caso acho que seria só fazer como o Jaba disse, colocar o [Ô]jogo da velha[Ô] antes da data.
.....
AND Data BETWEEN #[Ô] & Format(CDate(dtpDataInicial.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & Format(CDate(dtpDataFinal.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô]# [Ô] & _
.....
ou
.....
AND Data BETWEEN #[Ô] & Convert.ToDateTime(dtpDataInicial.Text) & [Ô]# AND #[Ô] & Convert.ToDateTime(dtpDataFinal.Text) & [Ô]# [Ô] & _
....
Se o seu controle for um DateTimePicker (que parece que é o seu caso), nunca trabalhei com ele, mas creio que retorne um tipo Date, então neste caso acho que seria só fazer como o Jaba disse, colocar o [Ô]jogo da velha[Ô] antes da data.
Bom dia PERCIFILO
Já tentei com hash, convertendo para data, convertendo para string sei lá mais o quê.
Não acho tutorias nem em fóruns nem no you tube e nem em sites de lÃngua inglesa...
Tenho o mesmo sistema em sql server 2012 e funciona perfeitamente.
já tentei usando format custom para data sql server que grava a data como xx/xx/xxxx 00:00:00
Usando o código como vc o formatou deu o seguinte erro:
System.data.SqlServerCE..sqlCeExcepection(0x80004005):Erro ao analisar a consulta. [ Token line number = 1, Token line offset = 148, Token in error = #
Já tentei com hash, convertendo para data, convertendo para string sei lá mais o quê.
Não acho tutorias nem em fóruns nem no you tube e nem em sites de lÃngua inglesa...
Tenho o mesmo sistema em sql server 2012 e funciona perfeitamente.
já tentei usando format custom para data sql server que grava a data como xx/xx/xxxx 00:00:00
Usando o código como vc o formatou deu o seguinte erro:
System.data.SqlServerCE..sqlCeExcepection(0x80004005):Erro ao analisar a consulta. [ Token line number = 1, Token line offset = 148, Token in error = #
Se for igual a Mysql, que acho que é, não precisa utilizar BETWEEN, basta Data >= [ô][Ô] & parâmetro & [Ô][ô] And Data <= [ô][Ô] & parâmetro & [Ô][ô]
Pessoal dá o mesmo erro com o exemplo do NILSONTRES e também o mesmo erro com o exemplo do PERCIFILHO.
Erro: System.data.SqlServerCE..sqlCeExcepection(0x80004005):Erro ao analisar a consulta. [ Token line number = 1, Token line offset = 148, Token in error = #
Como usar o server compact 4.0 se para fazer uma simples consulta entre datas e preciso fazer um parto.
Erro: System.data.SqlServerCE..sqlCeExcepection(0x80004005):Erro ao analisar a consulta. [ Token line number = 1, Token line offset = 148, Token in error = #
Como usar o server compact 4.0 se para fazer uma simples consulta entre datas e preciso fazer um parto.
Colega SanRoman, tenho um sistema em que eu utilizo o Sql CE 4.0, escrito em C# (se for VB.Net ou outra é só converter)
Essa consulta funciona normalmente:
Note que eu não utilizo o DateTimePicker, mas sim dois MaskedTextBox (inicial e final).
Repito, no meu sistema está funcionando corretamente;
Obs: o campo da minha tabela é tipo DateTime.
Essa consulta funciona normalmente:
Select * From Banco_de_Dados Where data Between [ô][Ô] + String.Format([Ô]{0:yyyy/MM/dd}[Ô], Convert.ToDateTime(mskDataPrevisaoInicial.Text)) + [Ô][ô] And [ô][Ô] + String.Format([Ô]{0:yyyy/MM/dd}[Ô], Convert.ToDateTime(mskDataPrevisaoFinal.Text)) + [Ô][ô] [Ô];
Note que eu não utilizo o DateTimePicker, mas sim dois MaskedTextBox (inicial e final).
Repito, no meu sistema está funcionando corretamente;
Obs: o campo da minha tabela é tipo DateTime.
Boa tarde, PerciFilho
Eureka.... Valeu meu amigo funcionou perfeitamente. Precisei trocar apenas os nomes dos campos.
Muito obrigado. O ditado está correto: Unidos jamais seremos vencidos... kkkkkkkkk
Vou dar o tópico como encerrado.
Felicidades
Eureka.... Valeu meu amigo funcionou perfeitamente. Precisei trocar apenas os nomes dos campos.
Muito obrigado. O ditado está correto: Unidos jamais seremos vencidos... kkkkkkkkk
Vou dar o tópico como encerrado.
Felicidades
Tópico encerrado , respostas não são mais permitidas