我正在ASP.NET Web Forms 4.5中开发一个Web应用程序,它在Access数据库中导入Excel(.XLS,.XLSX)文件数据。
我需要实现一个将Excel工作表列分成2个不同字段的查询。
我的查询应该是这样的:
string query = @"SELECT DISTINCT split(([MyExcelColumn], "" - "")(0) AS [CustomerID],
split(([MyExcelColumn], "" - "")(1) AS [CustomerDescr]
FROM [Sheet]";
// The separator string is " - ".
// Executing the query
DataTable dt = ExcelWorksheet.ListQuery(ExcelFileConnString, query);
ExcelWorksheet.ListQuery
是一种在Excel文件上执行列表查询的方法。
这是方法实现:
public static DataTable ListQuery(string connString, string query)
{
OleDbConnection conn = null;
DataSet ds = null;
try
{
conn = new OleDbConnection(connString);
conn.Open();
OleDbCommand cmd = new OleDbCommand(query, conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
ds = new DataSet();
da.Fill(ds);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn != null)
{
conn.Close();
conn.Dispose();
}
}
return ds.Tables[0];
}
该方法已经多次测试,因为它用于应用程序上的其他一些查询,但是使用此查询我收到此错误:
{"Synthax error (missing operator) in the expression of the query 'split(([MyExcelColumn], \" - \")(0) AS [CustomerID], \r\n split(([MyExcelColumn], \" - \")(1) AS [CustomerDescr]\r\n FROM ['Sheet$']'."}
我试图用括号做一些改变,但没有发生任何事情。
我认为这与(index)
函数结果数组的split
有关...但我做错了什么?
答案 0 :(得分:0)
正如您所发现的,您无法在Access SQL查询中使用VBA Split()
函数,因为您只是将[MyExcelColumn]拆分为两部分而是可以使用它:
SELECT
Mid([MyExcelColumn],1,InStr([MyExcelColumn]," - ")-1) AS [CustomerID],
Mid([MyExcelColumn],InStr([MyExcelColumn]," - ")+3) AS [CustomerDescr]
FROM [Sheet]