NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
Nota: Se você não tiver disponível a consulta Totais por Pedido, utilize qualquer outra consulta disponível.Abra o banco de dados Semana2.mdb
Vá para a Guia Consultas
Dê um clique na consulta Totais por Pedido
Dê um clique no botão Estrutura
Selecione o comando Exibir -> Modo SQL. Seré exibido o comando SQL indicado a seguir: SELECT Pedidos.NúmeroDoPedido, Sum(([Quantidade]*[PreçoUnitário])*(1-[Desconto]))
AS TotalPorPedido
FROM Pedidos
INNER JOIN
[Detalhes do Pedido]
ON
Pedidos.NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido
GROUP BY Pedidos.NúmeroDoPedido;
SELECT [predicado] { * | tabela.* | [tabela.]campo1 [AS alias1] [, [tabela.]campo2 [AS alias2] [, ...]]}Onde nós temos os seguintes elementos:
FROM tabelaexpression [, ...] [IN externaldatabase]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]
Elemento | Descrição |
predicado | Um dos seguintes: ALL, DISTINCT, DISTINCTROW ou TOP. Você usa um predicado para restringir o número de Registros que é retornado pela consulta. Se nenhum for especificado o padrão é ALL |
* | Especifica que todos os campos de uma determinada tabela ou consulta devem ser selecionados. Por exemplo: Select * from Pedidos - Retorna todos os campos da tabela Pedidos. |
Tabela | O nome da tabela ou consulta de onde são selecionados os campos. Por exemplo, Select Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido from Pedidos - Seleciona os Campos NúmeroDoPedido e DataDoPedido, da tabela Pedidos. |
Campo1, Campo2 | O Nome dos campos a serem selecionados. |
Alias 1, Alias2 | Um "apelido" para o campo. Na Folha de Dados o apelido aparece como o título da coluna. Por exemplo, Select Pedidos.NúmeroDoPedido As Número from Pedidos, faz com que a coluna NúmeroDoPedido tenha o nome Número a ela associado. |
tabelaexpression | O nome da tabela de onde os campos serão selecionados |
externaldatabase | O nome do Bando de Dados que contem a tabela, caso não seja o banco de dados atual. |
where | Utilizado para especificar critérios na consulta. Por exemplo, Where Pedidos.PaísDeDestino="Brasil" |
group by | O mesmo que Agrupar Por no modo estrutura da consulta, na linha Total |
having | Especifica critérios quando utilizamos Agrupar Por. |
order by | Utilizado para classificação dos registros em ordem crescente ou descendente de um determinado campo. |
WITH OWNERACCESS OPTION | Em um ambiente multiusuários com
um grupo de trabalho seguro, use esta declaração
com uma consulta para conceder ao usuário que executa
a consulta as mesmas permissões que as do proprietário
da consulta. Sintaxe instrução sql WITH OWNERACCESS OPTION A declaração WITH OWNERACCESS OPTION é opcional. O exemplo a seguir permite que o usuário visualize informações sobre salários (mesmo que, de outra forma, o usuário não tenha permissão para visualizar a tabela FolhaDePagamento), desde que o proprietário da consulta tenha essa permissão: SELECT Sobrenome, Nome, Salário FROM Funcionários ORDER BY Sobrenome WITH OWNERACCESS OPTION; Se de alguma outra forma o usuário for impedido de criar ou adicionar a uma tabela, você pode usar WITH OWNERACCESS OPTION para permitir que ele execute uma consulta criar tabela ou consulta acréscimo. Se você deseja impor configurações de segurança de grupo de trabalho e permissões de usuários, não inclua a declaração WITH OWNERACCESS OPTION. Essa opção requer que você tenha acesso ao arquivo System.mdw associado ao banco de dados. É realmente útil somente nas implementações de multiusuários com segurança. |
Toda Instrução SQL deve ser terminada com um ponte e vírgula (;), conforme indicado acima. Esta instrução SQL pode ser gerada a partir do modo estrutura da consulta. Basta você criar uma nova consulta baseada na tabela pedidos, adicionar os campos indicado e depois dar uma olhada no modo SQL. Um detalhe interessante é que se você fizer qualquer alteração no modo SQL, as alterações se refletem no modo estrutura e vice-versa. Isso acontece porque o modo estrutura da consulta, é simplesmente uma representação gráfica para facilitar a construção de expressões SQL.Criar uma instrução SQL que retorne o campo NúmeroDoPedido, o campo DataDoPedido, o campo Frete e o campo PaísDeDestino da tabela Pedidos.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
FROM
Pedidos;
Observe a utilização da cláusula ORDER BY Pedidos.Frete para classificar os registros em ordem Crescente. A classificação em ordem crescente á o padrão no Microsoft Access. Quando formos classificar em ordem decrescente, precisamos especificar a palavra DESC, conforme indicado abaixo:Alterar a instrução SQL anterior para que os registros sejam classificados em ordem crescente pelo valor do Frete.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
FROM
Pedidos
ORDER BY Pedidos.Frete;
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.FreteObserve a utilização da Cláusula WHERE para filtrar somente os pedidos cujo PaísDeDestino seja Brasil. Como o campo PaísDeDestino é um campo do tipo texto, o valor do critério (Brasil) tem que vir entre aspas. Se fosse um campo do tipo Data, o valor do critério teria que vir delimitado pelo sinal #. Por exemplo #01/01/1995#. Vamos trabalhar um pouco mais com a cláusula WHERE.
FROM
Pedidos
ORDER BY Pedidos.Frete DESC;
Alterar a instrução SQL anterior para que sejam exibidos somente os pedidos cujo PaísDeDestino seja Brasil.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
FROM
Pedidos
WHERE (((Pedidos.PaísDeDestino)="Brasil"))
ORDER BY Pedidos.Frete;
Observe a utilização da Cláusula OR ligando os dois Critérios. Lembre que a cláusula OR retorna um registro se o PaísDeDestino atender um dos dois critérios, isto é, se for Brasil ou se for argentina, o Registro será selecionado, que é exatamente o que desejamos, ou seja, todos os Pedidos para o Brasil mais os pedidos para Argentina.Altere a instrução SQL anterior para que sejam exibidos somente os pedidos para o Brasil ou Alemanha como PaísDeDestino.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
FROM
Pedidos
WHERE (((Pedidos.PaísDeDestino)="Brasil"
OR
(Pedidos.PaísDeDestino)="Alemanha"))
ORDER BY Pedidos.Frete;
Observe a cláusula WHERE utilizando o operador de comparação maior do que (>) e a classificação através da cláusula ORDER BY no campo NúmeroDoPedido. Observe também, que no Microsoft Access, nas instruções SQL sempre aparece a identificação completa do campo no seguinte formato: NomeTabela.NomeCampo. Por exemplo Pedidos.NúmeroDoPedido para indicar o campo NúmeroDoPedido da tabela Pedidos.Altere a instrução SQL anterior, retirando o critério para PaísDeDestino. Adicione um critério para NúmeroDoPedido maior do que 10500, retire a classificação do campo Frete a classifique pelo campo NúmeroDoPedido.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
FROM
Pedidos
WHERE (((Pedidos.NúmeroDoPedido)>10500))
ORDER BY Pedidos.NúmeroDoPedido;
Observe a utilização da função Ano (Year) para extrairmos apenas o Ano do campo DataDoPedido a fim de especificarmos como critério o Ano=1995. Também a cláusula Order By foi mantida, classificando a listagem em ordem crescente pelo número do pedido. A utilização de funções junto com os comando SQL nos fornece inúmeras possibilidades de refinamento em nossas consultas.Alterar a instrução SQL anterior, e adicionar um critério de tal maneira que somente sejam exibidos os pedidos para o Ano de 1995. Tirar o critério do campo Número do Pedido.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
FROM
Pedidos
WHERE ((Year([DataDoPedido])=1995))
ORDER BY Pedidos.NúmeroDoPedido;
Observe a utilização de vários critérios em diferentes campos. Colocamos critérios nos campos DataDoPedido e PaísDeDestino. Conforme descrito anteriormente os critérios de dois ou mais campos são ligados através do operador AND, indicando que um registro deve atender ambos os critérios para ser selecionado. Também temos a utilização dos operadores Between (Entre) para selecionar as datas dentre de um determinado intervalo e do operador In (Em) para selecionar o campo PaísDeDestino que seja igual a um dos valores apresentados na lista. Observe também , que os valores de data vem delimitados pelos marcadores #, conforme descrito anteriormente.Alterar a instrução SQL anterior, para que sejam exibidos somente os pedidos no Período de 01/01/1995 até 31/07/1995 e que tenham como PaísDeDestino Brasil, Argentina, Alemanha ou Canadá.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
FROM
Pedidos
WHERE (((Pedidos.DataDoPedido) Between #1/1/95# And #8/31/95#)
AND
(Pedidos.PaísDeDestino) In ("Brasil","Argentina","Alemanha","Canadá")))
ORDER BY Pedidos.NúmeroDoPedido;
Veja que a coluna calculada está junto com a listagem dos campos no início da instrução Select. Além disso foi utilizada a palavra AS para atribuir um nome (apelido) para esta coluna calculada. Este nome é o que irá aparecer como título da coluna no modo Folha de Dados. Quando você constrói uma expressão, este é o nome que vem antes dos dois pontos, por exemplo: Dias_Ped_Entr: [DataDeEntrega]-[DataDoPedido].Criar uma instrução SQL que retorne o campo NúmeroDoPedido, o campo DataDoPedido, o campo DataDeEntrega, o campo Frete e o campo PaísDeDestino da tabela Pedidos. Criar uma coluna adicional que calcula o número de dias entre a DataDeEntrega e a DataDoPedido. Chamar esta coluna de Dias_Ped_Entr.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.DataDeEntrega, Pedidos.PaísDeDestino, Pedidos.Frete, [DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr
FROM
Pedidos
WHERE (((Pedidos.DataDoPedido) Between #1/1/95# And #8/31/95#)
AND
((Pedidos.PaísDeDestino) In ("Brasil","Argentina","Alemanha","Canadá")))
ORDER BY Pedidos.NúmeroDoPedido;
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.DataDeEntrega, Pedidos.PaísDeDestino, Pedidos.Frete, [DataDeEntrega]-[DataDoPedido] AS Dias_Ped_EntrObserve a utilização do Operador Like ("Como") como critério de Pesquisa para esta consulta. Nunca é demais salientar que a utilização das Instruções SQL juntamente com as funções e operadores do Microsoft Access, nos fornece um amplo conjunto de possibilidades.
FROM
Pedidos
WHERE (((Pedidos.DataDoPedido) Between #1/1/95# And #8/31/95#)
AND
((Pedidos.PaísDeDestino) In ("Brasil","Argentina","Alemanha","Canadá")))
ORDER BY [DataDeEntrega]-[DataDoPedido];
Alterar a instrução SQL anterior, eliminando os critérios para a DataDoPedido e para o PaísDeDestino. Colocar um novo critério para PaísDeDestino, onde sejam exibidos apenas os pedidos cujo PaísDeDestino tem a Primeira Letra na faixa de A até M. Utilize o operador Like.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.DataDeEntrega, Pedidos.PaísDeDestino, Pedidos.Frete, [DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr
FROM
Pedidos
WHERE (((Pedidos.PaísDeDestino) Like "[A-M]*"))
ORDER BY Pedidos.PaísDeDestino;
As tabelas Pedidos e Detalhes do Pedido estão relacionadas através do campo NúmeroDoPedido. Classificar a listagem em ordem crescente do campo NúmeroDoPedido.Criar uma instrução SQL que selecione os seguintes campos: NúmeroDoPedido da tabela Pedidos
DataDoPedido da tabela Pedidos
PaísDeDestino da tabela Pedidos
Frete da tabela Pedidos
CódigoDoProduto, PreçoUnitário e Quantidade da tabela Detalhes do Pedido
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete, [Detalhes do Pedido].CódigoDoProduto, [Detalhes do Pedido].PreçoUnitário, [Detalhes do Pedido].QuantidadeObserve a instrução que está em vermelho. Nela temos a utilização da cláusula INNER JOIN, ligando as tabelas Pedidos e Detalhes do Pedido, através do campo NúmeroDoPedido, conforme especificado após o ON. UM Join deste tipo é bastante comum.
FROM
Pedidos
INNER JOIN
[Detalhes do Pedido]
ON
Pedidos.NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido
ORDER BY Pedidos.NúmeroDoPedido;
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete, Produtos.NomeDoProduto,[Detalhes do Pedido].PreçoUnitário, [Detalhes do Pedido].QuantidadeObserve que neste caso temos um INNER JOIN dentro do outro. Dentro do parênteses é feita a ligação entre as tabelas Pedidos e Detalhes Do Pedido, através do campo NúmeroDoPedido, e externamente é feita a ligação entre as tabelas Produtos e Detalhes do Pedido, através do campo NúmeroDoPedido.
FROM
Produtos
INNER JOIN
(Pedidos
INNER JOIN [Detalhes do Pedido]
ON
Pedidos.NúmeroDoPedido=[Detalhes do Pedido].NúmeroDoPedido
ON
Produtos.CódigoDoProduto = [Detalhes do Pedido].CódigoDoProduto)
ORDER BY Pedidos.NúmeroDoPedido;
Observe, além dos dois INNER JOIN, a utilização da cláusula WHERE em conjunto com Operador LIKE para especificar o critério desejado.Alterar a instrução SQL do ítem anterior para que somente sejam exibidos os pedidos para os produtos cujo NomeDoProduto inicie com uma letra na faixa de A até J. Tirar a classificação do campo NúmeroDoPedido e classificar em ordem crescente do campo NomeDoProduto.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete, Produtos.NomeDoProduto, [Detalhes do Pedido].PreçoUnitário, [Detalhes do Pedido].Quantidade
FROM
Pedidos
INNER JOIN (Produtos INNER JOIN [Detalhes do Pedido]
ON
Produtos.CódigoDoProduto = [Detalhes do Pedido].CódigoDoProduto)
ON
Pedidos.NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido
WHERE (((Produtos.NomeDoProduto) Like "[A-J]*"))
ORDER BY Produtos.NomeDoProduto;
Observe a utilização da instrução INTO [Pedidos de Junho e Julho]. Ao invés de utilizarmos um SELECT FROM, utilizamos um SELECT INTO, que é a instrução SQL utilizada para criar uma nova tabela com os registros retornados pela consulta. O Nome da nova tabela vem depois da instrução INTO. Como o nome da tabela possui espaços em branco, o nome deve ser colocado entre colchetes. Também utilizamos, na cláusula WHERE, o operador In , juntamente com a função Month, para especificar que o mês da DataDoPedido deve ser um dos valores definidos na cláusula In (6=Junho, 7=Julho).Construir uma instrução SQL que selecione o NúmeroDoPedido, DataDoPedido, PaísDeDestino e Frete. Colocar um critério para selecionar apenas os registros cuja DataDoPedido tenha caído no mês de Junho ou Julho de qualquer ano. A consulta deverá ser do tipo Criar tabela e o nome da tabela será "Pedidos de Junho e Julho".
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.PaísDeDestino, Pedidos.Frete
INTO [Pedidos de Junho e Julho]
FROM Pedidos
WHERE ((Month([DataDoPedido]) In (6,7)));
Observe a simplicidade da instrução SQL. Utilizamos uma instrução UPDATE, seguida do nome da tabela onde será feita a atualização. Em seguida uma instrução SET com a expressão de atualização para aumentar em 20% o PreçoUnitário.Criar uma instrução SQL que aumento o PreçoUnitário em 20% na tabela Detalhes do Pedido, devido a um ajuste na moeda e uma desvalorização em relação ao Dólar.
UPDATE [Detalhes do Pedido]
SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2;
Foi adicionada uma cláusula WHERE, para atualizar apenas os registros cujo PreçoUnitário seja maior do que R$ 20,00.Alterar a instrução SQL do ítem anterior para que somente sejam aumentados os registros cujo PreçoUnitário for maior ou igual a R$ 20,00.
UPDATE [Detalhes do Pedido]
SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2
WHERE ((([Detalhes do Pedido].PreçoUnitário)>=20));
Observe que utilizamos critérios em dois campos (PreçoUnitário e NúmeroDoPedido) e que estes critérios estão ligados por um operador E, o que significa que um registro, somente será atualizado se ele atender aos dois critérios ao mesmo tempo (PreçoUnitário maior ou igual a 20 e NúmeroDoPedido menor do que 10500). Se o registro atender a apenas uma das condições, o mesmo não terá o seu PreçoUnitário atualizado.Alterar a instrução SQL do ítem anterior para que somente sejam aumentados os registros cujo PreçoUnitário for maior ou igual a R$ 20,00 E cujo NúmeroDoPedido seja menor do que 10500.
UPDATE [Detalhes do Pedido]
SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2
WHERE ((([Detalhes do Pedido].PreçoUnitário)>=20)
AND
(([Detalhes do Pedido].NúmeroDoPedido)<10500));
Temos diversos detalhes interessantes a observar nesta instrução SQL. Primeiro um INNER JOIN relacionando as tabelas Pedidos e Detalhes Do Pedido, através do campo NúmeroDoPedido. Isso mostra que é perfeitamente possível, utilizar um INNER JOIN dentro de uma consulta de atualização. Segundo: Temos a utilização da função Year para extrair apenas o ano do campo DataDoPedido e compará-lo com o critério 1995.Alterar a instrução SQL anterior para incluir um critério para que o Ano da DataDoPedido seja 1995. Você terá que incluir a tabela Pedidos, uma vez que o campo DataDoPedido, encontra-se nesta tabela.
UPDATE Pedidos
INNER JOIN [Detalhes do Pedido]
ON
Pedidos.NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido
SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2
WHERE ((([Detalhes do Pedido].PreçoUnitário)>=20)
AND
(([Detalhes do Pedido].NúmeroDoPedido)<10500)
AND
(Year([DataDoPedido])=1995));
Temos diversos detalhes a observar nesta instrução SQL. Primeiro a instrução TRANSFORM, que calcula o valor de cada ítem (usando a fórmula ([PreçoUnitário]*[Quantidade])*(1-[Desconto])) e a função Sum para somar todos os ítens de um determinado cliente. A instrução TRANSFORM equivale ao elemento Valor da Referência Cruzada. Este valor calculado é que irá formar os valores da nossa referência cruzada. Temos também, a utilização de dois INNER JOIN, um ligando Pedidos com Detalhes do Pedido, através do campo NúmeroDoPedido, e outro ligando Pedidos com Clientes, através do campo CódigoDoCliente, uma vez que precisamos de informações destas três tabelas.Criar uma instrução SQL que liste o total de compras pelo NomeDaEmpresa e por ano da DataDoPedido. Classificar a listagem em ordem crescente do NomeDaEmpresa.
TRANSFORM
Sum(([PreçoUnitário]*[Quantidade])*(1-[Desconto])) AS Expr2
SELECT Clientes.NomeDaEmpresa
FROM (Clientes
INNER JOIN Pedidos
ON
Clientes.CódigoDoCliente = Pedidos.CódigoDoCliente)
INNER JOIN [Detalhes do Pedido]
ON
Pedidos.NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido
GROUP BY Clientes.NomeDaEmpresa
ORDER BY Clientes.NomeDaEmpresa
PIVOT Year([DataDoPedido]);
Cria uma consulta tabela de referência cruzada.Utilizamos a função Count para contar o número de Pedidos por PaísDeDestino e por Mês. Também utilizamos um INNER JOIN para relacionar as tabelas Clientes e Pedidos, através do campo CódigoDoCliente. A utilização da cláusula WHERE, juntamente com o operador IN para limitar o PaísDeDestino a Brasil ou Alemanha. O GROUP BY indicando que o campo PaísDeDestino formará as linhas da referência cruzada. Finalmente a utilização de PIVOT com a função Month (Mês) indicando que os meses da DataDoPedido formarão as colunas da referência cruzada.
Sintaxe TRANSFORM funçãoagrgA instrução TRANSFORM possui as partes a seguir:
instruçãoselect
PIVOT campocentral [IN (valor1[, valor2[, ...]])]
Parte Descrição funçãoagrg Uma função agregada SQL que opera sobre os dados selecionados. instruçãoselect Uma instrução SELECT. campocentral O campo ou expressão que você quer usar para criar títulos de coluna no conjunto de resultados da consulta. valor1, valor2 Valores fixos usados para criar títulos de colunas.
Comentários:
Quando resume dados utilizando uma consulta tabela de referência cruzada, você seleciona valores de campos ou expressões especificadas como títulos de colunas para poder visualizar os dados em um formato mais compacto do que com uma consulta seleção.
A instrução TRANSFORM é opcional, mas quando for incluída será a primeira instrução em uma seqüência SQL. Ela antecede uma instrução SELECT que especifica os campos usados como títulos de linhas e uma cláusula GROUP BY que especifica o agrupamento de linhas. Opcionalmente, você pode incluir outras cláusulas, como WHERE, que especifiquem critérios adicionais de seleção ou de classificação. Você pode também usar subconsultas como atributos — especificamente, aqueles em uma cláusula WHERE — em uma consulta tabela de referência cruzada.
Os valores retornados em campocentral são usados como títulos de colunas no conjunto de resultados da consulta. Por exemplo, articular os números das vendas no mês da venda em uma consulta tabela de referência cruzada criaria 12 colunas. Você pode restringir campocentral para criar títulos a partir de valores fixos (valor1, valor2) relacionados na cláusula IN opcional. Você pode também incluir valores fixos para os quais não existam dados para criar colunas adicionais.
Criar uma instrução SQL que gere uma Consulta de tabela de referência cruzada. As linhas deverão ser formadas pelo PaísDeDestino da tabela Clientes. As colunas serão formadas pelo número do mês da DataDoPedido e os valores serão formados pela contagem de pedidos. Adicionar um critério de tal forma que somente sejam exibidos os registros para Brasil ou Alemanha.
TRANSFORM Count(Pedidos.NúmeroDoPedido) AS ContarDeNúmeroDoPedido
SELECT Clientes.PaísDeDestino
FROM
Clientes
INNER JOIN Pedidos
ON
Clientes.CódigoDoCliente = Pedidos.CódigoDoCliente
WHERE (((Clientes.PaísDeDestino) In ("Brasil","Alemanha")))
GROUP BY Clientes.PaísDeDestino
PIVOT Month([DataDoPedido]);
A instrução é tão simples, que praticamente dispensa comentários. A única recomendação importante é que não devemos utilizar uma instrução DELETE, sem a utilização de uma cláusula WHERE. Utilizar um DELETE sem uma cláusula WHERE significa que estaremos eliminando todos os registros da tabela.Faça uma cópia da tabela Pedidos. Chame a cópia de CópiaDePedidos. Criar uma instrução SQl que elimine todos os Pedidos da tabela CópiaDePedidos cujo PaísDeDestino seja a Alemanha
DELETE CópiaDePedidos.PaísDeDestino
FROM
Pedidos
WHERE (((Pedidos.PaísDeDestino)="Alemanha"));
Na hora que esta instrução SQL é executada, o Microsoft Access localiza na cláusula WHERE, após o sinal de igual a expressão: [Digite o País:]. Como esta expressão não é o nome de um campo de uma das tabelas que fazem parte da consulta, o Microsoft Access abre uma janela pedindo que seja digitado um valor, este valor substitui a expressão. Por exemplo, ao executar esta consulta o Microsoft Access pede que seja digitado o nome do País, se você digitar Brasil, a cláusula WHERE fica da seguinte maneira:Criar uma instrução SQL que selecione os campos NúmeroDoPedido, DataDoPedido, Frete e PaísDeDestino da tabela Pedidos. Fazer com que ao ser executada, a consulta solicite que seja digitado o nome do País e que sejam retornados apenas os Pedidos para o PaísDeDestino digitado.
SELECT Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.Frete, Pedidos.PaísDeDestino
FROM
Pedidos
WHERE (((Pedidos.PaísDeDestino)=[Digite o País:]));
WHERE (((Pedidos.PaísDeDestino="Brasil")), e somente serão listados os Pedidos cujo país de Destino for igual a Brasil. As aspas são colocadas pelo Microsoft Access, porque o campo PaísDeDestino é do tipo texto.
Observe a utilização do operador Between, junto com os parâmetros [Data Inicial:] e [Data Final:]. Os parâmetros nos campos DataDoPedido e PaísDeDestino estão ligados por um AND (Operador E), conforme explicado anteriormente.Alterar a instrução SQL do exemplo anterior para que além do PaísDeDestino, seja solicitada uma Data Inicial, uma Data Final. Somente devem ser listados os registros para o País digitado e dentro do Período especificado.
SELECT
Pedidos.NúmeroDoPedido, Pedidos.DataDoPedido, Pedidos.Frete, Pedidos.PaísDeDestino
FROM
Pedidos
WHERE (((Pedidos.DataDoPedido) Between [Data Inicial:] And [Data Final:]) AND
((Pedidos.PaísDeDestino)=[Digite o País:]));
Estas opções estão indicadas na figura a seguir:Criar consultas SQL.
Trabalhar com instruções SQL.
Muito pode ser feito no Access, sem conhecer a lingüagem SQL, mas com certeza você terá muito mais recursos à mão, conhecendo a lingüagem SQL.Utiliza o * ao invés do % como caractere curinga
Utiliza “ ao invés de ‘ para critérios do tipo texto
Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela
Aplica-se ao Access 2019, 2016, 2013 e 2010!
Para todos os detalhes, acesse:
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2025 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI