- - PR -
空文字列不許可のフィールドにデータをNull値にして保存したい
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-08 22:47
こんばんは。お世話になっています。
いつもこちらを参考にさせていただいています。 現行のAccessシステムから、Access+VB2005への移行を試行しています。 Accessの「空文字列(長さ 0 の文字列)の許可 = いいえ」のフィールドから読込んだデータテーブルに 連結されたTextBox・ComboBox・DataGridViewTextBoxColumn等の値をクリアし、Accessに再保存しようと すると、「フィールド 'xxx' には、長さ 0 の文字列を格納できません。」とのエラーとなってしまいます。 エラーメッセージの意味・原因は理解しているつもりですが、Accessのフィールドプロパティを現行の ままで、クリアしたデータをNull値としてAccessに再保存するにはどうしたらよいのでしょうか? なお、ComboBoxは、DropDownStyleをDropDownListにしているため、このコントロールのKeyDownイベントで 「ComboBox.SelectedIndex = -1」や「ComboBox.SelectedValue = DBNull.Value」をしてました。 よろしくお願い致します。 | ||||
|
投稿日時: 2007-02-08 22:55
NULL を許可すればいい。
ってことじゃないの? _________________ | ||||
|
投稿日時: 2007-02-08 23:00
saki1208です。
データベース上の制約の問題ですから、プログラムで無理矢理ってのは不可能では... ちなみに、Accessのデータベース上でフィールドのプロパティ「値要求」をいいえ にすればできるはずです。 ・主キーの場合はダメです。 | ||||
|
投稿日時: 2007-02-08 23:02
Access なら「値要求」に「いいえ」
| ||||
|
投稿日時: 2007-02-08 23:34
Jittaさん、saki1208さん、ちゃっぴさん、早速のご返事ありがとうございます。
Accessヘルプでは、 Required/値要求:フィールドに値が必要かどうかを示します。・・・こちらがNull値に関係します。 AllowZeroLength/空文字列の許可:テーブルのフィールドで長さ 0 の文字列 ("") を入力してもよいかどうかを示します。 となっており、 問題のフィールドは、どちらも「いいえ」を選択しているフィールドです。(主キーでもありません。) Accessフォームの場合は、データをBackSpaceなりDeleteでクリアすれば、問題なく保存できます。 (Null値と見なして保存してくれるのかな? 全く不明です。) 同様の事をWindowsFormでもできないものか? あるいは、保存直前やレコード(Row?)のValidating イベントあたりで、空文字列だったらDBNull.Value?を代入とかできないものか? と質問させて いただいた訳です。 (AccessならTextBox = NullがOKなんですが、TextBox.Text = DBNull.Valueは、エラーです。) Accessが特殊ってことなんでしょうね? もう一度、最小単位でテストしてみます。 | ||||
|
投稿日時: 2007-02-08 23:41
saki1208です。
確認はしてませんが... 連結フィールドなのでは? (フォームのレコードソース、コントロールのコントロールソースを 指定していませんか) 非連結のテキストボックスでは、Nullの代入はエラーになるはずです。 >Access上での話です。 TextBoxのTextプロパティは文字列なのでNullはNGなのでは? [ メッセージ編集済み 編集者: saki1208 編集日時 2007-02-08 23:43 ] | ||||
|
投稿日時: 2007-02-08 23:46
よく分からないですが、
当然、string.empty はだめですよねぇ… _________________ 元 dbMagic使い 石油系会社で101NEO(Java簡易言語) 鉄道系システムではテスト仕様書作成でかんづめ 某大手ソフトウェア会社でシステム障害対応 今はTVCMで結構有名な会社で、 なぜか派遣なのにシステム管理者とネットワーク管理者を兼任 (別名 | ||||
|
投稿日時: 2007-02-09 00:12
saki1208さん、かあどきゃぷたーさん、ご返事ありがとうございます。
saki1208さん > 確認はしてませんが... > 連結フィールドなのでは? > (フォームのレコードソース、コントロールのコントロールソースを > 指定していませんか) > 非連結のテキストボックスでは、Nullの代入はエラーになるはずです。 > >Access上での話です。 こちらは、Accessフォームの話と理解して良いでしょうか Accessの場合は、連結でも非連結でもNullの代入はOKです。 ちなみにAccessの場合、TextBox = Nullは、TextBox.Value = Nullと同じです。 (Textプロパティはないです。) > TextBoxのTextプロパティは文字列なのでNullはNGなのでは? その通りの、エラーになります。 かあどきゃぷたーさん string.empty もダメでした。 「フィールド 'xxx' には、長さ 0 の文字列を格納できません。」とのエラーとなってしまいます ちなみに、最小単位の保存直前に代入してみました。 Me.Fldテスト2TextBox.Text = String.Empty Me.Validate() Me.TblテストBindingSource.EndEdit() Me.TblテストTableAdapter.Update(Me.TestDataSet.tblテスト) |
1|2|3|4
次のページへ»