2011-08-02 7 views
0

SQL Server 2008に接続している.Net 2.0フレームワークを対象としたVisual Studio 2010を使用しています。varchar(50)というフィールドがBox_noという表にあります。フィールドの内容はほとんどが数字で、一部は空です。ヌルは許されていますが、何もありません。プリティstraighforward間違ったフィールド型を返す.NET SQL ServerのDataAdapter?

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のID(すなわち検索が始まる場所)に従っています。フィールド box_noは時には科学記法2.4e + ....などで表示されることがあります。それ以外はテキストとして表示されます。テーブルには varcharと定義されていますが、データアダプタがDataTable構造を作成するときに異なるフィールドタイプを推測しようとしているようです。これをしないようにと言ってもらえますか?

+0

は自動生成されたdatagridviewの列ですか、手動で追加した列ですか? – agradl

+0

数値フィールドの場合でも、そのようなsql文字列を連結しないでください。あなたのnumericUpDown1値に必要な任意の文字列を埋め込む方法があり、それを使ってデータベースを完全に引き継ぐことができます。 –

+0

また、rbRestrictCountがチェックされていないという例外がスローされるようなサンプルが表示されます。 –

答えて

1

は、データ・ソースに

dtRaw.Columns["box_no"].DataType = typeof(string); 
+0

私は恐怖を助けませんでした... – RBrowning99

0

申し訳ありませんが、それを割り当てる前にこれを試してますが、問題を発見した - 科学的表記は、データ自体に実際にある - それが原因となっているようだXLSスプレッドシートからインポートしましたこれは700Kレコードのうち69Kでのものです。ありがとう

関連する問題