我是Access的新手,但之前我确实使用过SQL。
我想使用参数按日期过滤查询。不幸的是,没有确切的日期,但我们必须处理文本列“年”和“周”。我连接这些列,以便词典顺序等于日期顺序。 select语句效果很好。特别是我会在DISPO专栏中获得预期的参赛作品 但是,当我添加参数行并执行我的查询时,不仅会询问BeginDate和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的数据的图表。
答案 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的优点是什么))