明細Noの自動付与で失敗続き

このQ&Aのポイント
  • アクセスで、作業実績を入力する、フォーム/サブフォーム型のものをチャレンジ中です。
  • 明細番号の自動付与ですが、明細行である項目の更新後のイベントをマクロで指定していますが、どうやってもエラーが出ます。
  • どこかおかしいところがありましたら、ご教示下さい。
回答を見る
  • ベストアンサー

明細Noの自動付与で失敗続き

アクセスで、作業実績を入力する、フォーム/サブフォーム型のものをチャレンジ中です。 壁に当たりました。 明細番号の自動付与ですが、明細行である項目の更新後のイベントをマクロで指定 していますが、どうやってもエラーが出ます。 どこかおかしいところがありましたら、ご教示下さい。 errorメッセージ 実行マクロ名 条件 True: [Forms]![Frm_Q_作業日報ソース]![Q_作業日報明細ソース サブフォーム].[Form]![明細No] Is Null アクション 値の代入 引数 [Forms]![Frm_Q_作業日報ソース]![Q_作業日報明細ソース サブフォーム].[Form]![明細No], DCount("[作業日報CD]"," [Q_作業日報明細ソース]","[作業日報CD]= Forms![Frm_Q_作業日報ソース]![Q_作業日報明細ソース サブフォーム].Form![作業日報CD]")+1

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

  • ベストアンサー
noname#79209
noname#79209
回答No.1

フォームのソースがクエリーだからでは? わたしなら入力用の作業用テーブルをつくってそこへ入力後、本来のテーブルへインサートします。 あと、マクロでなくプロシージャを使います。 それと、最初は[作業日報CD]が「Null」値なので「+1」がエラーになってるのかも。

関連するQ&A

  • ボタン押下でサブフォームのレコードソースを変更

    ボタン押下でサブフォームのレコードソースを変更 する方法を探しています。 元とするテーブルは同じですが、拾うべきフィールドが全く異なるため2つのクエリを作成しました。 元テーブル「メンバー一覧」 クエリ「q_1組のみ」「q_女性のみ」 フォームヘッダーにコンボボックスでどちらかのクエリを選択し、ボタンを押したら サブフォームが表示されるようにしたいのですが、 現在のところ、「閉じているかまたは存在しないオブジェクトを参照」というエラーが出てしまっています。 Me.でもForms("検索ウィンドウ").でも結果は同じでした。 ソースはクエリを指定しています。 Access2007 --------------------------------- Private Sub 検索ボタン_Click() If [Forms]![検索ウィンドウ]![申込形態] = "1組のみ" Then Me.検索結果サブフォーム.Form.RecordSource = "q_しぼりこみ1" Else Forms("検索ウィンドウ").検索結果サブフォーム.Form.RecordSource = "q_しぼりこみ2" End If

  • 【ACCESS2003】サブフォーム名を変数に入れたい

    ACCESS2003で開発しています。 ひとつのフォーム(Form1)にサブフォームを10個(SubForm01からSubForm10まで)配置しており、そのフォーム内のボタンで1つのサブフォームを切り替え表示するようにしています。 サブフォーム部分だけがページ遷移しているように見えるような感じのことしたいので、こんな面倒なことをやっています。 各サブフォームの処理は全く一緒なのですが、サブフォームが10個もある為に同じ処理をForm1に10まとまり書かないといけないので、サブフォームの名前を変数にできないかなと考えていますがやり方がわかりません。 下記ソースで色々試してみたのですが、だめでした。 具体的にはサブフォーム(SubForm01~SubForm10まで)のテキストボックス(txtBox1~txtBox30)に順に値を入れたいということです。 教えてください。 Dim strPageCnt As String 'サブフォームの番号 '(処理省略)ここでstrPageCntに01から10までのいずれかの値を放り込んでいます。 For i = 1 To rs.RecordCount 'レコードセット最大値までループ '↓ここでサブフォーム名を変数に入れる    strSubForm = frmLOT31010_SubForm & strPageCnt '↓この方法もだめ    Forms!Form1!strSubForm!txtBox(i).Value = rs("NO").Value    '↓この方法もだめ    Forms!Form1!SubForm("strPageCnt")!txtBox(i).Value = rs("NO").Value '↓これもだめ    Forms!Form1!SubForm(strPageCnt)!txtBox(i).Enable = False    '↓これもだめ Forms!Form1!SubForm(strPageCnt)!txtBox(i + 1).SetFocus next どのようにすればサブフォームの名前を変数に入れて、なおかつサブフォーム名を可変にし(ここで言うところのサブフォームの最後の数値を変えて)サブフォームが扱えるようになりますか? 教えてください。よろしくお願いいたします。

  • 選択クエリーについて

    すでに出来上がっている選択クエリーを実行したときに、何レコード抽出されるか事前に知りたい場合、 DCountのような関数で知ることは可能でしょうか? Me![F_サブフォーム名].Form.RecordSource = "Q_クエリー名"のように、 サブフォームで明細を表示する前に、何件合致しましたという表示をさせたいのですが・・・。 (選択クエリーなので、テーブルを作成しているわけではありません。)

  • メイン・サブフォームの内容を更新クエリで更新したい

    お世話になります。 現在、 tb受注日報(親)、tb受注伝票(子)で、受注伝票をサブフォームという形で組み込んだ【受注日報フォーム】と tb作業表(親)、tb作業表明細(子)で、作業表明細をサブフォームという形で組み込んだ【作業表フォーム】 があります。 【受注日報フォーム】上にあるコマンドボタンのマクロに、親同士、子同士での追加クエリを設定し、ボタンを押せば【受注日報フォーム】に入力した内容を【作業表フォーム】に反映させられるようにしています。 この要領でコマンドボタンを押せば以前に入力した【受注日報フォーム】の更新内容を【作業表フォーム】に反映させられるようにしたいと考えています。 そこで、親同士、子同士で更新クエリを作ってみた結果、親同士の更新は大丈夫でしたが、子同士の更新が一番目のレコードしか更新されませんでした。 更新クエリの抽出条件 親 フィールド 「識別番号」(オートナンバーです)   テーブル 「作業表」   抽出条件 [forms]![受注日報]![識別番号] 子 フィールド 「受注伝票番号」   テーブル 「作業表明細」   抽出条件 [forms]![受注日報]![受注伝票Sub].[form]![受注伝票番号] ちなみに親同士の追加クエリの抽出条件に使用した主キーは「識別番号」とは別の番号で、オートナンバーではなく、最大値に+1するやり方で振っている番号を使用していて、子同士の主キーは追加クエリも更新クエリもおなじ[受注伝票番号]を使用しています。 抽出条件かこの主キーの設定が問題なのかなあと思いますが、わからないのでどなたかご回答宜しくお願い致します。

  • サブフォームにフィルタをかけたい

    サブフォームにフィルタをかけたいのですが エラーになってしまいます。 下記がエラー内容です。 ---------------------------------------------------------- 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ---------------------------------------------------------- 細かい概要は テーブル1にフィールドがあり、 レコードには「あああ」と入力されています。 テーブル1がレコードソースとされている「フォーム(2)」をサブフォームとして 親フォーム(フォーム名:フォーム(1))に乗せました。 フォーム(1)を開いた時にフォーム(2)にフィルタをかけたいのですが うまくいきません。 オブジェクト名にカッコを付けているため、 Form_フォーム・・・・ というコードは書けないので ---------------------------------------------------------- Private Sub Form_Open(Cancel As Integer) Forms("フォーム(1)").Controls("フォーム(2)").Form.Filter = "フィールド = '" & "*あ*" & "'" Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True End Sub ---------------------------------------------------------- としています。 Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True でエラーになりますが、 この行をなくしたら、フィルタがかかりません。 どうすればサブフォームにフィルタをかける事が出来るのでしょうか? ご教示よろしくお願い致します。

  • サブフォームに変数を代入し、RecordSourceの値を取得したい

    サブフォームに変数を代入し、RecordSourceの値を取得したいのですがうまくいきません。 Sub test1() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource End Sub ******************************************************************* Sub test2() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource MsgBox Forms(フォーム).Controls(サブフォーム).RecordSource End Sub オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) ******************************************************************* Sub test3() Dim サブフォーム As String Dim フォーム As String フォーム = "土台" サブフォーム = "フォーム1" MsgBox Forms(サブフォーム).RecordSource End Sub 実行時エラー'2450' マクロの式またはVisual Basic コート゛で参照されている 'フォーム名'フォームが見つかりません。 ******************************************************************* test1~3のうち test1のみはうまくいくのですが 変数を代入したいです。 ヘルフ゜のには Forms![受注]![受注サブフォーム].Formとなってますが これじゃ変数を代入できないですよね。 どうすればサブフォームに変数を代入しつつ、RecordSourceの値を取得できるのでしょうか? よろしくお願いします。

  • ACCESS97 実行時エラー '2455'に関して

    ACCESS97のエラーに関して質問です。 下記のような状況において、 実行時エラー '2455' 「指定した式に、Form/Report プロパティに対する  不正な参照が含まれます。」がでてしまいます。 ACCESSの画面をウインドウ表示にします。 そしてその画面を3分の1程度に小さくします。 この状態で、画面を遷移させるとエラーがでてしまいます。 エラーの原因として、おおよそ検討がついています。 1.画面を遷移させる際に、次の画面のサブフォームの   ソースオブジェクトを変更させます。 2.画面を小さくしたせいで、サブフォームが画面上に   表示されていません。 こういった条件で、上記のエラーがでるようです。 ちなみに全画面表示やウインドウ表示でも サブフォームが少しでも表示されるような大きさだと エラーにはなりません。 Forms![Form名称]![埋め込み名称].Form.RecordSource = "テーブル名称" このソース上にてエラーとなっていますが、 何か対処方法などございませんでしょうか? 知っている方がおられましたらどうぞアドバイスお願いします。 環境:Win2K+AC97

  • Access サブフォームのレコードソースを変更するには

    Accessのプロシージャについて教えてください。 フォーム FM0020 上に、2つのサブフォーム FS002001 と、FS002002 があります。 メインフォームにある値を使って、サブフォームのレコードソースを変更したい のですが、どうもうまくできません。 FS002001のレコードソースは下記の1行目のコードで変数strSQLに代入出来るのですが、 FS002002のレコードソースは下記の2行目のようにしても 「オブジェクトまたはクラスがこのイベントセットをサポートしていません」 となり、代入出来ないのです。 2つ目のサブフォーム上にあるテキストボックス HMCD が下記3行目のように すると代入できるので、サブフォームの名前を間違えているわけではないと思うのですが...。 他に原因としては何が考えられますか? 下記の3行を同じモジュール内に続けて書いても2行目だけがひっかかるのでもうお手上げ 状態です..。 なんとか助けてください。 お願いします。 strSQL = Forms!FM0020.FS002001.Form.RecordSource strSQL = Forms!FM0020.FS002002.Form.RecordSource strSQL = Forms!FM0020.FS002002!HMCD

  • アクセスの条件式

    マクロの条件に "yes"=IIf([Forms]![frm_sample]![ck]=True,"yes","no")と書いてあるのですが、[ck]=True の場合は "yes"となり最初に"yes"="yes"になって条件が満たされるということでそのマクロが実行されるということでよいのでしょうか。よろしくお願いいたします。 それと <> 記号は イコールでないということなのでしょうか。

  • access 入力フォームにクエリを表示させたい

    ある物件を管理しています。 T_物件情報 物件ID(オートコレクト)/物件名 T_水道検針 検針No(オートコレクト)/物件ID/検針日 T_検針明細 明細No(オートコレクト)/検針No/部屋番号/検針値 このようなテーブルがあり、F_水道検針で入力できるフォームを作りました。 T_検針明細はサブフォームになっています。 入力の際の見た目として、前回の検針値、使用量(今回から前回を引いたもの)を表示させたいと思っています。 一応クエリで前回の検針値を出すものQ_前回検針値を作りました。 それぞれ対応するものにリレーションを設定しています。 抽出条件として 物件ID [forms]![F_水道検針]![cmb物件ID] 前回検針日 [forms]![F_水道検針]![前回検針日] ←フォーム上で非連結テキストボックスです 部屋番号 [forms]![F_水道検針]![部屋番号] を設定しています。 サブフォーム上に非連結テキストボックスを2つ設置し、先ほど書きました前回の検針値、使用量を表示できればと思っています。フォーム自体のコントロールソースがT_水道検針、T_検針明細ですのでクエリをソースには持ってこれないですよね。どうすれば表示できるのかご教授いただければと思います。 とりあえずこのフォームを入力する際には見た目だけわかればいいので、このような質問をさせていただきました。 VBAは始めたばかりで参考書をみながらひとつずつやっている状況です。 マクロについても同じです。 また、後々請求書で計算をすることを考えるとテーブルの構築などから見直したほうがいいのかもしれません。 もっとよりよい方法がありましたらそれでもいいので宜しくお願い致します

専門家に質問してみよう