• 締切済み

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

hatena1989の回答

回答No.3

> 一つ目ですが、どんな値が入っているか調べようと思い、 > テキストボックスを作成し、そのコントロールソースに直接 >  = DLookup("単価","単価マスター","単価ランク=" & Me.単価ランク) > と指定したのですが、後ろの部分が自動的に [Me].[単価ランク] にされてしまい > うまくいきませんでした。 Me というキーワードはVBAのコード中でしか使えません。 >  = DLookup("[単価]", "単価マスター", "[単価ランク]=" & [Forms]![frm結果入力]![単価ランク]) > と指定したところテキストに単価の数値が入りました。 その式でもいいのですが、同じフォーム上のフィールドやコントロールを参照するときは、フォーム名を省略することでできます。 = DLookup("[単価]", "単価マスター", "[単価ランク]=" & [単価ランク]) >   Private Sub 単価ランク_AfterUpdate() >   Me.料金=DLookup("[単価]", "単価マスター", "[単価ランク]=" >   & [Forms]![frm結果入力]![単価ランク]) >   End Sub > と指定してみたのですが、うまくいきませんでした。 "[単価ランク]=" の後に改行が入ってますが、実際のコードにも入ってますか。 入っているなら削除してください。 ここに書き写すときに整形するために入れたのならいいのですが。 で、うまくいかないとは具体的にどのようになるのでしょうか。 エラーメッセージがでるとか、なんの反応もないとか、詳細に説明してください。 > それから二つ目ですが Me.更新日 = Date() と入力したのですが > () が自動的に消されて Me.更新日 = Date となってしまい > うまくいきませんでした。 () は消されても問題ないです。コード的には問題ないですね。 それで実行したときにどうなるのか。エラーがでるのか、でるならどんなエラーなのか。 何の反応もないのか。これも説明してください。 あと、コードを編集した後、VBAウィンドウのメニューの[デバッグ]-[****のコンパイル]をクリックしてから、上書き保存するようにしてください。コンパイルするとコードに構文間違いがあると指摘してくれます。

crabcan
質問者

補足

遅い時間に考えていただきありがとうございます。 補足で説明させていただきます。 改行についてはしていません。 ご推測の通り説明する時に長すぎて見づらいと思い改行しました。 実行結果については、どちらも特にエラーメッセージは表示されず 画面で見る限りは何も入っていないように見えます。 該当項目に移動し金額や日付を入力し更新ボタンをクリックすると 正常に反映されていました。 コンパイルはご説明いただいた通りに行いエラーがないのを確認してから SAVEしました。 私がわかる状況はこの程度ですが、これで判断できるでしょうか。 宜しくお願いします。

関連する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