我在 access 2007 中有以下查询,它使用 access 的 sql 设计 View 给了我正确的结果。
SELECT B1.LAYER_TYPE,
B1.LAYER_NAME AS LAYER_NAME,
B2.LAYER_NAME AS RELATED_LAYER_NAME,
B3.LAYER_NAME AS RELATED_LAYER2_NAME,
C.RULE_NAME
FROM (((NCS_RULES_RELATIONS AS A
LEFT JOIN NCS_LAYERS AS B1 ON A.LAYER_ID = B1.LAYER_ID)
LEFT JOIN NCS_LAYERS AS B2 ON A.RELTD_LAYER_ID = B2.LAYER_ID)
LEFT JOIN NCS_LAYERS AS B3 ON A.RELTD_LAYER2_ID = B3.LAYER_ID)
LEFT JOIN NCS_RULES AS C ON A.RULE_ID = C.RULE_ID
ORDER BY B1.LAYER_TYPE;
结果如下:
但是当我尝试使用 c#
和 oledbconnection
访问数据表时,最后一行的 RULE_NAME 字段值显示奇怪的结果(参见下图) )。
我的检索表的代码如下:
public DataTable GetTable(string strSelectSQL)
{
if (this.con.State != ConnectionState.Open)
con.Open();
DataTable dt = new DataTable();
DataSet ds = new DataSet();
IDbCommand command = con.CreateCommand();
command.CommandText = strSelectSQL;
command.Connection = con;
IDbDataAdapter da = factory.CreateDataAdapter();
da.SelectCommand = command;
da.Fill(ds);
dt = ds.Tables[0];
con.Close();
return dt;
}
有人可以帮我解决这种奇怪的行为吗?
最佳答案
看来一切都很好。我猜您在 Rule_name 字段
中有多行值,如下所示:AnnoFromLine\n\rDimOnLine
。如您所见,Datagridview 显示多行值,而 sql 设计 View 仅显示第一行。
关于c# - access 2007查询和c#数据表显示不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813264/