• 締切済み

レコード更新時にデータ値を自動入力したい

hatena1989の回答

回答No.2

> 該当フォーム上の単価ランクのプロパティシートの更新後処理の欄に教えていただいた > 式をいれてみましたが、うまくいきませんでした。 ひょっとすると更新後処理の欄に直接コードを記述したのかな。 更新後処理にイベントプロシージャとして関連づけるには、下記の手順で。 更新後処理のドロップダウンリストから [イベント プロシージャ] を選択。 右端のビルドボタン[...]をクリックする。 VBAウィンドウが開き、下記のように表示されるので、 Private Sub 単価ランク_AfterUpdate() End Sub 真ん中の行に下記のようにコードを記述します。 Private Sub 単価ランク_AfterUpdate() Me.料金=DLookup("単価","単価マスター","単価ランク=" & Me.単価ランク) End Sub 二つ目についても、イベントプロシージャが下記のようになるようにしてください。 Private Sub Form_BeforeUpdate(Cancel As Integer) Me.更新日 = Date() End Sub

crabcan
質問者

補足

懇切丁寧なご説明ありがとうございます。超初心者の私には大変ありがたいです。 イベントプロシージャなるものの存在もわかり一歩前進できました。 それで結果ですが申し訳ないですが、うまくいきませんでした。 それで昨日、今日と私なりに試したことを報告しますので、どこが悪かったか 指摘していかだけませんでしょうか。 一つ目ですが、どんな値が入っているか調べようと思い、 テキストボックスを作成し、そのコントロールソースに直接  = DLookup("単価","単価マスター","単価ランク=" & Me.単価ランク) と指定したのですが、後ろの部分が自動的に [Me].[単価ランク] にされてしまい うまくいきませんでした。 それでDLookup関数を調べ  = DLookup("[単価]", "単価マスター", "[単価ランク]=" & [Forms]![frm結果入力]![単価ランク]) と指定したところテキストに単価の数値が入りました。 そこでイベントプロシージャに   Private Sub 単価ランク_AfterUpdate()   Me.料金=DLookup("[単価]", "単価マスター", "[単価ランク]="   & [Forms]![frm結果入力]![単価ランク])   End Sub あるいは   [Forms]![frm結果入力]![料金] = DLookup("[単価]", "単価マスター", "[単価ランク]="   & [Forms]![frm結果入力]![単価ランク]) と指定してみたのですが、うまくいきませんでした。 情報不足かと思いますが、わかる範囲で教えていただけませんか。 それから二つ目ですが Me.更新日 = Date() と入力したのですが () が自動的に消されて Me.更新日 = Date となってしまい うまくいきませんでした。

関連するQ&A

  • レコードの更新履歴について

    Oracle初心者です。 レコードの更新履歴を残す方法を考えているところです。 ■やりたいこと 1)登録、更新、削除の全てについて 2)実行前のレコードを抽出したい 3)特定レコードの更新履歴を一覧として表示したい ■対象レコード ID(主キー、ユニーク) フィールドA(テキスト) フィールドB(テキスト) フィールドC(テキスト) 1つ方法として・・・ 履歴を残したいテーブルと同じ構造の履歴テーブルを作成して、登録、更新、削除が行われる際、必ずこの履歴テーブルに登録することを考えました。 が、あまりスマートでない気もしましたので質問します。 他によい案はありますでしょうか?

  • AXXESSでフォームに表示されているレコードを更新する方法

    いつもありがとうございます。 今回もACCESSの質問です。 顧客マスタを作成し、フォームからフィルターで抽出したレコードが画面に表示されています。 コマンドボタンを押す事でこのレコードの特定のフィールドを更新したいと考えています。 ADOでレコードセットをOPENし、FindしてUpdateする方法だとレコードの競合が発生してしまいます。 簡単にできる方法があるような気がしますが思いつきません。 どなたかお助けをお願いします。

  • Access2003の更新クエリ、レコードの更新欄のフィールド名を自動的に入力するには?

    AとBという2つのテーブルが、全く同じフィールドを30個持っています。 AとBでIDが同一のモノのみ、AにBのデータを丸々更新したいのですが [B].[フィールド名1]というように、IDを除いた残り29個のレコードの更新の欄に 手入力する方法で現在行っています。 追加クエリなどだとフィールドが同じ場合は自動的にレコードの追加欄にフィールド名が現れるのですが 同様に更新クエリでもフィールド名を自動的に出す方法はありますか? 現在上記のような更新クエリを10件以上新規で作成しなければならないのですが 各件に29個も手入力で行うのが非常に面倒でなりません。 やはりSQL等で仕組んでいくようにするのでしょうか?

  • 票フォーム-データ更新について

    Access2003を利用しています。 伝票入力用のワークテーブルを帳票フォームで入力しようとしています。 (ワークテーブル内容) ID 商品コード 商品名 数量 単価区分 単価 金額 単価A 単価B 単価C  ・  ・ (10種類の単価設定あり) 単価J 帳票フォームのレコードソースにワークテーブルをセットして (表示) 商品コード、商品名、数量、単価 金額 (非表示)A単価、B単位、C単価、~J単価 としています。 商品コードが入力されると、商品マスターから情報を取得して 単価A~Jに値をコピーしています。 txt単価A = recW("単価A")  txt単価B = recW("単価B")  txt単価C = recW("単価C")    ・   ・ txt単価J = recW("単価J")  ここで質問ですが、 現状だとレコードに値を入れたい場合、 非表示のテキストボックスを利用していますが フォームのレコードセットにそのまま代入する方法はないでしょうか? 初心者の質問でお恥ずかしいですが、何卒、ご教授ください

  • アクセスの自動入力フォームに手動で入力したい

    初心者ですが、ネットで調べながらaccess2013で、納品書フォームを作りました。 納品書明細テーブルと商品マスタテーブル(商品コード、品番、単位)を納品書明細クエリで紐づけしてフォームを作成しました。商品コードを入力すると、自動的に品番と単位が入るようになっています。 ここで、商品コードがついていない商品(商品マスタに含まれず、今後登録する予定もない)も品番と単位の欄に手動で入力できるようにしたいのですが、可能でしょうか。 今手動で入力すると「フィールド'商品コード'とキーが一致しているレコードをテーブル'商品マスタ'で探すことができません」とエラーが出てしまいます。 ご教示いただけましたら幸いです。よろしくお願いいたします。

  • Access更新クエリの「レコード更新」をフォームから指定する方法

    お世話になっています。 早速ですが質問があります。 テーブルにあるフィールドの値を全て変更する更新クエリを作成したのですが、出来ればフォームから指定したいのです。 どうやったら「レコードの更新」の値をフィールドから指定出来るのでしょうか? 以上、よろしくお願いします

  • 【Access2002】サブフォームのレコードを自動的に1行表示させたい

    お世話になります。 契約社員の契約更新を管理するDBを作っています。 社員マスター(社員NO,氏名、部署...主キーは社員NO)と をメインフォームに 契約マスター(社員NO、回数、更新済・・・主キーは社員NOと回数) をサブフォームにして フォームを作成中です。 例として 社員NO 010 氏名 田中太郎 営業部←メイン 回数 1回目、更新済YES/NO(チェックボックス)←サブ というレコードを持つとします。 契約社員は半年後に2回目の更新をするのですが、 その際、「回数は入っているが(2回目)更新済がNOのもの」という 選択クエリで次に更新する契約社員を抽出したいとおもいます、 今は、この2回目というのを手入力していますが(コンボボックス) 1回目の更新済がYESになれば、自動的に 回数の2回目を入力できた状態であれば非常に楽になります。 関数か簡易なVBAで何かいい方法があれば教えてください。 ちなみに回数は6回目が上限で、常に次の1回分だけ回数が自動的に入ってほしいです。(1,2回目が更新されているのなら3回目が入っている状態) よろしくお願いします

  • アクセスフォームのデータ入力

    教えてください。 アクセス2000で銀行残高管理DBを作っています。 データ入力用フォームで次のフィールドがあるとします。 (1)支払先(2)借方科目名(3)貸方科目名(4)金額(5)摘要 1)同じフォームで複数行のレコードを入力できるようにしたいのですができますか? たとえば5行くらいです。  2)同じ科目の取引が何回も続くような場合に、実行キーを押すと前の行の同じフィールドのレコードを自動的に入力させることはできますか? 以上、ご指導お願い致します。

  • Accessのフォームでデータを入力すると、テーブルと一致するデータをあるフィールドに代入してしまうことは可能ですか?

    本来のAccessの使い方ではないかもしれませんが・・・。 あるフォームで品番を入力すると、品番マスターなるテーブルから値を 検索して一致したフィールド(品名・数量)の値を直接フォームの フィールドに代入してしまうことは可能ですか? マクロの値の代入というものを使ってもうまくいきません。 また、クエリーを使えば、品番を入力すれば品名・数量が出るように することはできるのですが表示上だけですので、フォームに直接値 が入力されるようにしたいのです。 方法がうまく思いつきません。どうかお知恵をお貸しください!!

  • Access2003で、フォーム画面でデータを入力すると、他のレコード

    Access2003で、フォーム画面でデータを入力すると、他のレコードの同じフィールドが全て同じデータになってしまいます。 変更すると、同じ様に全てのレコードのデータが変更されてしまいます。 1件1件別のデータを入力出来る様にするにはどうしたら良いでしょうか? どなたか教えて下さい。 宜しくお願いしますm(_ _)m