AJUDAR EM CONSULTA SQL!
Ai Pessoal blz.
Não sei se e o lugar correto de postar caso esteja errado já peço desculpas!
Tenho esta consulta que esta funcionado ok.
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
Mas preciso que nesta consulta só traga a ultima da vacina exemplo.
id brinco dtvacina
1 10 12/06/2016
1 10 13/06/2016
1 10 14/06/2016
Resultado seria
id brinco dtvacina
1 10 14/06/2016
Não sei se e o lugar correto de postar caso esteja errado já peço desculpas!
Tenho esta consulta que esta funcionado ok.
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
Mas preciso que nesta consulta só traga a ultima da vacina exemplo.
id brinco dtvacina
1 10 12/06/2016
1 10 13/06/2016
1 10 14/06/2016
Resultado seria
id brinco dtvacina
1 10 14/06/2016
Tente
ComandoSQL = [Ô]SELECT Top 1 Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]# order by orv.dtvacina desc[Ô]
ComandoSQL = [Ô]SELECT Top 1 Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]# order by orv.dtvacina desc[Ô]
Não deu certo!
Vou postar todo código para ter uma ideia melhor!(se não for suficiente posto um modelo para melhor analise!)
Private Sub filtro_multi_Click()
On Error GoTo trata_erro
Dim brinco As String
Dim pbrinco As String
Dim Nantigo As String
Dim Animal As String
Dim Especificar As String
Dim Observacoes As String
Dim ativo As String
Dim vacinado As String
Dim ComandoSQL As String
Dim i As Integer
Dim Soma As Double
Dim Soma2 As Double
Dim Soma3 As Double
Dim Soma4 As Double
Application.ScreenUpdating = False
brinco = txtBrincop.Text
pbrinco = txtpbrincop.Text
Nantigo = txtNantigop.Text
Animal = txtanimalp.Text
Especificar = txtEspecificarp.Text
Observacoes = txtObservacoesp.Text
ativo = txtativop.Text
vacinado = txtvacinadop.Text
If txt_data_inicial.Text = [Ô][Ô] Or txt_data_final.Text = [Ô][Ô] Then
If Me.optDataNasc.Value = False Or Me.optDataVacina.Value = False Then
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1, Origemvacina orv WHERE or1.Brinco = orv.Brinco[Ô]
End If
End If
If Me.optDataNasc.Value = True Then
data_inicial = Format(Me.txt_data_inicial, [Ô]mm/dd/yyyy[Ô])
data_final = Format(Me.txt_data_final, [Ô]mm/dd/yyyy[Ô])
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
End If
If Me.optDataVacina.Value = True Then
data_inicial = Format(Me.txt_data_inicial, [Ô]mm/dd/yyyy[Ô])
data_final = Format(Me.txt_data_final, [Ô]mm/dd/yyyy[Ô])
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco WHERE orv.dtvacina Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
End If
If brinco = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Brinco like[ô][Ô] & brinco & [Ô][ô] [Ô]
End If
If pbrinco = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Pbrinco like[ô][Ô] & pbrinco & [Ô][ô] [Ô]
End If
If Nantigo = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Nantigo like[ô][Ô] & Nantigo & [Ô][ô] [Ô]
End If
If Animal = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Animal like[ô][Ô] & Animal & [Ô][ô] [Ô]
End If
If Especificar = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Especificar like[ô][Ô] & Especificar & [Ô][ô] [Ô]
End If
If Observacoes = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Observacoes like[ô][Ô] & Observacoes & [Ô][ô] [Ô]
End If
If ativo = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.ativo like[ô][Ô] & ativo & [Ô][ô] [Ô]
End If
If vacinado = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND orv.vacinado like[ô][Ô] & vacinado & [Ô][ô] [Ô]
End If
Call Conecta
Set consulta = banco.OpenRecordset(ComandoSQL)
lstLista.ListItems.Clear
lstLista.ColumnHeaders.Clear
With lstLista
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
.ColumnHeaders.Add(, , [Ô]Nº[Ô], Width:=100).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Brinco[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]P.Brinco[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]NºAnca[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Nascimento[Ô], Width:=10).Tag = [Ô]date[Ô]
.ColumnHeaders.Add(, , [Ô]Raca[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Animal[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Situação[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Fazenda[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Observações[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Era(Idade Atual)[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Ativo[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Vacinação[Ô], Width:=10).Tag = [Ô]date[Ô]
.ColumnHeaders.Add(, , [Ô]Vac.[Ô], Width:=48).Tag = [Ô][Ô]
End With
While Not consulta.EOF
Set List = lstLista.ListItems.Add(Text:=consulta(0)) [ô]id
[ô]Deixa em branco se a data estiver zerada
If consulta(1) = [Ô]0000[Ô] Then
List.SubItems(1) = [Ô][Ô]
Else
List.SubItems(1) = consulta(1)
End If [ô]Brinco
If consulta(2) = [Ô]0000[Ô] Then
List.SubItems(2) = [Ô][Ô]
Else
List.SubItems(2) = consulta(2)
End If [ô]Pbrinco
If consulta(3) = [Ô]0000[Ô] Then
List.SubItems(3) = [Ô][Ô]
Else
List.SubItems(3) = consulta(3)
End If [ô]Nantigo
If consulta(4) = [Ô]00:00:00[Ô] Then
List.SubItems(4) = [Ô][Ô]
Else: List.SubItems(4) = consulta(4)
End If [ô]DatadeNasc
List.SubItems(5) = consulta(5) [ô]raca
List.SubItems(6) = consulta(6) [ô]animal
List.SubItems(7) = consulta(7) [ô]Especificar
List.SubItems(8) = consulta(8) [ô]fazenda
List.SubItems(9) = consulta(9) [ô]Observacoes
List.SubItems(10) = consulta(10) [ô]IdadeAtualdasVacas
List.SubItems(11) = consulta(11) [ô]ativo
If consulta(12) = [Ô]00:00:00[Ô] Then
List.SubItems(12) = [Ô][Ô]
Else: List.SubItems(12) = consulta(12)
End If [ô]Vacinação
List.SubItems(13) = consulta(13) [ô]Vac.
consulta.MoveNext
Wend
Dim x, j As Integer
For x = 1 To Me.lstLista.ListItems.Count
With Me.lstLista
If .ListItems(x).ListSubItems(11).Text = [Ô]Não[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbRed
Next
ElseIf .ListItems(x).ListSubItems(7).Text = [Ô]Novilha Cab. Local[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbBlack
Next
ElseIf .ListItems(x).ListSubItems(7).Text = [Ô]Vaca Leiteira Local[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbBlack
Next
ElseIf .ListItems(x).ListSubItems(7).Text = [Ô]Touro Local[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbBlue
Next
End If
End With
Next
Call Desconecta
Call RedimensionaColuna
Me.lbl_registros = Me.lstLista.ListItems.Count & [Ô] Animal(is) encontrado(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Vaca Local[Ô] Then
Soma = Soma + 1
End If
Next i
Me.lbl_registros2 = Soma & [Ô] Vaca(s) encontrada(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Novilha Cab. Local[Ô] Then
Soma2 = Soma2 + 1
End If
Next i
Me.lbl_registros3 = Soma2 & [Ô] Novilha(s) Cabeceira(s) encontrada(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Vaca Leiteira Local[Ô] Then
Soma3 = Soma3 + 1
End If
Next i
Me.lbl_registros4 = Soma3 & [Ô] Vaca Leiteira(s) encontrada(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Touro Local[Ô] Then
Soma4 = Soma4 + 1
End If
Next i
Me.lbl_registros5 = Soma4 & [Ô] Touro(s) encontrada(s).[Ô]
trata_erro:
Call RedimensionaColuna
End Sub
Vou postar todo código para ter uma ideia melhor!(se não for suficiente posto um modelo para melhor analise!)
Private Sub filtro_multi_Click()
On Error GoTo trata_erro
Dim brinco As String
Dim pbrinco As String
Dim Nantigo As String
Dim Animal As String
Dim Especificar As String
Dim Observacoes As String
Dim ativo As String
Dim vacinado As String
Dim ComandoSQL As String
Dim i As Integer
Dim Soma As Double
Dim Soma2 As Double
Dim Soma3 As Double
Dim Soma4 As Double
Application.ScreenUpdating = False
brinco = txtBrincop.Text
pbrinco = txtpbrincop.Text
Nantigo = txtNantigop.Text
Animal = txtanimalp.Text
Especificar = txtEspecificarp.Text
Observacoes = txtObservacoesp.Text
ativo = txtativop.Text
vacinado = txtvacinadop.Text
If txt_data_inicial.Text = [Ô][Ô] Or txt_data_final.Text = [Ô][Ô] Then
If Me.optDataNasc.Value = False Or Me.optDataVacina.Value = False Then
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1, Origemvacina orv WHERE or1.Brinco = orv.Brinco[Ô]
End If
End If
If Me.optDataNasc.Value = True Then
data_inicial = Format(Me.txt_data_inicial, [Ô]mm/dd/yyyy[Ô])
data_final = Format(Me.txt_data_final, [Ô]mm/dd/yyyy[Ô])
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
End If
If Me.optDataVacina.Value = True Then
data_inicial = Format(Me.txt_data_inicial, [Ô]mm/dd/yyyy[Ô])
data_final = Format(Me.txt_data_final, [Ô]mm/dd/yyyy[Ô])
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco WHERE orv.dtvacina Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
End If
If brinco = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Brinco like[ô][Ô] & brinco & [Ô][ô] [Ô]
End If
If pbrinco = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Pbrinco like[ô][Ô] & pbrinco & [Ô][ô] [Ô]
End If
If Nantigo = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Nantigo like[ô][Ô] & Nantigo & [Ô][ô] [Ô]
End If
If Animal = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Animal like[ô][Ô] & Animal & [Ô][ô] [Ô]
End If
If Especificar = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Especificar like[ô][Ô] & Especificar & [Ô][ô] [Ô]
End If
If Observacoes = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.Observacoes like[ô][Ô] & Observacoes & [Ô][ô] [Ô]
End If
If ativo = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND or1.ativo like[ô][Ô] & ativo & [Ô][ô] [Ô]
End If
If vacinado = [Ô][Ô] Then
Else
ComandoSQL = ComandoSQL & [Ô] AND orv.vacinado like[ô][Ô] & vacinado & [Ô][ô] [Ô]
End If
Call Conecta
Set consulta = banco.OpenRecordset(ComandoSQL)
lstLista.ListItems.Clear
lstLista.ColumnHeaders.Clear
With lstLista
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
.ColumnHeaders.Add(, , [Ô]Nº[Ô], Width:=100).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Brinco[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]P.Brinco[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]NºAnca[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Nascimento[Ô], Width:=10).Tag = [Ô]date[Ô]
.ColumnHeaders.Add(, , [Ô]Raca[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Animal[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Situação[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Fazenda[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Observações[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Era(Idade Atual)[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Ativo[Ô], Width:=10).Tag = [Ô][Ô]
.ColumnHeaders.Add(, , [Ô]Vacinação[Ô], Width:=10).Tag = [Ô]date[Ô]
.ColumnHeaders.Add(, , [Ô]Vac.[Ô], Width:=48).Tag = [Ô][Ô]
End With
While Not consulta.EOF
Set List = lstLista.ListItems.Add(Text:=consulta(0)) [ô]id
[ô]Deixa em branco se a data estiver zerada
If consulta(1) = [Ô]0000[Ô] Then
List.SubItems(1) = [Ô][Ô]
Else
List.SubItems(1) = consulta(1)
End If [ô]Brinco
If consulta(2) = [Ô]0000[Ô] Then
List.SubItems(2) = [Ô][Ô]
Else
List.SubItems(2) = consulta(2)
End If [ô]Pbrinco
If consulta(3) = [Ô]0000[Ô] Then
List.SubItems(3) = [Ô][Ô]
Else
List.SubItems(3) = consulta(3)
End If [ô]Nantigo
If consulta(4) = [Ô]00:00:00[Ô] Then
List.SubItems(4) = [Ô][Ô]
Else: List.SubItems(4) = consulta(4)
End If [ô]DatadeNasc
List.SubItems(5) = consulta(5) [ô]raca
List.SubItems(6) = consulta(6) [ô]animal
List.SubItems(7) = consulta(7) [ô]Especificar
List.SubItems(8) = consulta(8) [ô]fazenda
List.SubItems(9) = consulta(9) [ô]Observacoes
List.SubItems(10) = consulta(10) [ô]IdadeAtualdasVacas
List.SubItems(11) = consulta(11) [ô]ativo
If consulta(12) = [Ô]00:00:00[Ô] Then
List.SubItems(12) = [Ô][Ô]
Else: List.SubItems(12) = consulta(12)
End If [ô]Vacinação
List.SubItems(13) = consulta(13) [ô]Vac.
consulta.MoveNext
Wend
Dim x, j As Integer
For x = 1 To Me.lstLista.ListItems.Count
With Me.lstLista
If .ListItems(x).ListSubItems(11).Text = [Ô]Não[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbRed
Next
ElseIf .ListItems(x).ListSubItems(7).Text = [Ô]Novilha Cab. Local[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbBlack
Next
ElseIf .ListItems(x).ListSubItems(7).Text = [Ô]Vaca Leiteira Local[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbBlack
Next
ElseIf .ListItems(x).ListSubItems(7).Text = [Ô]Touro Local[Ô] Then
For j = 1 To .ColumnHeaders.Count - 1
.ListItems(x).ListSubItems(j).ForeColor = vbBlue
Next
End If
End With
Next
Call Desconecta
Call RedimensionaColuna
Me.lbl_registros = Me.lstLista.ListItems.Count & [Ô] Animal(is) encontrado(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Vaca Local[Ô] Then
Soma = Soma + 1
End If
Next i
Me.lbl_registros2 = Soma & [Ô] Vaca(s) encontrada(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Novilha Cab. Local[Ô] Then
Soma2 = Soma2 + 1
End If
Next i
Me.lbl_registros3 = Soma2 & [Ô] Novilha(s) Cabeceira(s) encontrada(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Vaca Leiteira Local[Ô] Then
Soma3 = Soma3 + 1
End If
Next i
Me.lbl_registros4 = Soma3 & [Ô] Vaca Leiteira(s) encontrada(s).[Ô]
For i = 1 To lstLista.ListItems.Count
If lstLista.ListItems.Item(i).SubItems(7) = [Ô]Touro Local[Ô] Then
Soma4 = Soma4 + 1
End If
Next i
Me.lbl_registros5 = Soma4 & [Ô] Touro(s) encontrada(s).[Ô]
trata_erro:
Call RedimensionaColuna
End Sub
Mas deu algum erro com o código que te mandei?, qual banco de dados vc esta usando?, access?
Jonas primeiro fale para nós qual o banco que esta usando
Vou colocar as duas opções mais usadas
Seu comando
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco
WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
comando ajustado - Access
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco
WHERE or1.DatadeNasc Between #[Ô] & format(cdate(data_inicial),[Ô]MM/DD/YYYY[Ô]) & [Ô]# And #[Ô] & format(cdate(data_final),[Ô]MM/DD/YYYY[Ô]) & [Ô]# order by orv.dtvacina DESC[Ô]
comando ajustado - Mysql
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco
WHERE or1.DatadeNasc Between [ô][Ô] & format(cdate(data_inicial),[Ô]YYYY-MM-DD[Ô]) & [Ô][ô] And [ô][Ô] & format(cdate(data_final),[Ô]YYYY-MM-DD[Ô]) & [Ô][ô] order by orv.dtvacina DESC[Ô]
Acredito que com isso resolva o seu problema, a data para o Access tem que ser formatada em mes/dia/ano e tem que ser entre # e para o mysql tem que ano-mes-dia e tem que ser entre [ô] , e tem que colocar a ordenação como DESC na data que vc deseja selecionar no caso a orv.dtvacina , dessa forma a data vem da mais recente para a mais velha, trazendo como a primeira opção a data que vc deseja, pode usar também o TOP 1 que o Luiz também colocou, más a de qqer forma o seu primeiro registro será a data que deseja.
Bom acho que é isso, qqer coisa posta ai a dúvida e se der algum erro também, senão não esqueça de encerrar o tópico
Vou colocar as duas opções mais usadas
Seu comando
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco
WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
comando ajustado - Access
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco
WHERE or1.DatadeNasc Between #[Ô] & format(cdate(data_inicial),[Ô]MM/DD/YYYY[Ô]) & [Ô]# And #[Ô] & format(cdate(data_final),[Ô]MM/DD/YYYY[Ô]) & [Ô]# order by orv.dtvacina DESC[Ô]
comando ajustado - Mysql
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco
WHERE or1.DatadeNasc Between [ô][Ô] & format(cdate(data_inicial),[Ô]YYYY-MM-DD[Ô]) & [Ô][ô] And [ô][Ô] & format(cdate(data_final),[Ô]YYYY-MM-DD[Ô]) & [Ô][ô] order by orv.dtvacina DESC[Ô]
Acredito que com isso resolva o seu problema, a data para o Access tem que ser formatada em mes/dia/ano e tem que ser entre # e para o mysql tem que ano-mes-dia e tem que ser entre [ô] , e tem que colocar a ordenação como DESC na data que vc deseja selecionar no caso a orv.dtvacina , dessa forma a data vem da mais recente para a mais velha, trazendo como a primeira opção a data que vc deseja, pode usar também o TOP 1 que o Luiz também colocou, más a de qqer forma o seu primeiro registro será a data que deseja.
Bom acho que é isso, qqer coisa posta ai a dúvida e se der algum erro também, senão não esqueça de encerrar o tópico
Bom dia pessoal!
Queria agradecer pelas dicas mas não entendo pq não da certo. Vou postar o projeto para vcs se puder me ajudar se for possÃvel!
Sou iniciante e estou aprendendo tudo na raça então se puder agradeço bastante!
Queria agradecer pelas dicas mas não entendo pq não da certo. Vou postar o projeto para vcs se puder me ajudar se for possÃvel!
Sou iniciante e estou aprendendo tudo na raça então se puder agradeço bastante!
Amigo faça assim na consulta, o top logo depois do distinct
ComandoSQL = [Ô]SELECT Distinct Top 1 or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]# order by orv.dtvacina desc[Ô]
ComandoSQL = [Ô]SELECT Distinct Top 1 or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 inner join Origemvacina orv on or1.Brinco = orv.Brinco WHERE or1.DatadeNasc Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]# order by orv.dtvacina desc[Ô]
Vamos lá
Primeiro - onde vc esta desenvolvendo é em VBA, é diferente do VB6, más o comando SQL vai funcionar
Segundo - vc esta tentando fazer o sql entender um texto como data, pois a variável que vc colocou, esta guardando a data apenas como se fosse um texto
Terceiro - vc não esta colocando o comando inteiro como foi falado para vc
O comando que vc deve usar é assim, esquece as variáveis que vc criou Data_inicial e Data_Final
Vamos usar somente o format e cdate, isso deverá resolver o seu problema
Esse é o seu comando
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco WHERE orv.dtvacina Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
Esse é o comando ajustado
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco
WHERE orv.dtvacina Between #[Ô] & format(cdate(Me.txt_data_inicial),[Ô]MM/DD/YYYY[Ô]) & [Ô]# And #[Ô] & format(cdate(Me.txt_data_final),[Ô]MM/DD/YYYY[Ô]) & [Ô]# order by orv.dtvacina DESC[Ô]
Nesse comando transformei o que foi digitado em data - comando CDATE - dessa forma o sql sabe que aquilo é uma data e usei o format para deixa na formatação correta
No meu pc não rodou o projeto porque não tenho os itens do VBA instalado, porque eu não uso, más testa ai, qqer coisa da um toque
Primeiro - onde vc esta desenvolvendo é em VBA, é diferente do VB6, más o comando SQL vai funcionar
Segundo - vc esta tentando fazer o sql entender um texto como data, pois a variável que vc colocou, esta guardando a data apenas como se fosse um texto
Terceiro - vc não esta colocando o comando inteiro como foi falado para vc
O comando que vc deve usar é assim, esquece as variáveis que vc criou Data_inicial e Data_Final
Vamos usar somente o format e cdate, isso deverá resolver o seu problema
Esse é o seu comando
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco WHERE orv.dtvacina Between #[Ô] & data_inicial & [Ô]# And #[Ô] & data_final & [Ô]#[Ô]
Esse é o comando ajustado
ComandoSQL = [Ô]SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado FROM Origem or1 LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco
WHERE orv.dtvacina Between #[Ô] & format(cdate(Me.txt_data_inicial),[Ô]MM/DD/YYYY[Ô]) & [Ô]# And #[Ô] & format(cdate(Me.txt_data_final),[Ô]MM/DD/YYYY[Ô]) & [Ô]# order by orv.dtvacina DESC[Ô]
Nesse comando transformei o que foi digitado em data - comando CDATE - dessa forma o sql sabe que aquilo é uma data e usei o format para deixa na formatação correta
No meu pc não rodou o projeto porque não tenho os itens do VBA instalado, porque eu não uso, más testa ai, qqer coisa da um toque
Bom dia a todos!
Eu segui as suas instruções ALVAROVB2009 mas não deu certo.
Quando clico em pesquisar nada acontece não sei o porque.
Se alguém puder olhar o projeto e dar umas dicas agradeço bastante!
Eu segui as suas instruções ALVAROVB2009 mas não deu certo.
Quando clico em pesquisar nada acontece não sei o porque.
Se alguém puder olhar o projeto e dar umas dicas agradeço bastante!
Jonas, peguei o comando
SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado
FROM Origem or1
LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco
WHERE orv.dtvacina Between #01/01/2000# And #01/01/2020#
order by orv.dtvacina desc
Esse comando é uma simulação que alguém queira fazer a pesquisa entre esse perÃodo e rodei no seu banco e me trouxe vários resultados que vc precisa, então ajustei o que faltava aqui para rodar o seu projeto e ver onde poderia estar dando o problema para não trazer os dados, e verifiquei que vc tirou todos os objetos, sendo que não seria viável para mim colocar todos os objetos para fazer funcionar
Então acredito que possa ser algo no momento que esteja alimentando o seu list
SELECT Distinct or1.*, orv.dtvacina,orv.Vacinado
FROM Origem or1
LEFT JOIN Origemvacina orv on or1.Brinco = orv.Brinco
WHERE orv.dtvacina Between #01/01/2000# And #01/01/2020#
order by orv.dtvacina desc
Esse comando é uma simulação que alguém queira fazer a pesquisa entre esse perÃodo e rodei no seu banco e me trouxe vários resultados que vc precisa, então ajustei o que faltava aqui para rodar o seu projeto e ver onde poderia estar dando o problema para não trazer os dados, e verifiquei que vc tirou todos os objetos, sendo que não seria viável para mim colocar todos os objetos para fazer funcionar
Então acredito que possa ser algo no momento que esteja alimentando o seu list
Bom dia Alvaro!
Eu não entendi muito o que disse mas a parte que eu entende!
Eu uso e comado SQL alimentar a listview.
Eu não entende essa parte [Ô]VC TIROU TODOS OS OBJETOS[Ô]
O projeto isso mesmo as tabelas estão certas pra fazer pesquisa esta tudo ai nao entende o que ta faltando.
Eu não entendi muito o que disse mas a parte que eu entende!
Eu uso e comado SQL alimentar a listview.
Eu não entende essa parte [Ô]VC TIROU TODOS OS OBJETOS[Ô]
O projeto isso mesmo as tabelas estão certas pra fazer pesquisa esta tudo ai nao entende o que ta faltando.
Tópico encerrado , respostas não são mais permitidas