Usuário com melhor resposta
Pesquisa entre duas datas

Pergunta
-
Olá pessoal preciso fazer uma consulta numa aplicação VB 2010, usando banco de dados access.
Tenho um datatimerpicker (dtpinicial)
e um datatimerpicker (dtpFinal).
Montei este select mas não esta reornando valores corretos, por isso peço ajuda.
Dim VDATAI As Date = FormatDateTime(dtpI.Value.Date.Date, DateFormat.ShortDate)
Dim VDATAF As Date = FormatDateTime(DtpF.Value.Date.Date, DateFormat.ShortDate)
If vfiltro = "COMPLETO" Then
selcom.CommandText = "SELECT * FROM Tab_Homicidio WHERE DATA >= #" & VDATAI & "# and DATA <= #" & VDATAF & "# order by DATA"
MsgBox(selcom.CommandText)End if
Respostas
-
Seguindo o exemplo do nosso amigo Carlos,
no lugar de:
selcom.CommandText = "SELECT * FROM Tab_Homicidio WHERE DATA BETWEEN #" & DATAI & "# and #" & DATAF & "# order by DATA"
use:
selcom.CommandText = "SELECT * FROM Tab_Homicidio WHERE DATA BETWEEN @dtInit and @dtfinish order by DATA"
selcom.parameters.AddParamWithValue("@dtInit",VDATAI)
selcom.parameters.AddParamWithValue("@dtFinish",VDATAF)
- Marcado como Resposta SRick quarta-feira, 6 de fevereiro de 2013 14:22
-
-
Olá,
Poderia marcar a resposta, ou respostas, para ajudar outros usuários do fórum!
[]s,
Carlos dos Santos
blog: www.carloscds.net
twitter: @cdssoftware- Marcado como Resposta SRick terça-feira, 5 de fevereiro de 2013 16:27
Todas as Respostas
-
-
-
-
Olá,
O problema de concatenar uma data com string é que a conversão pode ficar incorreta no banco. O melhor a fazer é criar um Parametro na sua string e passar a data, veja:
Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM Tab_Homicidio WHERE DATA between @datainicial and @datafinal order by DATA") cmd.Parameters.AddWithValue("@datainicial", VDATAI) cmd.Parameters.AddWithValue("@datafinal", VDATAF)
[]s,Carlos dos Santos
blog: www.carloscds.net
twitter: @cdssoftware- Sugerido como Resposta Afonso Fernandes terça-feira, 5 de fevereiro de 2013 13:08
-
ok AMIGO, VOU ME INSERIR O MEU CÓDIGO COMPLETO E PEÇO AJUDA PARA ME ENSINAR A TRABALHAR COM PARAMETERS.
VEJA O CODIGO:
Class Estatistica
Dim areds(1) As String
Dim aid(1) As Integer
Dim adata(1) As Date
Dim amunicipio(1) As String
Dim abairro(1) As String
Dim ameio(1) As String
Dim aprisao(1) As String
Dim aautor(1) As String
Dim avitima(1) As String
Dim asexov(1) As String
Dim asexoa(1) As String
Dim aidadev(1) As String
Dim aidadea(1) As String
Dim amotivacao(1) As String
Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
Dim vfiltro As String
vfiltro = cmbFiltro.Text
Dim cs As String = My.Settings.HomicidioConnectionString
Dim conect As New OleDb.OleDbConnection
conect.ConnectionString = cs
Try
conect.Open()
Dim selcom As New OleDb.OleDbCommand
selcom.Connection = conect
If CDate(dtpI.Text) > CDate(DtpF.Text) Then
MessageBox.Show("A data inicial não pode ser maior que a final", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)
dtpI.Focus()
Exit Sub
End If
If cmbFiltro.Text = "" Then
MessageBox.Show("Escolha um critério no Filtro de pesquisa", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)
cmbFiltro.Focus()
Exit Sub
End If
Dim VDATAI As Date = dtpI.value.date
Dim VDATAF As Date = dtpF.value.date
If vfiltro = "COMPLETO" Then
selcom.CommandText = "SELECT * FROM Tab_Homicidio WHERE DATA BETWEEN #" & DATAI & "# and #" & DATAF & "# order by DATA"
endif
Dim vleitor As OleDb.OleDbDataReader
vleitor = selcom.ExecuteReader()
Dim c As Integer = 0
dgvHomicidios.Rows.Clear()
Do While vleitor.Read
c = c + 1
ReDim Preserve areds(c)
ReDim Preserve aid(c)
ReDim Preserve adata(c)
ReDim Preserve amunicipio(c)
ReDim Preserve abairro(c)
ReDim Preserve ameio(c)
ReDim Preserve aprisao(c)
ReDim Preserve aautor(c)
ReDim Preserve avitima(c)
ReDim Preserve asexov(c)
ReDim Preserve asexoa(c)
ReDim Preserve aidadev(c)
ReDim Preserve aidadea(c)
ReDim Preserve amotivacao(c)
areds(c) = vleitor("REDS")
aid(c) = vleitor("Id")
adata(c) = vleitor("DATA")
amunicipio(c) = vleitor("MUNICIPIO")
ameio(c) = vleitor("MEIO")
abairro(c) = vleitor("BAIRRO")
aprisao(c) = vleitor("PRISAO_APREENSAO")
aautor(c) = vleitor("NOME_AUTOR_SUSPEITO")
avitima(c) = vleitor("NOME_VITIMA")
asexov(c) = vleitor("SEXO_VITIMA")
asexoa(c) = vleitor("SEXO_AUTOR")
aidadev(c) = vleitor("IDADE_VITIMA")
aidadea(c) = vleitor("IDADE_AUTOR")
amotivacao(c) = vleitor("MOTIVACAO")
dgvHomicidios.Rows.Add(areds(c), adata(c), amunicipio(c), abairro(c), ameio(c), aprisao(c), aautor(c), avitima(c), asexov(c), asexoa(c), aidadev(c), aidadea(c), amotivacao(c))
Loop
ToolStripStatusLabel1.Text = "Total de Homicídios na pesquisa: " & dgvHomicidios.RowCount
' dgvHomicidios.Rows.Add("")
dgvHomicidios.Rows.Add("Fim do Relatório")
conect.Close()
Catch ex As Exception
MessageBox.Show("Erro na execução da pesquisa!" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub Estatistica_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dgvHomicidios.AlternatingRowsDefaultCellStyle.BackColor = Color.LightYellow
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
MessageBox.Show("Selecione a pesquisa, copie com Ctrl C e cole numa planilha do Excel.", "Sistemas Homicídios", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter
End Sub
End Class -
Seguindo o exemplo do nosso amigo Carlos,
no lugar de:
selcom.CommandText = "SELECT * FROM Tab_Homicidio WHERE DATA BETWEEN #" & DATAI & "# and #" & DATAF & "# order by DATA"
use:
selcom.CommandText = "SELECT * FROM Tab_Homicidio WHERE DATA BETWEEN @dtInit and @dtfinish order by DATA"
selcom.parameters.AddParamWithValue("@dtInit",VDATAI)
selcom.parameters.AddParamWithValue("@dtFinish",VDATAF)
- Marcado como Resposta SRick quarta-feira, 6 de fevereiro de 2013 14:22
-
-
Olá,
Poderia marcar a resposta, ou respostas, para ajudar outros usuários do fórum!
[]s,
Carlos dos Santos
blog: www.carloscds.net
twitter: @cdssoftware- Marcado como Resposta SRick terça-feira, 5 de fevereiro de 2013 16:27
-
Olá,
Poderia marcar a resposta, ou respostas, para ajudar outros usuários do fórum!
[]s,
Carlos dos Santos
blog: www.carloscds.net
twitter: @cdssoftware -