access 2007 查询和 c# 数据表显示不同的输出

Posted

技术标签:

【中文标题】access 2007 查询和 c# 数据表显示不同的输出【英文标题】:access 2007 query and c# datatable show different output 【发布时间】:2012-05-30 09:11:50 【问题描述】:

我在 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;

        

有人可以帮我解决这种奇怪的行为吗?

【问题讨论】:

【参考方案1】:

似乎一切都很好。我猜你在Rule_name field 中有多行值,如下所示:AnnoFromLine\n\rDimOnLine。如您所见,Datagridview 显示多行值,而 sql 设计视图仅显示第一行。

【讨论】:

以上是关于access 2007 查询和 c# 数据表显示不同的输出的主要内容,如果未能解决你的问题,请参考以下文章

Access 2007 - 在不使用交叉表查询的情况下“旋转”数据

C# Access 模糊查询SQL语句

如何在 C# 中使用 Access 2007 链接表管理器

C# MD5 和/或其他加密 oledb (access 2007)

如何使用c#连接到access 2007

MS Access 2007 上的 MS Graph 图表中的图表区域有时为空白