• 締切済み

ACCESS VBAについて

chayamatiの回答

  • chayamati
  • ベストアンサー率41% (256/613)
回答No.14

如何ですか?実はこちらもうまく行かず リレーションシップを見直し、今は添付のようになっています。 ・3つのテーブルにオートナンバー型のIDを追加 ・各テーブルのSampleID を重複なし ・SampleID 間での参照整合性リレーション出来ないので  リレーション線を右クイック→種類の変更→Aの全てB、Aの全てとC  

関連するQ&A

  • Access2007のサブフォームのRequeryで悩んでいます。。

    Access2007のサブフォームのRequeryで悩んでいます。。 Aメインフォーム Bサブフォーム埋め込みコントロール Cサブフォーム リストボックスう AにBを貼り付けBのソースオブジェクトにCを指定しています。 Cは帳票形式です リストボックスをクリックしたら、 CのRecordSourceにSQLを挿入し、 CをRequeryしていますが、全くRequery出来ていない模様なのです。。 B.SourceObject="C"も試したのですが、全く思った通りのデータが抽出されません。 B.Form.Requery Me.B.Form.Requery どれも試して駄目でした。 CのRecordSourceに直接SQLを貼り付けたら思った通りに出ますが、 Requeryが機能していない気がします。 実行結果は、数件対象データはあるのに、Cの中身は空になります。。。 正しくRequeryする方法、もしくは違うやり方があればご教授頂けないでしょうか?

  • サブフォームに対してGoToRecordするには?

    フォームに対してRequeryすると先頭のレコードへ移動してしまうので Requeryする前のレコードの番号を取得して Requery後にそのレコード番号へ移動したいのですが Sub test() i = Forms("Form").Controls("SubForm").Form.CurrentRecord Forms("Form").Controls("SubForm").Requery DoCmd.GoToRecord acActiveDataObject, Forms("Form").Controls("SubForm"), acGoTo, i End Sub これをすると、実行時エラー2498 指定した式は、いずれかの引数とデータ型が対応していません。 になりますが、 どこがおかしいのでしょうか?

  • なぜエラーになるのでしょう?アクティブコントロール

    ちょっと変なやり方かもしれないのですが、都合上こうやりたいので教えてください。 フォーム1の中にフォーム2を入れてサブフォームとして フォーム2の中にコマンドボタンを一つ置きました。 そのコマンドボタンを押した時に、そのコマンドボタン名を取得したいのですがうまくできません。 フォームは20個ぐらいあってこれと同じ動きをしたいので、 フォームモジュールには Private Sub コマンド0_Click() Call アクティブコントロール名を取得する End Sub として、 標準モジュールにコードは書いています。 Sub アクティブコントロール名を取得する() Dim フォーム As String フォーム = Screen.ActiveForm.Name MsgBox "アクティブコントロール名" & Forms(フォーム).ActiveControl.Caption End Sub にすると、オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)になります。 そもそも、フォーム = Screen.ActiveForm.Nameの時点で、フォーム1になっています。 実際のコマンドボタンはフォーム2にあるのに。 なので、無理矢理 MsgBox "アクティブコントロール名" & Forms("フォーム2").ActiveControl.Caption にしたら、 実行時エラー2450 マクロの式またはVisualBasicコードで参照されている'フォーム2'が見つかりません。 という違うエラーになりました。 Sub アクティブコントロール名を取得する() Dim フォーム As String フォーム = Screen.ActiveForm.Name Forms("フォーム2").SetFocus MsgBox "アクティブコントロール名" & Forms("フォーム2").ActiveControl.Caption End Sub にすればいいのかな?と思ったら Forms("フォーム2").SetFocusでアウトでした。 もともとはサブフォームのコントロールから発信したイベントなのに、 サブフォームのコントロールの値が取れないのでしょうか? 実際のmdbファイルではコマンドボタンではなくテキストです。 ご回答よろしくお願いします。

  • アクセスVBA 一個前や一個後の値を取得するには

    フォームの中にあるサブフォームの現在選択中のレコードの値を取得は出来たのですが 一個前や一個後の値を取得するにはどうすればいいですか? Sub test() Debug.Print Forms("F_Main").Controls("F_SubMain").Form.Filter Debug.Print Forms("F_Main").Controls("F_SubMain").Form.Controls("日付") End Sub で、現在のレコードの情報は取得できましたが 上のレコード、下のレコードを取得するコードを教えてください。

  • カッコ付けのオブジェクト名をvbaで認識させる方法はありますか?

    アクセス2003です。 フォーム名を「(あああ)」としてしまったのですが Form_(あああ).Requery をすると 「コンパイルエラー 不正な文字列です」 となります。 Form.Controls("あああ").Requery Forms "(あああ)".Requery もダメだったのですが どうにかしてオブジェクト名を変えずにカッコ付けのオブジェクト名をvbaで認識させる方法はありますか? ご教授よろしくお願い致します。

  • AccessVBA RecordSourceのリセットについて

    こんにちは。 フォーム上で、データベースを検索するものを作っています。 SELECT ~ WHERE ~ で条件に合致するレコードを、サブフォームを連続表示しています。 リセットボタンを作成して、検索結果を消したい(カラにしたい)と思うのですが、 Me![subform].Form.RecordSource = "" Me![subform].Requery 上記のVBAを実行すると、1レコードだけ表示され、コントロール上では「#Name?」が出てしまっています。 参照するテーブルが無いためにこういうことが起きているのだと思うのですが、防ぐ方法が分かりません。 教えてください。 宜しくお願いします。

  • 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

  • アクセス Me.Requeryでダウン

    アクセス+VBAです。 Public Function sakujo() s = "DELETE FROM 予約TB WHERE 個人ID = 1 AND 予約科目= '算数'" CurrentDb.Execute s Me.Requery End Function のような関数を別フォーム[A]から Debug.Print Forms!フォーム1!サブフォーム1.Form.sakujo して呼出し使おうとしてます。 しかし Me.Requery のところで何のメーッセージも無くアクセス自体が終了してしまいます。 Me.Requeryで一時停止させてF5(実行の続き)をすると 「レコードは削除されています」 とメッセイージが出て、その後アクセス自体が終了です。 また、他フォーム[B]から呼出すと正常に動きます。 説明不足かもしれませんが、どうのような原因が考えられるでしょうか?

  • サブフォームに変数を代入し、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の値を取得できるのでしょうか? よろしくお願いします。

  • サブフォームのRecordSourceの件数を取得したい

    <環境>access2007、db:sqlserver2005 メインフォームに日付のテキストボックスがあり、その日付に一致したデータをサブフォームに表示しています。 メインフォームのOPEN時処理 Set FM = Forms![FTop] Set FS = Forms![FTop]![FTop_sub].Form FS.RecordSource = "select * from aaa where day = '"& fm!day &"'" この時、RecordSourceにセットしたデータの件数を取得したいのですが、 サブフォームのフォームヘッダーにテキストボックスを配置して、 そのコントロールソースを =Count(*) としました。 しかし、"#エラー"と表示されてしまいます。 サブフォームは"帳票フォーム"です。 どこが悪いのか困っています。どなたかご教授お願いします。