これ何て呼びますか Part2

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

(*)エラー時のデバッグボタンで、
その原因とされている個所

A 回答 (2件)

TextBox1.SetFocus


TextBox1.Text = sAveKosu  '←(*)

の部分で、

'TextBox1.SetFocus
TextBox1 = sAveKosu

にしてみたら直りませんか?

この回答への補足

> 'TextBox1.SetFocus
> TextBox1 = sAveKosu

この場合、
フォーカスがTextBox2に残ったままになってますので、
フォーカス位置が間違っているという
エラーになります。

Accessの場合は、値代入は、ExcelやVBと異なり、
フォーカス位置をシビアに判断してるようですので。

補足日時:2004/05/21 12:19
    • good
    • 0
この回答へのお礼

こちらで、失礼しますが、
自己解決いたしました。

修正個所:エラー発生個所

TextBox1.Text = sAveKosu
  ↓
TextBox1.Value = sAveKosu

以上のようにするとエラーが出ないようです。
お騒がせいたしました。

お礼日時:2004/05/21 12:26

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

データ型は何ですか?

この回答への補足

テキストボックスの書式、データ関連のプロパティは
特に指定していません。(デフォルトのまま)
定型入力、書式当は空白です。

よって、恐らくVariant型だろうとは思います。

コントロールの指定は行っていて、
テーブルのデータは数値です。

.Textプロパティで取得してた時点では、
文字列になってます。(""囲み)

なお、Access97 + Win98/Win2000です。
ExcelやVBでは類似処理は特に問題ありません。

補足日時:2004/05/21 09:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A