Problema de critérios de consulta do MS Access

2

Atualmente, tenho uma consulta de banco de dados do MS Access que possui um campo chamado FedEXDetTotal que totaliza 9 campos de cobrança do FedEX. Eu tenho outro campo que é do nosso sistema interno chamado "Custo Total". Este é apenas um campo numérico normal. Eu criei outro campo nesta consulta

Diff: [FedEXDetTotal]-[Total Charge]

Isso me diz a diferença entre a carga da Fedex e o que realmente cobramos. Tudo funciona bem com isso, mas quando tento colocar os critérios > 5 para o campo Diff, quando executo a consulta, recebo uma mensagem dizendo "Insira o valor do parâmetro FedEXDetTotal".

Por que o Access está fazendo isso? Como faço para contornar isso? Estou tentando começar com algo simples (> 5), mas o que eu realmente quero é o > [Formulários]! [Dis]. [Txtbox_Diff].

    
por xxl3ww 17.03.2011 / 16:46

2 respostas

2

Os aliases podem ser usados na instrução SELECT com o SQL do Jet / ACE, mas não nas cláusulas WHERE.

Então, tudo bem:

  SELECT FedExDetTotal, [FedEXDetTotal]-[Total Charge] AS Diff

Mas você não pode fazer isso:

  SELECT FedExDetTotal, [FedEXDetTotal]-[Total Charge] AS Diff
  FROM Orders
  WHERE Diff > 5

Em vez disso, você precisa repetir TODOS os cálculos na cláusula WHERE, assim:

 WHERE ([FedEXDetTotal]-[Total Charge]) > 5

(os parênteses não são obrigatórios, mas deixam claro, e são necessários para alguns operadores, como * e /)

Os dialetos SQL para alguns bancos de dados permitem que você use aliases nas cláusulas WHERE, mas o meu entendimento é que o modo Jet / ACE é completamente consistente com os padrões SQL.

O fato é que, se você usar o construtor de consultas do Access para gravar seu SQL, ele fará isso para você.

    
por 19.03.2011 / 19:19
0

Este Artigo da Microsoft pode ajudar a resolver o seu problema. Estou assumindo que há alguns dados em seu banco de dados para testar essa consulta.

    
por 17.03.2011 / 16:58