2012-02-14 7 views
0

という名前のフィールドのデータ型がのnchar(2)のテーブルユーザーがあります。このテーブルからVS2010のデータセットが作成されました。 DataSetのフィールドの組み合わせは、System.Stringであり、maxlengthはに設定されています。私はこのDataSetにバインドされているテキストフィールドを持っています。例えば私が「00」に値を変更し、私はプログラムがデータベースに再度DataSetを更新しているときことを確認することができます保存]をクリックすると今:データ型nchar(2)の先頭のゼロ

usersTableAdapter.Update(usersDataSet.Users); 

、現在選択されているユーザーの値が「」です。

currentUser.mix = "00"; 

が、データベース内の値は、次のように保存されている: ""。なぜ最初のゼロが削除され、最後にスペースが追加されたのかわかりません。たとえば、テキストフィールドに「10」を入れて保存すると、データベースに「10」として保存されます。しかし、テキストフィールドに「01」と入力すると、先行ゼロが再び削除されます(> "1")。

+1

どこかで、この値は数値型になります(おそらく、最終的な挿入/更新によって文字列に変換されます)。この変換がどこで起こっているかを知る必要があります。 –

+0

私は行ごとにデバッグし、最終的なUpdateコードには、mixの値は常に文字列( "00")になっていますので、この変換coludがどこで起こっているのか分かりません。私はそれがデータセットとデータベースのどこかで起こると思います。 –

+0

'UpdateCommand'と' InsertCommand'( 'SqlDataAdapter'と仮定したもの)を' usersTableAdapter'で調べてみましょう。彼らの 'CommandText'は何ですか?パラメータはありますか?もしそれらが間違っていたら、 'usersTableAdapter'はどのように構築されましたか? –

答えて

1

どこかで、この値を数値型に変換しています(おそらく、最終的な挿入/更新によって文字列に変換される)。この変換がどこで起こっているかを知る必要があります。あなたのコメントに基づいて

私は行ずつデバッグし、最終Updateコードに、ミックスの値が文字列(「00」)で常に

への最後の場所あなたのSqlDataAdapterusersTableAdapter)に設定されているコマンドが表示されているか確認してください。 InsertCommandUpdateCommandを調べ、コマンドが適切であり、すべてのパラメーターが正しいタイプであることを確認してください。

私はデザイナーベースのデータアクセスではあまり働いていませんが、デザイナーでテーブルアダプターを最初に作成するときにコマンドが選択されていると思います。データセットの形状を変更したい場合(例えば列の種類を変更する)、アダプタ/データセットを削除して再作成することをお勧めします(ただし、デザイナベースのツールで簡単にすることはできません)。

関連する問題