• 締切済み

Access:結果は出るがエラー

Accessのフォームにて、 あるテキストボックスに入力した値を元に計算を 行い、別のテキストボックスに入れる という処理を行っていますが、 その際、結果としては出るのですが、 以下のようなエラーメッセージがでて、 原因を探っていますが良く分からない状態です。 エラーメッセージ: 実行時エラー '2115' "BeforeUpdate/更新前処理"プロパティまたは、 このフィールドの"ValidationRule/入力規制"プロパティ にせっていしたマクロまたは関数のためにこのフィールドのデータを保存できません。 該当するテキストボックスのプロパティに これら2箇所は一切何も指定していません。 また、エラーが発生しているにもかかわらず、 結果が出ているという点も腑に落ちません。 また、DoCmd.SetWarnings False によるメッセージ表示抑制も試してみましたが、 効果がありません。 ソース: TextBox1:結果出力先 TextBox2:このソースの呼び出し側(AfterUpdate) wkVal1、wkVal2:Long型変数 BkMcnt:任意数(integer型:1~12の間) BeforVal:任意数(Public,Long型)   (前略:BkMcntの算出) TextBox1.SetFocus If TextBox1.Text = "" Then   wkVal1 = 0 Else   wkVal1 = CLng(TextBox1.Text) End If TextBox2.SetFocus If txtJis5.Text = "" Then   wkVal2 = 0 Else   wkVal2 = CLng(TextBox2.Text) End If AveKosu = (wkVal1 * BkMcnt) - BeforVal AveKosu = AveKosu + wkVal2 AveKosu = Fix((AveKosu / BkMcnt) + 0.5) sAveKosu = CStr(AveKosu) TextBox1.SetFocus TextBox1.Text = sAveKosu  '←(*) TextBox2.SetFocus (*)エラー時のデバッグボタンで、 その原因とされている個所

みんなの回答

noname#6356
noname#6356
回答No.2

TextBox1.SetFocus TextBox1.Text = sAveKosu  '←(*) の部分で、 'TextBox1.SetFocus TextBox1 = sAveKosu にしてみたら直りませんか?

MRT1452
質問者

お礼

こちらで、失礼しますが、 自己解決いたしました。 修正個所:エラー発生個所 TextBox1.Text = sAveKosu   ↓ TextBox1.Value = sAveKosu 以上のようにするとエラーが出ないようです。 お騒がせいたしました。

MRT1452
質問者

補足

> 'TextBox1.SetFocus > TextBox1 = sAveKosu この場合、 フォーカスがTextBox2に残ったままになってますので、 フォーカス位置が間違っているという エラーになります。 Accessの場合は、値代入は、ExcelやVBと異なり、 フォーカス位置をシビアに判断してるようですので。

  • akl
  • ベストアンサー率15% (3/20)
回答No.1

両方のテキストボックスのデータ型はあってるのでしょうか。データ型は何ですか?

MRT1452
質問者

補足

テキストボックスの書式、データ関連のプロパティは 特に指定していません。(デフォルトのまま) 定型入力、書式当は空白です。 よって、恐らくVariant型だろうとは思います。 コントロールの指定は行っていて、 テーブルのデータは数値です。 .Textプロパティで取得してた時点では、 文字列になってます。(""囲み) なお、Access97 + Win98/Win2000です。 ExcelやVBでは類似処理は特に問題ありません。