• ベストアンサー

ACCESSの値の代入に関して

ACCESS2000を使用しています。 あるテキストコントロールに8桁のコードを入力します。 入力後、更新後のアクションで隣にあるコントロールに=left(8桁のコントロール,4)の 値を代入する仕組みを作成したのですが、この8桁に数字と文字(アルファベット)が 混在することがあり、数字のみの場合はなんなく代入できるのですが、文字が混在する 場合、エラーとなってしまいます。 代入するコントロールのデータ型は勿論テキスト型にしております。 このエラーの対処方をご存知の方がいらっしゃいましたらご教授お願いします。

  • xmoto
  • お礼率80% (34/42)

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

ひょっとして、マクロの「値の代入」で、以下のように設定していませんか? アイテム : Forms!○○!○○ 式:=Left(Forms!●●!●●) だとしたら、「Left」の前の「=」を削除すれば、ご希望通りの動作をすると思います。 (Access2000で確認)

xmoto
質問者

お礼

!!!!!!!!!!ズバリ!!!!!!!! DexMachinaさんの回答で解決できました!!! ありがとうございます。 これで作業効率が倍増します。

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

Left関数はバリアント型の値を返すので文字数字が混在していても大丈夫なのですが・・。 >入力後、更新後のアクションで・・ は更新後のイベントに 隣のコントロール名 = Left(8桁のコントロール, 4) または Me!隣のコントロール名 = Left(8桁のコントロール, 4) のようにしてあるのですよね? これならイベントの実行に問題ないはずです。 数字・ひらがら・英字等何でも4桁切り出してきます。 または 隣のコントロール名 = Mid(8桁のコントロール,1,4) でもいけますが。 >文字が混在する場合、エラーとなってしまいます どのようなエラーでしょうか?

xmoto
質問者

お礼

ありがとうございました。

noname#29127
noname#29127
回答No.1

>隣にあるコントロール が数値のみの入力しか受けつけなくなっていませんか? left関数は文字の切り出しに対応していると思いますので 文字が入っていても大丈夫だと思いますが。 問題のきりわけのために、left関数の結果だけ画面表示するとか されてみては。

xmoto
質問者

補足

コントロールのデータ型はテーブルに設定されたデータ型が適用されるのですよね? エラーの後にハンドで入力すると何事もなくデータは格納されるのです。 何がいけないのだろう・・・?

関連するQ&A

  • ACCESSで値を代入できないとは?

    ACCESS2000を使用しています。 フォームを作り、画面のテキストボックスに値を入れると、エラーになります。 エラーコードは 2448。 エラーメッセージは オブジェクトに値を代入できない と出ますが、ヘルプが参照できません。 どういうことなのでしょうか。

  • web上のTextBoxに値を代入したい

    asp.netとVBでwebプログラムを作成しています。 web上にTextbox1~Textbox10を置いて、それぞれに1,2,3,4・・・・10を代入したい場合 Textbox1.text = 1 Textbox2.text = 2 ・ ・ Textbox10.text = 10 と書けば、それぞれに数字が代入され表示されますが、 For i = 1 to 10 Me.controls("Textbox" & cstr(i)).text = i Next と言うような書き方でコンパクトにまとめることは可能なんでしょうか? ちなみに、上記の記述をすると、「.textはSystem.Web.UI.Controlのメンバーでない」旨の エラーになります。 どなたかご教示お願いします。

  • 「バリアント型でない変数に Null 値を代入しようとしました」と、ならないようにしたい

    access フォームのテキストボックスにID(数字)を手入力し、 テーブルから情報を引き出すというのを作っています。 問題は、一度入力した数字を消した後(バックスペースキーやデリートキーや切り取り)、エンターキーを押すと 「バリアント型でない変数に Null 値を代入しようとしました」 と表示されてしまう点です。 業務上支障はありませんが、この表示を無くしたいのです。 このIDは常に5桁である必要がある為、 フォーム上では定型入力を”99999”としております。 テーブル上ではテキスト型としております。 どのようにすれば、解決できるでしょうか。

  • ACCESS2021に変えたら値が代入されない

    開いてくださりありがとうございます。 MS-ACCESS2003で開発した業務システムがあります。 今回、ACCESS2021(Microsoft365)に変更したところ、不可解な動作が生じていて非常に困っています。 以下に抜粋したコードを記載します。 -- Me!税抜合計 = Me!小計 Me!消費税 = Me!消費税計 Me!伝票合計 = Me!総額 -- 伝票入力フォームから伝票明細を入力し、その合計が表示されるテキストボックスの値を作業用のテキストボックスに代入しています。 ブレイクポイントで停止させて確認すると、右側の項目には間違いなく値が入っている(マウスポインターを合わせると例えば1000と表示される)のですが、左側の項目は0のままです。 この状況は伝票明細が5行以上の時に発生します。 (4行以下の伝票では発生しません) しかもACCESS2003では問題なく動作していました。 値が代入されないのは長く開発していて初めての現象です。 ぜひアドバイスをお願いします。

  • Access(office)のマクロの「値の代入」を使用するとき、式に

    Access(office)のマクロの「値の代入」を使用するとき、式にフォームにテキストボックス値を入力させたいのですが、対象のテキストボックスが「001234」と頭に「0」がつくテキストのせいか、入力値は「1234」となってしまいます。頭に「0」を入れて入力させたいのですがどうしたらよいでしょうか? 使用ソフトはAccess2000です。 ご教授お願いします。

  • accessのこのオブジェクトに値を代入することはできません エラー

    accessでデータベース参照システムを作成しているのですが、このオブジェクトに値を代入することはできません というエラーがでています。 色々過去ログを調べたのですが、私の内容と該当しそうなのがみつかりませんでした。 TABLE_A 親番号 子番号 項目a... b.... 3 , 1 , xxxxxxxxxxx 3 , 2 , xxxxxxxxxxxx TABLE_AとリンクしているフォームXを開きます。 開いたあと、filterをかけています。(例 filter : 親番号 = 3) そのフォームには、コントロールソースがいくつもあります。 編集ロックを解除して、データベースの内容を上書きしています。 新規作成時には、子番号という、テーブルのキー情報にだけ値を入れて(既存のmax値+1)、その他の項目を全てnullにして、データの新規登録を可能にさせています。 (例 : 3, 3 , xxxxxxxxのデータが作成される) ここまでは動作しています。 やりたいことは、親番号4という、TABLE_Aにない情報で、上記で、同じくフォームxを開いたあと、新規登録を可能にしたいのですが、 子番号のコントロールボックス(テキストボックス)に、1という新規番号をいれようとしたら、エラーになります。 内容は、{このオブジェクトに値を代入することはできません}です。 この解決方法がなかなかみつかりません。 説明が難しいので伝わりにくいかもしれません。 なにかありましたら、説明させて頂きます。 フォームは、 DoCmd.OpenForm stDocName, , , stLink で開いています。

  • accessのフィールドに10桁の数字は入らない??

    あるCSVからAccessのテーブルに読みこんだのですが 一部のフィールドで文字の欠落がありました。 元のCSVの内容どおりに、手入力で欠落した箇所に 値を入れようとしたのですが、どうも9ケタの数字は入るのですが 10桁の数字は入らないようでエラーが出ます。 ★メッセージは以下の通りです。  このフィールドに入力した値が正しくありません。  たとえば、数値型のフィールドに文字列を入力しました。 Accessの仕様として、数字の桁数制限があるのでしょうか? また、解決策は何かないでしょうか? XP2、ACCESS200です

  • テキストボックスに入力された値の判定

    Visual Studio2010初心者です。C#で学習しています。 テキストボックスに入力された値が数字(0~9)かそうじゃないか判定をしたいです。 テキストボックスに文字が入力されたらエラーとして検知したいのですが、どのように処理をすればよろしいでしょうか? ネットで調べるとTryParseメソッドでできるみたいですが、よくわかりません・・・ よろしくお願いします。

  • エクセル:数値をテキスト形式で揃えたい

    5~6桁の、英字と数字の混在したコードのついたデータが一万件ほどありまして、これを利用してピボットテーブルで処理しなければならないのですが、 いろんな人が処理するデータなので、数字のみの(アルファベットの混ざらない)コードの場合、数値のものとテキスト形式のものが混在していて、同じコードがテーブル上で別々になってしまいます。 数字のみでテキスト形式の場合、セルの左上に緑色の三角のエラーインジケータが付いて 「このセルにある数値が、テキスト形式か、またはアポストロフィで始まっています。」 とメッセージが出ますが、これが付いた状態のほうがソートしたときに英数字の混ざったものときれいに並ぶので、この状態で扱いたいのです。 どうやらセルの設定を文字列にして入力しただけではこの状態にならないようで、今は既存の三角のついたものと同じ数字を手作業で貼り付けたりしていますが、数値の入ったセルを一度にテキスト形式にする方法はあるでしょうか? (この逆のパターンだったら、範囲選択して左に出る◇に!のついた部分をクリックして「数値に変換する」を選べばよい話なのですが…。)

  • 値の代入?

    お世話になっております。 Excelでご教授ください。 A1、B1、C1とセルがあります。 A1に何かの文字がはいるとC1セルにOKと表示されるようにしています。 A1が空白の場合は空白になります。 B1は入力規則でOKとNOのみ選択できるようにしています。 ここからがわからないのですが、C1に表示されたOKまたは空白をB1に代入(?)させたいのですがそれが上手くいきません。 わかる方いましたらご教授ください。

専門家に質問してみよう