连续列访问

时间:2017-10-24 15:01:24

标签: sql parameters ms-access-2010

我是Access的新手,但之前我确实使用过SQL。

我想使用参数按日期过滤查询。不幸的是,没有确切的日期,但我们必须处理文本列“年”和“周”。我连接这些列,以便词典顺序等于日期顺序。 select语句效果很好。特别是我会在DISPO专栏中获得预期的参赛作品 但是,当我添加参数行并执行我的查询时,不仅会询问B​​eginDate和EndDate的值,还会询问DateColumn的值。最后,“where” - 陈述将无法按预期工作:它将使用输入来自DISPO的条目而不是select语句接收的条目。

PARAMETERS BeginDate Text ( 255 ), EndDate Text ( 255 );
SELECT 
    MyDB.art_nr AS ArtNo,
    MyDB.dispo_jahr AS Year, 
    MyDB.dispo_kw AS Week, 
    (MyDB.dispo_jahr & "-" & MyDB.dispo_kw) AS DateColumn
FROM 
    MyDB
WHERE 
    (   DateColumn Between [BeginDate] And [EndDate]
    )
ORDER BY MyDate

你能帮忙解决我的参数问题吗?

问候, 彼得

免责声明:我减少了对此论坛的查询。实际查询是多个数据库的内部联接。

没有参数行的示例输出:

Line1: ArtNo Year Week DateColumn 
Line2: 1 2016 33 2016-33 
Line3 2 2016 34 2016-34 
and so on. 

我希望过滤2016-33而不是在列Year和Week上应用两个过滤器。后者更复杂,特别是如果您想要一张包含2016-33至2017-15的数据的图表。

1 个答案:

答案 0 :(得分:1)

我发现了一个问题:我的where-clause似乎不接受ALIAS:

using (SqlConnection connection = new SqlConnection(connectionstring))
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand("select PartNo,PartDescription,HSN,MRP,GST from products_data", connection);
            adapter.Fill(dataset);

            Dataset products_tbl = dataset.Tables[0];
            //data is AutoCompleteStringCollection object
            for (int i = 0; i < products_tbl.Rows.Count; i++)
                 //You can change the datatype from Decimal to  whatever you want string or etc
                       Decimal h2 = 0;
                      Decimal.TryParse(products_tbl.Rows[i]["PartNo"].ToString(), out h2);
                      data.Add(h2);
        }

会失败,而:

WHERE DateColumn Between [BeginDate] And [EndDate]

会好的。所以我的原始问题简化为:这种行为对于Access是否正常,或者我是否可以改进我的查询以启用ALIAS使用选项。 (我的意思是,如果不简化查询,ALIAS的优点是什么))