Amigo vieira.. eu dei uma dica ao colega em outro tópico.. ele quer aprender como fazer a consulta completa com filtro em VBA...
No aplicativo que estamos desenvolvendo utilizei isto:
Primeiramente ele pode criar a consulta em access, depois abrir no modo SQL e copiar a SQL a aplicar em VBA, logicamente com algumas modificações ..
Algumas das modificações do SQL para SQL/VBA
1- para campos nao acoplado com calculos, se a SQL utiliza ; em VBA deve ser substituido por ,
2 - Em criterios que utilizam " por exemplo
"NomeTexto" seria 'NomeTexto'
Format(CampoData;"dd/mm/yyyy")
em VBA tem que ser
Format(CampoData,"dd/mm/yyyy")
Primeiramente declaramos a variável que conterá a SQL
Dim StrSQL as String
Carregamos a Variável com a SQL/VBA
Observe que aqui utilizei a quebra de linha
Cada linha tem que estar entre aspas Duplas " linha "
Observe uma fração do codigo abaixo
"SELECT tabrecepcao.ID_Recepcao AS Num, tabgranjas.CpNomeGranja AS Granja," _
ao final das " de um espaço e coloque o Underline para indicar a quebra e na próxima lina o sinal de concatenação & para indicar a junção das linhas seguintes, observando que após ela inicia a linha com aspas duplas novamente
Modificar o nome da coluna
Observe abaixo que eu cito primeiramente a tabela e depois o campo
Em seguida indico qual o nome eu quero para a coluna:
As Granja
1 - Apos o campo, se for outro campo ser precedido de ,
2 - Terminado os campos não necessita a , podes observar abaixo que antes da clausula FROM não há vírgula.
em Resumo a sintaxe da SQL diz
SELECIONE (nomedoscampos) FROM (vindo da tabela X) WHERE (quando..aqui o filtro) xxx = xxx Or (indica alternativa) End (indica que quer que seja existente o filtro x e o Y)
StrSql = "SELECT tabrecepcao.ID_Recepcao AS Num, tabgranjas.CpNomeGranja AS Granja," _
& "tabrecepcao.CpData AS [Data Rec], Format([CpData],'mmmm') AS Mês," _
& "Format([CpData],'ww') AS Semana, tabrecepcao.CpGuiaTransitoAnimal AS Guia," _
& "tabrecepcao.CpPlacaCaminhao AS Placa, tabrecepcao.CpNumeroTicketPesagem AS Ticket," _
& "tabrecepcao.CpSexo AS Sexo, tabrecepcao.CpTipo AS Tipo, tabrecepcao.CpQuantidadeRecebidaCabeca AS [Qtd Rec Cb]," _
& "tabrecepcao.CpQuantidadeRecebidaKg AS [Qtd Rec Kg], ([CpQuantidadeRecebidaKg])/([CpQuantidadeRecebidaCabeca]) AS PesoMedio," _
& "tabrecepcao.CpMortalidadeTransporteCabeca AS [Mort Cab], ([CpMortalidadeTransporteCabeca])*([PesoMedio]) AS [Mort Tpt Kg]," _
& "(([CpMortalidadeTransporteCabeca])/([CpQuantidadeRecebidaCabeca]))*100 AS [Mort Tpt %], tabrecepcao.CpCondenacaoTotalCabeca AS [Cond Cab]," _
& "([CpCondenacaoTotalCabeca])*([PesoMedio]) AS [Cond Kg], (([CpCondenacaoTotalCabeca])/([CpQuantidadeRecebidaCabeca]))*100 AS [Cond Total%]," _
& "([CpQuantidadeRecebidaCabeca])-([CpMortalidadeTransporteCabeca])-([CpCondenacaoTotalCabeca]) AS [Qtd Abt Cb]," _
& "([Qtd Abt Cb])*([PesoMedio]) AS [Qtd Abt Kg], tabrecepcao.CpHoraSaidaGranja AS [Saida Granja]," _
& "tabrecepcao.CpHoraChegadaEmpresa AS [Cheg Empresa], tabrecepcao.CpHoraInicioAbate AS [Inicio Abate]," _
& "tabrecepcao.CpHoraTerminoAbate AS [Fim Abate], (([CpQuantidadeAvesGaiola1])+([CpQuantidadeAvesGaiola2])+([CpQuantidadeAvesGaiola3])" _
& "+([CpQuantidadeAvesGaiola4])+([CpQuantidadeAvesGaiola5])+([CpQuantidadeAvesGaiola6])+([CpQuantidadeAvesGaiola7])" _
& "+([CpQuantidadeAvesGaiola8])+([CpQuantidadeAvesGaiola9])+([CpQuantidadeAvesGaiola10]))/10 AS [Media Gaiola]," _
& "tabrecepcao.CpQuantidadeAvesGaiola1 AS [Gaiola 1], tabrecepcao.CpQuantidadeAvesGaiola2 AS [Gaiola 2]," _
& "tabrecepcao.CpQuantidadeAvesGaiola3 AS [Gaiola 3], tabrecepcao.CpQuantidadeAvesGaiola4 AS [Gaiola 4]," _
& "tabrecepcao.CpQuantidadeAvesGaiola5 AS [Gaiola 5], tabrecepcao.CpQuantidadeAvesGaiola6 AS [Gaiola 6]," _
& "tabrecepcao.CpQuantidadeAvesGaiola7 AS [Gaiola 7], tabrecepcao.CpQuantidadeAvesGaiola8 AS [Gaiola 8]," _
& "tabrecepcao.CpQuantidadeAvesGaiola9 AS [Gaiola 9], tabrecepcao.CpQuantidadeAvesGaiola10 AS [Gaiola 10]" _
& " FROM tabgranjas LEFT JOIN tabrecepcao ON tabgranjas.ID_Granja = tabrecepcao.ID_Granja_Rel" _
& " WHERE (((tabrecepcao.ID_Recepcao) Is Not Null)) And ((tabrecepcao.CpData >=#" & Format(Me.DataInicial, "mm/dd/yyyy") & "#) And (tabrecepcao.CpData <=#" & Format(Me.DataFinal, "mm/dd/yyyy") & "#))"
Cumprimentos