因此,我正在使用 MS Access 2010 数据库在 C# 中开发 Visual Studio 2012,并希望根据某些限制(在 WHERE 子句中看到的那些)对表的一些数据进行年度计划。我从 Access 获得的这个查询已经准备好在我的 C# 程序中使用,然后偶然发现了我无法使用它的问题,因为它不是“有效的 SQL 指令”
OleDbConnection l = OleDbConnectionDAO.createConnection();
DataTable dt;
l.Open();
OleDbCommand cmd = l.CreateCommand();
string transform = "TRANSFORM Max( IIf([frequência calibração] Is Not Null,(Format(DateAdd('m',Val([frequência calibração]),[Data Saida]),'yyyy/mm')),'Faltam dados')) AS MaxProximaCalib";
string select = "SELECT Codigo, B_DSC AS Artigo, Marca_ AS Marca, Modelo, N_Serie";
string from = "FROM APP_Equipamento_Geral";
string where = "WHERE YEAR(DateAdd('m',Val([frequência calibração]),[Data Saida])) = " + ano + " AND [Descrição Serviço] like "+servico+ "";
string groupby = "GROUP BY APP_Equipamento_Geral.Codigo, APP_Equipamento_Geral.B_DSC, APP_Equipamento_Geral.Marca_," +
"APP_Equipamento_Geral.Modelo, APP_Equipamento_Geral.N_Serie, Year(DateAdd('m',Val([frequência calibração]),[Data Saida]))";
string pivot = "PIVOT IIf([frequência calibração] Is Not Null,(Format(DateAdd('m',Val([frequência calibração]),[Data Saida]),'yyyy/mm')),'Faltam dados');";
string query = transform + select + from + where + groupby + pivot;
cmd = new OleDbCommand(query, l);
dt = new DataTable();
dt.Load(cmd.ExecuteReader());
有没有更简单的方法来运行这个查询而不求助于整个过程?
编辑:添加变换。