ME AJUDEM POR FAVOR NESTA CONSULTA SQL

JONASJTG 03/05/2017 12:39:54
#473699
Bom dia para todos!

Preciso muita da ajuda de vcs para poder finalizar este projeto de estudo só falta finalizar esta consulta SQL.

na consulta baixo tem toda a consulta.
Mas ela da este erro

conversion from type [ô]boolean[ô] to type [ô]date[ô] is not valid

eu acho que o erro está nesta parte. irei tb posta todo codigo!
[ô]MOTRAR REGISTRO QUE NÃO TEM DATA DE VACINA NO PERÍODO
listapesquisa.Sort(listapesquisa.Columns(1), ListSortDirection.Ascending)

Dim contavacina As Int16 = (Me.listapesquisa.RowCount - 1)
Dim brinco As String
Dim contamesvacina As String

For zz = contavacina To 0 Step -1
brinco = listapesquisa.Rows(zz).Cells(1).Value
contamesvacina = listapesquisa.Rows(zz).Cells(13).Value
If Me.listapesquisa.Rows(zz).Cells(1).Value = brinco Or Month(Me.listapesquisa.Rows(zz).Cells(13).Value >= dtFinal And Year(Me.listapesquisa.Rows(zz).Cells(13).Value = dtFinal)) Then
listapesquisa.Rows.Remove(listapesquisa.Rows(zz))
End If
Next zz
End If


consulta completa

Private Sub pesquisadata_Click(sender As Object, e As EventArgs) Handles pesquisadata.Click

Dim dtInicial As DateTime = dtpInicio.Value.Date
Dim dtFinal As DateTime = dtpfim.Value.Date

Try

If dtInicial > dtFinal Then
MsgBox([Ô]A data FINAL NÃO PODE SER MENOR QUE DATA INICIAL![Ô], MsgBoxStyle.Information, [Ô]estudo[Ô])
Me.dtpInicio.Text = Date.Today
Me.dtpfim.Text = Date.Today
Call limparcamposp()
Me.txtativop.Text = [Ô]Sim[Ô]
End If

Dim PesquisaSQL As String
PesquisaSQL = [Ô]SELECT TOP 7 or1.*, orv.id, orv.dtvacina FROM Origem or1, Origemvacina orv WHERE or1.Brinco = orv.Brinco[Ô]

If Me.optDataNasc.Checked = True Then
PesquisaSQL = [Ô]SELECT or1.*, orv.id, orv.dtvacina FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco [Ô]
PesquisaSQL = PesquisaSQL & [Ô]WHERE or1.DatadeNasc BETWEEN #[Ô] & dtInicial & [Ô]# AND #[Ô] & dtFinal & [Ô]#[Ô]
End If

If Me.optDataVacina.Checked = True Then
PesquisaSQL = [Ô]SELECT or1.*, orv.id, orv.dtvacina FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco [Ô]
PesquisaSQL = PesquisaSQL & [Ô]WHERE orv.dtvacina BETWEEN #[Ô] & dtInicial & [Ô]# AND #[Ô] & dtFinal & [Ô]#[Ô]
End If

If Me.optsemvacinar.Checked = True Then
PesquisaSQL = [Ô]SELECT or1.*, orv.id, orv.dtvacina FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco [Ô]
PesquisaSQL = PesquisaSQL & [Ô]WHERE IsNull (orv.dtvacina) OR [Ô]
PesquisaSQL = PesquisaSQL & [Ô](orv.dtvacina BETWEEN #[Ô] & dtInicial & [Ô]# AND #[Ô] & dtFinal & [Ô]#)[Ô]
End If

If Me.optDataVacinaera.Checked = True Then
[ô]traz todas as vacinas dos animais[ô]
PesquisaSQL = [Ô]SELECT TOP 20 or1.*, orv.id, orv.dtvacina FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco [Ô]
PesquisaSQL = PesquisaSQL & [Ô]WHERE orv.dtvacina BETWEEN #[Ô] & dtInicial & [Ô]# AND #[Ô] & dtFinal & [Ô]#[Ô]
End If

If txtbrincop.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.Brinco like[ô][Ô] & txtbrincop.Text & [Ô][ô] [Ô]
End If

If txtpbrincop.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.Pbrinco like[ô][Ô] & txtpbrincop.Text & [Ô][ô] [Ô]
End If

If txtnantigop.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.Nantigo like[ô][Ô] & txtnantigop.Text & [Ô][ô] [Ô]
End If

If txtracap.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.raca like[ô][Ô] & txtracap.Text & [Ô][ô] [Ô]
End If

If txtanimalp.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.Animal like[ô][Ô] & txtanimalp.Text & [Ô][ô] [Ô]
End If

If txtespecificarp.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.Especificar like[ô][Ô] & txtespecificarp.Text & [Ô][ô] [Ô]
End If

If txtfazendap.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.fazenda like[ô][Ô] & txtfazendap.Text & [Ô][ô] [Ô]
End If

If txtObservacoesp.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.Observacoes like[ô][Ô] & txtObservacoesp.Text & [Ô][ô] [Ô]
End If

If txtativop.Text <> [Ô][Ô] Then
PesquisaSQL = PesquisaSQL & [Ô] AND or1.ativo like[ô][Ô] & txtativop.Text & [Ô][ô] [Ô]
End If

Dim dt As New DataTable
Dim ds As New DataSet
[ô]Cria uma nova ligação à base de dados
Dim Con As New OleDbConnection

Dim dr As OleDbDataReader = Nothing

[ô]conectar à base de dados
Con.ConnectionString = My.Settings.baseConnectionString
[ô]Abrindo conexao
Con.Open()

Dim da As New OleDbDataAdapter(PesquisaSQL, Con)

If Me.optDataNasc.Checked = True Then
da.Fill(ds, [Ô]DatadeNasc[Ô])
listapesquisa.DataSource = dt
End If

If Me.optDataVacina.Checked = True Then
da.Fill(ds, [Ô]dtvacina[Ô])
listapesquisa.DataSource = dt
End If

If Me.optsemvacinar.Checked = True Then
da.Fill(ds, [Ô]dtvacina[Ô])
listapesquisa.DataSource = dt
End If

If Me.optDataVacinaera.Checked = True Then
da.Fill(ds, [Ô]dtvacina[Ô])
listapesquisa.DataSource = dt
End If

[ô]Coloca a informação da tabela definida no DataSet
da.Fill(dt)
[ô]Coloca a informação da tabela definida pela data de nascimento no DataSet
da.Fill(ds)
listapesquisa.DataSource = dt

With listapesquisa
[ô]Nomear as Colunas
listapesquisa.Columns(0).HeaderText = [Ô]id[Ô]
[ô]Definir largura das colunas manual
listapesquisa.Columns(0).Width = 5
listapesquisa.Columns(1).HeaderText = [Ô]Brinco[Ô]
listapesquisa.Columns(1).Width = 65
listapesquisa.Columns(2).HeaderText = [Ô]PBrinco[Ô]
listapesquisa.Columns(2).Width = 45
listapesquisa.Columns(3).HeaderText = [Ô]Anca[Ô]
listapesquisa.Columns(3).Width = 40
listapesquisa.Columns(4).HeaderText = [Ô]Nascimento[Ô]
listapesquisa.Columns(4).Width = 65
listapesquisa.Columns(5).HeaderText = [Ô]Raça[Ô]
listapesquisa.Columns(5).Width = 55
listapesquisa.Columns(6).HeaderText = [Ô]Animal[Ô]
listapesquisa.Columns(6).Width = 40
listapesquisa.Columns(7).HeaderText = [Ô]Especificar[Ô]
listapesquisa.Columns(7).Width = 83
listapesquisa.Columns(8).HeaderText = [Ô]Fazenda[Ô]
listapesquisa.Columns(8).Width = 65
listapesquisa.Columns(9).HeaderText = [Ô]Observações[Ô]
listapesquisa.Columns(9).Width = 95
listapesquisa.Columns(10).HeaderText = [Ô]IdadeAtualDasVacas[Ô]
listapesquisa.Columns(10).Width = 131
listapesquisa.Columns(11).HeaderText = [Ô]Ativo[Ô]
listapesquisa.Columns(11).Width = 35
listapesquisa.Columns(12).HeaderText = [Ô]idv[Ô]
listapesquisa.Columns(12).Width = 5
listapesquisa.Columns(13).HeaderText = [Ô]Vacinação[Ô]
listapesquisa.Columns(13).Width = 65
[ô]ordem por brinco
listapesquisa.Sort(listapesquisa.Columns(1), ListSortDirection.Ascending)
End With

[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]CONSULTA NASCIMENTO E VACINA[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]
If Me.optDataNasc.Checked = True Or Me.optDataVacina.Checked = True Then
[ô]ordem por datavacina
listapesquisa.Sort(listapesquisa.Columns(13), ListSortDirection.Descending)

[ô]Sem Repetir brinco e datadevacina na datagridview
For LinhaAtual As Integer = 0 To listapesquisa.Rows.Count - 2
For NovaLinha As Integer = listapesquisa.Rows.Count - 1 To LinhaAtual + 1 Step -1
If listapesquisa.Item(1, LinhaAtual).Value = listapesquisa.Item(1, NovaLinha).Value Then
listapesquisa.Rows.RemoveAt(NovaLinha)
End If
Next
Next
End If

[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]CONSULTA DE TODAS DATAS DAS VACINAS[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]
If Me.optDataVacinaera.Checked = True Then
listapesquisa.Sort(listapesquisa.Columns(13), ListSortDirection.Descending)
End If

[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]CONSULTA SEM VACINAR[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]
If Me.optsemvacinar.Checked = True Then
[ô]REMOVE REGISTRO QUE CONTEM [Ô]NÃO[Ô]
Dim contalinha As Int16 = (Me.listapesquisa.RowCount - 1)
Dim vereficalinha As String

For Xx = contalinha To 0 Step -1
vereficalinha = listapesquisa.Rows(Xx).Cells(11).Value
If vereficalinha.Contains([Ô]Não[Ô]) Then
listapesquisa.Rows.Remove(listapesquisa.Rows(Xx))
End If
Next Xx



JONASJTG 03/05/2017 12:43:58
#473700
[ô]MOTRAR REGISTRO QUE NÃO TEM DATA DE VACINA NO PERIODO
listapesquisa.Sort(listapesquisa.Columns(1), ListSortDirection.Ascending)

Dim contavacina As Int16 = (Me.listapesquisa.RowCount - 1)
Dim brinco As String
Dim contamesvacina As String

For zz = contavacina To 0 Step -1
brinco = listapesquisa.Rows(zz).Cells(1).Value
contamesvacina = listapesquisa.Rows(zz).Cells(13).Value
If Me.listapesquisa.Rows(zz).Cells(1).Value = brinco Or Month(Me.listapesquisa.Rows(zz).Cells(13).Value >= dtFinal And Year(Me.listapesquisa.Rows(zz).Cells(13).Value = dtFinal)) Then
listapesquisa.Rows.Remove(listapesquisa.Rows(zz))
End If
Next zz
End If

[ô]Colocar cor em linha espeficica com criterio
For a As Integer = 0 To listapesquisa.Rows.Count - 1
If listapesquisa.Rows(a).Cells(6).Value = [Ô]Touro[Ô] Then
listapesquisa.Rows(a).DefaultCellStyle.ForeColor = Color.Blue
End If
Next a

[ô]Colocar cor na celula espeficica com criterio e ao selecionar fica em branco a celula que contem 01/01/1900
For b As Integer = 0 To listapesquisa.Rows.Count - 1
If listapesquisa.Rows(b).Cells(4).Value = [Ô]01/01/1900[Ô] Then
listapesquisa.Rows(b).Cells(4).Style.ForeColor = Color.White
listapesquisa.Rows(b).Cells(4).Style.SelectionBackColor = Color.White
End If
Next b

Dim linhavazia As String

For c As Integer = 0 To Me.listapesquisa.Rows.Count - 1
If Not Me.listapesquisa.Rows(c).Cells(13).Value Is DBNull.Value Then
linhavazia = Me.listapesquisa.Rows(c).Cells(13).Value.ToString
Else
linhavazia = [Ô]01/01/1900[Ô]
listapesquisa.Rows(c).Cells(13).Style.ForeColor = Color.White
listapesquisa.Rows(c).Cells(13).Style.SelectionBackColor = Color.White
End If
Next c

[ô]Soma dos animais na consulta
Dim soma As Integer = 0
Dim soma1 As Integer = 0
Dim soma2 As Integer = 0
Dim soma3 As Integer = 0

[ô]total da coluna por criterio exemplo coluna 7 criterio Vaca Local
For i = 0 To listapesquisa.Rows.Count - 1
If listapesquisa.Rows(i).Cells(7).Value.ToString = [Ô]Vaca Local[Ô] Then
soma += 1
End If
Next
totalvaca.Text = [Ô]Total de Vacas: [Ô] & soma.ToString

For j = 0 To listapesquisa.Rows.Count - 1
If listapesquisa.Rows(j).Cells(7).Value.ToString = [Ô]Vaca Leiteira Local[Ô] Then
soma1 += 1
End If
Next
totalvacaleite.Text = [Ô]Total de Vacas Leiteiras: [Ô] & soma1.ToString

For l = 0 To listapesquisa.Rows.Count - 1
If listapesquisa.Rows(l).Cells(7).Value.ToString = [Ô]Novilha Cab. Local[Ô] Then
soma2 += 1
End If
Next
totalnovilha.Text = [Ô]Total de Novilha(s) Cabeceira(s): [Ô] & soma2.ToString

For m = 0 To listapesquisa.Rows.Count - 1
If listapesquisa.Rows(m).Cells(7).Value.ToString = [Ô]Touro Local[Ô] Then
soma3 += 1
End If
Next
totaltouro.Text = [Ô]Total de Bois: [Ô] & soma3.ToString
[ô]total da pesquisa
totalpesquisa.Text = listapesquisa.RowCount.ToString

Con.Close()
Con.Dispose()

Catch ex As OleDbException
MsgBox(ex.Message)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
GUIMORAES 03/05/2017 14:58:24
#473701
A mensagem de erro é explicita, você está tentando converter um tipo booleano em um tipo data.
JONASJTG 03/05/2017 15:08:19
#473702
e como eu faço para corrigir isso?
LLAIA 03/05/2017 15:53:53
#473704
Quando vc chama uma das funções Year ou Month em cima de um valor de uma célula do grid, deve tá pegando uma célula com valor booleano. Verifique se é essa célula mesmo que vc quer.

Acho que é isso.
JONASJTG 03/05/2017 16:01:34
#473705
agradeço ao dois por me dar essas dicas!

esta consulta que estou tendo problema neste código abaixo!

O que estou tentando fazer!

e que ele verifique identificação ou mes e ano se for = ou maior ele apague o resto das linhas se mostre o que não esta nestes critérios e isso que estou tentando fazer.
as outras partes da consulta está ok.

Cells(1).Value identificação
Cells(13).Value datadavacinação

Dim contavacina As Int32 = (Me.listapesquisa.RowCount - 1)
Dim brinco As String
Dim contamesvacina As String

For zz = contavacina To 0 Step -1
brinco = listapesquisa.Rows(zz).Cells(1).Value
contamesvacina = listapesquisa.Rows(zz).Cells(13).Value
If Me.listapesquisa.Rows(zz).Cells(1).Value = brinco Or Month(Me.listapesquisa.Rows(zz).Cells(13).Value >= dtFinal And Year(Me.listapesquisa.Rows(zz).Cells(13).Value = dtFinal)) Then
listapesquisa.Rows.Remove(listapesquisa.Rows(zz))
End If
Next zz

GUIMORAES 03/05/2017 16:51:32
#473709
JONASJTG,

Você já tentou debugar seu código, para tentar identificar onde está o erro?
Normalmente quando utilizamos uma grid, as células corresponde a um índice, correto? Se eu trocar a coluna de lugar, o índice continua o mesmo, porém ele é reorganizado para que possa ficar na estrutura correta. O que pode estar acontecendo é que você está tentando ler o valor de uma coluna que está como booleano, e está achando que a informação do campo que deseja está correta, por este motivo realizar o debug é importante, para que você possa identificar qual o valor está dentro do objeto.

O que você pode fazer, é pegar o valor do campo pelo seu nome, e não pelo seu indexador.
ex:

  
If Me.listapesquisa.Rows(zz).Cells([Ô]NomeDaColunaBrinco[Ô]).Value = brinco Or Month(Me.listapesquisa.Rows(zz).Cells([Ô]NomeDaColunaDataInicial[Ô]).Value >= dtFinal And Year(Me.listapesquisa.Rows(zz).Cells([Ô]NomeDaColunaDataFinal[Ô]).Value = dtFinal)) Then
listapesquisa.Rows.Remove(listapesquisa.Rows(zz))
End If


PERCIFILHO 04/05/2017 08:35:04
#473714
é como o Guimoraes disse.
Esse é um dos muitos [Ô]erros[Ô] que muita gente comete ao trabalhar com colunas do grid: pegar o índice da coluna e não o nome. Se você tiver 20 colunas no grid e de repente quiser incluir uma coluna no meio dessas 20, ficaria difícil pra pegar os valores das colunas pelo índice, por isso o uso correto é pegar o valor da coluna pelo nome dela, daí, se você incluir quantas colunas quiser, não precisará modificar o código. Eu mesmo, quando comecei, cometi muito esse erro e quando tinha que acrescentar alguma coluna no grid, tinha que rever todo o código e fazer as alterações. Pura perda de tempo. Por isso, procure utilizar sempre o nome da coluna e não o seu índice. Abraços.
JONASJTG 04/05/2017 09:23:09
#473716
Bom dia a todos apos seguir as dicas que vcs deram eu revisei é entre aspas descobri o que era!
Para este erro
conversion from type [ô]boolean[ô] to type [ô]date[ô] is not valid

Era porque a data estava com formatado errado quando era puxado pela grid exemplo:

04/05/2017

na grid ele via 05/04/2017 resolve desta forma alterando as consultas de datas.

PesquisaSQL = PesquisaSQL & [Ô]WHERE orv.dtvacina >= #[Ô] & Format(dtpInicio.Value, [Ô]MM/dd/yyyy[Ô]) & [Ô]# AND orv.dtvacina <= #[Ô] & Format(dtpfim.Value, [Ô]MM/dd/yyyy[Ô]) & [Ô]#[Ô]

Mas na mesma linha da este erro abaixo que nem sei o que e

Additional information: Overload resolution failed because no Public [ô]>=[ô] can be called with these arguments:

Dim contavacina As Int32 = (Me.listapesquisa.RowCount - 1)
Dim brinco As String

For zz = contavacina To 0 Step -1
brinco = listapesquisa.Rows(zz).Cells(1).Value

If Me.listapesquisa.Rows(zz).Cells([Ô]brinco[Ô]).Value = brinco Or Month(Me.listapesquisa.Rows(zz).Cells([Ô]dtvacina[Ô]).Value >= dtpfim And Year(Me.listapesquisa.Rows(zz).Cells([Ô]dtvacina[Ô]).Value = dtpfim)) Then
listapesquisa.Rows.Remove(listapesquisa.Rows(zz))
End If
Next zz

JONASJTG 05/05/2017 15:10:38
#473760
Boa Pessoal!

Peço humildemente ajuda de você negocio ta tenso faz 5 dias que to tentando e nada!
JONASJTG 10/05/2017 13:16:30
#473872
Boa Tarde!

Ainda não consegui fazer a consulta!

Talvez eu explicando alguem possa me da uma luz!

o que preciso nesta consulta e mostra quais animais não vacino no mês e ano exemplo.

Exemplo:
No ano tem duas vacinações no mes de MAIO e em novembro!
animal 0001 vacino em MAIO 01/05/2016
animal 0001 não vacino em Novembro 30/11/2016

Como eu faço para mostrar os animais que não vacino na datagridview

estou tentando este código mas ainda não deu certo alguém pode me ajudar?

Dim prevRow As Integer = 0
Dim brinco As String

For Each Row As DataGridViewRow In listapesquisa.Rows

brinco = listapesquisa.Rows(prevRow).Cells(1).Value

If Me.listapesquisa.Rows(prevRow).Cells([Ô]brinco[Ô]).Value = brinco Or Month(Me.listapesquisa.Rows(prevRow).Cells([Ô]dtvacina[Ô]).Value) >= Mes And Year(Me.listapesquisa.Rows(prevRow).Cells([Ô]dtvacina[Ô]).Value) = Ano Then
listapesquisa.Rows.Remove(listapesquisa.Rows(prevRow))
End If
prevRow += 1
Next

Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas