0

Box_no.Net 2.0 フレームワークを対象とする Visual Studio 2010 を使用して、SQL Server 2008に接続してvarchar(50)います。フィールドの内容はほとんどが数値で、一部は空です。Null は許可されていますが、何もありません。

このテーブルをクエリしてグリッドに表示するコードは次のとおりです (else は省略されています)。

DataTable dtRaw = new DataTable();
SqlDataAdapter sdaRaw;
if (rbRestrictCount.Checked)
{
   sdaRaw = new SqlDataAdapter("Select top 50 * from MyTable where ID >= \'" + numericUpDown1.Value + "\' Order By ID",
                                                       Properties.Settings.Default.ConnStr);
};
sdaRaw.Fill(dtRaw);
dataGridView1.DataSource = dtRaw;

かなり簡単です。問題は、ID の値 (つまり、検索の開始点) に応じて、フィールドbox_noが科学表記法 (2.4e+.... など) で表示される場合と、テキストとして表示される場合があります。テーブルのように明確に定義されvarcharていますが、データ アダプターが DataTable 構造を作成するときに別のフィールド タイプを推測しようとしているようです。これをしないように伝える方法はありますか?

4

2 に答える 2

1

データソースに割り当てる前にこれを試してください

dtRaw.Columns["box_no"].DataType = typeof(string);
于 2011-08-02T18:06:18.573 に答える
0

申し訳ありませんが、問題が見つかりました - 科学表記法は実際にはデータ自体にあります - これは XLS スプレッドシートからのインポートであり、700K レコードのうち 69K でこれを引き起こしたようです。ありがとう

于 2011-08-02T21:01:36.837 に答える