2

アクセス2007に以下のクエリがあり、アクセスの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フィールド値に奇妙な結果が表示されます(下の写真を参照)。

visualstudioから

テーブルを取得するための私のコードは以下のとおりです。

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;

        }

誰かがこの奇妙な行動を手伝ってくれる?

4

1 に答える 1

2

すべてが順調なようです。私の推測では、次のRule_name fieldように複数行の値がありますAnnoFromLine\n\rDimOnLine。ご覧のとおり、Datagridviewは複数行の値を表示し、SQLデザインビューは最初の行だけを表示します。

于 2012-05-30T09:17:32.127 に答える