access 2007查询和c#datatable显示不同的输出

access 2007查询和c#datatable显示不同的输出,c#,ms-access-2007,oledb,C#,Ms Access 2007,Oledb,我在access 2007中有以下查询,它使用access的sql设计视图给出了正确的结果 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_LAYER

我在access 2007中有以下查询,它使用access的sql设计视图给出了正确的结果

  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;

        }

有人能帮我对付这种奇怪的行为吗?

看来一切都很好。我猜您在
规则\u名称字段中有多行值,如下所示:
AnnoFromLine\n\rDimOnLine
。Datagridview显示您可以看到的多行值,而sql设计视图仅显示第一行