访问参数输入改变实际数据

时间:2016-01-22 16:28:53

标签: sql ms-access

我有四个相同的表,我试图查询。我遇到的一个问题是参数。我有一个查询将四个表联合在一起,它们完美地工作,直到我添加一个参数。该参数更改其中一列中的数据。

PARAMETERS [Year] Text ( 255 );
SELECT main.Geography, main.Year
FROM ((((select Geography, Year from [Geo union CA] 
UNION SELECT Geography, Year FROM [Geo union CC] 
UNION SELECT Geography, Year FROM [Geo union PA] 
UNION SELECT Geography, Year FROM [Geo union PC])  AS main
LEFT JOIN [Geo union CA] ON (main.Year = [Geo union CA].Year) AND (main.Geography = [Geo union CA].Geography))  
LEFT JOIN [Geo union CC] ON (main.Year = [Geo union CC].Year) AND (main.Geography = [Geo union CC].Geography))    
LEFT JOIN [Geo union PA] ON (main.Year = [Geo union PA].Year) AND (main.Geography = [Geo union PA].Geography))
LEFT JOIN [Geo union PC] ON (main.Year = [Geo union PC].Year) AND (main.Geography = [Geo union PC].Geography)
WHERE (((main.Year)=[Year]))
GROUP BY main.Geography, main.Year
ORDER BY main.Geography;

所以我想要与地理相关的地理和年份(财务报表)。如果没有“Where((main.Year)= [Year]))”,我会得到正确的地理信息和相关年份信息。有了它和参数,地理位置就会出现,但是这些年份就是我放入参数的任何东西。

对于一些额外的上下文,[Geo union XX]是一个简单的查询,用于从初始数据表中提取Geography和year。这似乎显着加快了查询时间。

2 个答案:

答案 0 :(得分:1)

array (size=2) 0 => array (size=4) 'user_mail' => string 'johnDoe@gmail.com' (length=17) 'date_sent' => string '2016-01-22 17:25:34' (length=19) 'date_edited' => string '0000-00-00 00:00:00' (length=19) 'message' => string 'Second tweet !' (length=14) 1 => array (size=4) 'user_mail' => string 'johnDoe@gmail.com' (length=17) 'date_sent' => string '2016-01-22 17:25:34' (length=19) 'date_edited' => string '0000-00-00 00:00:00' (length=19) 'message' => string 'Second tweet !' (length=14) 是保留字(请参阅http://allenbrowne.com/AppIssueBadWord.html),所以:

  • 停止使用保留字。
  • 尝试使用Year

答案 1 :(得分:1)

问题源于我使用"年"对于字段名称和参数名称。将参数名称更改为pYear可以解决问题。