- PR -

MSSQLServerからレコード取得時の問題

投稿者投稿内容
Pakkun
会議室デビュー日: 2005/10/05
投稿数: 5
投稿日時: 2005-10-05 23:13
VisualC#でSQLServerからデータを取得して
DataGridに表示しようとしています。

ソースをmdbで試したときはうまくいったのですが、
SQLServerにしたところ、データの1レコード目が取得されず、
2レコード目が2つ取得されます。
1〜10までの数字が入ったフィールドがあったとすると、
普通に取得すると2,2,3,4,5・・・になり、
Select文をいじって降順にしてみると、
9,9,8,7,6・・・となります。
データアダプタを右クリックしてデータを取得してみると、
正しく取得できますが、Fillでデータを取得しDataGridに
表示しようとしたときだけ上のような現象が起こります。

もし原因がわかるようなら教えてください。

なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-05 23:17
お世話になります。

DataAdapterのSelectCommandのCommandTextの中身は
問題なしですか?
Pakkun
会議室デビュー日: 2005/10/05
投稿数: 5
投稿日時: 2005-10-06 00:08
引用:

なおこ(・∀・)さんの書き込み (2005-10-05 23:17) より:
お世話になります。

DataAdapterのSelectCommandのCommandTextの中身は
問題なしですか?



はい。というか、すべてのフィールドを表示しているだけです。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-06 09:05
こんにちは、じゃんぬ です。

引用:

Pakkunさんの書き込み (2005-10-06 00:08) より:

はい。というか、すべてのフィールドを表示しているだけです。


SELECT * FROM HOGE ということですか。
しかしながら、ソースを提示して頂けないと進展がないですよ。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Pakkun
会議室デビュー日: 2005/10/05
投稿数: 5
投稿日時: 2005-10-06 12:31
引用:

SELECT * FROM HOGE ということですか。
しかしながら、ソースを提示して頂けないと進展がないですよ。



大事なことを失念しておりました。すいません。

基本的にVC#のウィザードで作成したので
コードは画面上のボタンに書いた
dataSet41.Clear();
sqlDataAdapter1.Fill(dataSet41,"Customers");
これくらいです。
(Northwood DBに接続してみました。)

Selectコマンドについてもデフォルトのままで

SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region,PostalCode, Country, Phone, Fax FROM Customers

です。

別のSQLServerに接続してみましたが同じ結果でした。
mdbではうまくいったので不思議です。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-06 12:33
引用:

Pakkunさんの書き込み (2005-10-06 12:31) より:
基本的にVC#のウィザードで作成したので
コードは画面上のボタンに書いた
dataSet41.Clear();
sqlDataAdapter1.Fill(dataSet41,"Customers");
これくらいです。
(Northwood DBに接続してみました。)

Selectコマンドについてもデフォルトのままで

SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region,PostalCode, Country, Phone, Fax FROM Customers

です。

別のSQLServerに接続してみましたが同じ結果でした。
mdbではうまくいったので不思議です。


DataGridにバインドする時のソースも見せていただけますか?
Pakkun
会議室デビュー日: 2005/10/05
投稿数: 5
投稿日時: 2005-10-06 12:46
引用:

なおこ(・∀・)さんの書き込み (2005-10-06 12:33) より:
DataGridにバインドする時のソースも見せていただけますか?



プロパティとウィザードだけでやってますので、
バインドもプロパティで

DataMember Customers
DataSource dataSet41

と、設定しただけです。
datasetのプロパティでEnforceConstraintsをFalse
にしています。制約を適用すると、重複してるといって
エラーになります。

dataAdapterのデータのプレビューではちゃんと表示出来る
ことから、datasetが怪しいとは思うのですが、
本をみながらこれから勉強しようと思ってるところなので
困り果ててます。

わけのわからない質問ではありますが、もしなにか
気がつくようなことがあればよろしくお願いします。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-06 14:21
お世話になります。

引用:

Pakkunさんの書き込み (2005-10-06 12:46) より:

プロパティとウィザードだけでやってますので、
バインドもプロパティで

DataMember Customers
DataSource dataSet41

と、設定しただけです。
datasetのプロパティでEnforceConstraintsをFalse
にしています。制約を適用すると、重複してるといって
エラーになります。

dataAdapterのデータのプレビューではちゃんと表示出来る
ことから、datasetが怪しいとは思うのですが、
本をみながらこれから勉強しようと思ってるところなので
困り果ててます。

わけのわからない質問ではありますが、もしなにか
気がつくようなことがあればよろしくお願いします。


私もプロパティとウィザードでやってみましたが、特に問題なかったです。
試しに、以下のコードをDataGridだけ貼り付けたForm上で動くか
実験してみていただけますか?
コード:
private void Form1_Load(object sender, System.EventArgs e)
{
  String connectionString = "NorthWindへの接続文字列";
  
  System.Data.SqlClient.SqlConnection sqlConn;
  sqlConn = new System.Data.SqlClient.SqlConnection(connectionString);
  System.Data.SqlClient.SqlDataAdapter da;
  System.Data.DataSet ds;
    
  sqlConn.Open();
    
  da = new System.Data.SqlClient.SqlDataAdapter("SELECT * FROM Customers", sqlConn);
  ds = new DataSet();
  da.Fill(ds, "Customers");

  this.dataGrid1.DataSource = ds;
  this.dataGrid1.DataMember = "Customers";
  sqlConn.Close();
}

スキルアップ/キャリアアップ(JOB@IT)