- ベストアンサー
ACCESSの値の代入に関して
ACCESS2000を使用しています。 あるテキストコントロールに8桁のコードを入力します。 入力後、更新後のアクションで隣にあるコントロールに=left(8桁のコントロール,4)の 値を代入する仕組みを作成したのですが、この8桁に数字と文字(アルファベット)が 混在することがあり、数字のみの場合はなんなく代入できるのですが、文字が混在する 場合、エラーとなってしまいます。 代入するコントロールのデータ型は勿論テキスト型にしております。 このエラーの対処方をご存知の方がいらっしゃいましたらご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ひょっとして、マクロの「値の代入」で、以下のように設定していませんか? アイテム : Forms!○○!○○ 式:=Left(Forms!●●!●●) だとしたら、「Left」の前の「=」を削除すれば、ご希望通りの動作をすると思います。 (Access2000で確認)
その他の回答 (2)
- O_cyan
- ベストアンサー率59% (745/1260)
Left関数はバリアント型の値を返すので文字数字が混在していても大丈夫なのですが・・。 >入力後、更新後のアクションで・・ は更新後のイベントに 隣のコントロール名 = Left(8桁のコントロール, 4) または Me!隣のコントロール名 = Left(8桁のコントロール, 4) のようにしてあるのですよね? これならイベントの実行に問題ないはずです。 数字・ひらがら・英字等何でも4桁切り出してきます。 または 隣のコントロール名 = Mid(8桁のコントロール,1,4) でもいけますが。 >文字が混在する場合、エラーとなってしまいます どのようなエラーでしょうか?
お礼
ありがとうございました。
>隣にあるコントロール が数値のみの入力しか受けつけなくなっていませんか? left関数は文字の切り出しに対応していると思いますので 文字が入っていても大丈夫だと思いますが。 問題のきりわけのために、left関数の結果だけ画面表示するとか されてみては。
補足
コントロールのデータ型はテーブルに設定されたデータ型が適用されるのですよね? エラーの後にハンドで入力すると何事もなくデータは格納されるのです。 何がいけないのだろう・・・?
お礼
!!!!!!!!!!ズバリ!!!!!!!! DexMachinaさんの回答で解決できました!!! ありがとうございます。 これで作業効率が倍増します。