Ir para conteúdo
Fórum Script Brasil
  • 0

Usando 'WHERE' numa consulta de referencia cruzada


Raoni Santos

Pergunta

Olá,

Gostaria que me ajudassem na seguinte questao:

Estou fazer esta consulta no Access

TRANSFORM ((Count(*)) & " - R$" & (SUM([processos].[campo_livre5]))) AS ttotal

SELECT [processos].[sERVIDOR1], Count(*) AS total, Sum([processos].[campo_livre5]) AS totalvalor

FROM (processos RIGHT JOIN assunto ON [processos].[assunto]=[assunto].[Assunto]) LEFT JOIN servidor ON

[processos].[sERVIDOR1]=[servidor].[servidor]

WHERE (data_protocolo>[Forms]![Consultas]![data_inicio]) And (data_protocolo<[Forms]![Consultas]![data_final])

GROUP BY [processos].[sERVIDOR1]

ORDER BY [processos].[sERVIDOR1]

PIVOT [assunto].[Assunto];

Porém, sem a clausula WHERE ali, a consulta funciona certo, mas quando coloco a condição ele apresenta a seguinte msg:

"O mecanismo de banco de dados Microsoft Jet não reconhece '[Forms]![Consultas]![data_inicio]' como um nome de campo ou expressão válida"

O que estou fazendo errado? gostaria que me desse uma ajuda!

Obrigao

Editado por Raoni Santos
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

WHERE (data_protocolo>[Forms]![Consultas]![data_inicio]) And (data_protocolo<[Forms]![Consultas]![data_final])

Porém, sem a clausula WHERE ali, a consulta funciona certo, mas quando coloco a condição ele apresenta a seguinte msg:

"O mecanismo de banco de dados Microsoft Jet não reconhece '[Forms]![Consultas]![data_inicio]' como um nome de campo ou expressão válida"

a expressão é inválida poque voce não pode comparar datas com nomes de forms que contem datas

exprimente

WHERE (data_protocolo>([Forms]![Consultas]![data_inicio])) And (data_protocolo<([Forms]![Consultas]![data_final]))

ou ainda

WHERE (data_protocolo>[data_inicio]) And (data_protocolo<[data_final])

uma explicação melhor sobre a claúsula Where

Sintaxe

SELECT fieldlist

FROM tableexpression

WHERE criteria

Uma instrução SELECT contendo uma cláusula WHERE apresenta estas partes:

Parte Descrição

fieldlist O nome de um ou mais campos a serem recuperados juntamente com qualquer alias, predicados de seleção (ALL, DISTINCT, DISTINCTROW ou TOP ) ou outras opções da instrução SELECT.

tableexpression O nome da tabela cujos dados serão recuperados.

criteria Uma expressão à qual os registros precisarão satisfazer para serem incluídos nos resultados da consulta.

Comentários

O mecanismo de banco de dados do Microsoft Jet seleciona os registros que satisfazem às condições listadas na cláusula WHERE. Se você não especificar uma cláusula WHERE, a consulta retornará todas as linhas da tabela. Se especificar mais de uma tabela na consulta sem incluir uma cláusula WHERE ou JOIN, a consulta produzirá um produto cartesiano das tabelas.

WHERE é opcional, mas, quando incluída, aparece depois de FROM. Por exemplo, você pode selecionar todos os funcionários do departamento de vendas (WHERE Dept = 'Vendas') ou todos os clientes com idade entre 18 e 30 (WHERE Idade Between 18 And 30).

Se você não usar uma cláusula JOIN para executar operações join de SQL em várias tabelas, o objeto Recordset resultante não será atualizável.

WHERE é semelhante a HAVING. WHERE determina quais registros serão selecionados. De maneira semelhante, após os registros serem agrupados por GROUP BY, HAVING determina quais registros serão exibidos.

Use a cláusula WHERE para eliminar registros que você não deseja que sejam agrupados pela cláusula GROUP BY.

Use várias expressões para determinar quais registros a instrução SQL retornará. Por exemplo, a instrução SQL a seguir seleciona todos os funcionários cujos salários são maiores que $21.000:

SELECT LastName, Salary

FROM Employees

WHERE Salary > 21000;

Uma cláusula WHERE pode conter até 40 expressões vinculadas por operadores lógicos, como And e Or.

Ao especificar um nome de campo contendo espaço ou pontuação, coloque o nome entre colchetes ([ ]). Por exemplo, uma tabela de informações de clientes pode incluir informações sobre clientes específicos:

SELECT [Restaurante favorito do cliente]

Quando você especifica o argumento criteria, os literais de data precisam estar no formato americano, mesmo que você não esteja usando a versão americana do mecanismo de banco de dados Microsoft® Jet. Por exemplo, 10 de maio de 1996, é escrito 10/5/96 no Brasil e 5/10/96 nos Estados Unidos. Certifique-se de colocar literais de data com o sinal de número (#), como mostram os próximos exemplos.

Para localizar registros com a data 10 de maio de 1996 em um banco de dados do Brasil, é preciso usar esta instrução SQL:

SELECT *

FROM Orders

WHERE ShippedDate = #5/10/96#;

Você também pode usar a função DateValue (ValData) que leva em consideração configurações internacionais estabelecidas pelo Microsoft Windows®. Por exemplo, use este código para os Estados Unidos:

SELECT *

FROM Orders

WHERE ShippedDate = DateValue('5/10/96');

E use este código para o Brasil:

SELECT *

FROM Orders

WHERE ShippedDate = DateValue('10/5/96');

Observação Se a coluna indicada pela seqüência de caracteres do critério for do tipo GUID, a expressão do critério usará uma sintaxe um pouco diferente:

WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}

Certifique-se de incluir as chaves aninhadas e os hífens conforme é mostrado.

Neste endereço uma explicação mais detalhada

http://www.juliobattisti.com.br/artigos/of...qlconsultas.asp

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...