エラーが出ます
- ACCESS2002を使っています。今、「報告書」というフォームから「顧客」というフォームを開きます。顧客フォームにはサブフォームとして顧客一覧のデータシートが組み込まれています。
- 顧客一覧の該当する行をダブルクリックしたら、フォームを閉じて、報告書フォームの顧客IDにダブルクリックした顧客の顧客IDがコピーされる。っていうのを実現させようとしています。
- 「顧客」のサブフォームの顧客一覧(データシート)のダブルクリックのイベントのところでエラーが出ます。どうやって回避すればいいのか、分かりません。
- ベストアンサー
エラーが出ます
Stressmanと言います。 ACCESS2002を使っています。 今、「報告書」というフォームから「顧客」というフォームを開きます。 「顧客」フォームにはサブフォームとして「顧客一覧」のデータシート が組み込まれています。 「顧客一覧」の該当する行をダブルクリックしたら、フォームを閉じて、 「報告書」フォームの「顧客ID」にダブルクリックした顧客の「顧客ID」 がコピーされる。っていうのを実現させようとしています。 下記がそのコードです。 まず「報告書」フォームのコマンドボタンに下記のコードを設定 「顧客」フォームを開きます。 Private Sub コマンド110_Click() DoCmd.OpenForm "顧客", , , , acFormAdd, , Me.Name End Sub そして、「顧客」のサブフォームの「顧客一覧」(データシート)の ダブルクリックのイベントのところに下記のコードを設定 Private Sub Form_DblClick(Cancel As Integer) Dim strFormName As String strFormName = Me.OpenArgs ← エラー Forms(strFormName).[顧客ID] = Me.[Frm_04顧客マスタ_サブフォーム].Form.[顧客ID] DoCmd.Close acForm, Me.Name End Sub エラーがでるのがここです。 どうやら、Me.OpenArgsの値がNullらしいのですが、 どうやって回避すればいいのか、分かりません。 分かりにくい説明ですが、宜しくお願いします
- stressman
- お礼率65% (176/269)
- その他(データベース)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
親フォームを参照する時は .Parentプロパティを使います。 なので、今回の場合は Me.Parent.OpenArgsで行けると思います。
その他の回答 (1)
Me.OpenArgsではなくて「顧客」フォームのOpenArgsを 見ないとエラーになると思います。
お礼
sstakさん、ありがとうございます。 なるほど、そうですよね。 とりあえず、設定し直してみます。
補足
す、すいません。 「顧客」のOpenArgsを参照するには どう記述すればいいのでしょうか? 実はかなりの初心者なので、ヘルプを見ても よく分からなかったんです。
関連するQ&A
- アクセス 実行時エラー3265
お世話になっております。 先ほどまで、違うスレで質問していたものです。 おかげさまで、Private Sub scdSelect()のようなコードとなり、 こちらの方は無事動作しましたが、それをコピーして、 Private Sub denbanSelect()を作成すると、実行時エラー3265が 発生しました。 なぜエラーが発生するのか、検討もつきません。 何かほかに前提条件があるのでしょうか? 各サブフォームのイミディエイトウインドウで ?me.parent.openargs とすると、しっかりと引数は入っております。 教えて君で申し訳ありませんが、どなたご教授よろしくお願いします。 ★呼び出し元フォーム Private Sub cmdSeekDenban_Click() DoCmd.OpenForm "resultJDenban", , , , , , Me.Name & ".resultViewJyutyuDenban" End Sub Private Sub cmdSeek_Click() DoCmd.OpenForm "resultScd", , , , , , Me.Name & ".resultViewJyutyu" End Sub Public Sub resultViewJyutyu() ☆結果の表示(商品コード検索用) end sub Public Sub resultViewJyutyuDenban() ☆結果の表示(伝票番号検索用) end sub ★検索画面 商品コード用 サブフォーム Private Sub 商品コード_DblClick(Cancel As Integer) Call scdSelect End Sub Private Sub scdSelect() Dim Pos Dim MyFrm Dim ProcName Pos = InStr(Me.Parent.OpenArgs, ".") Set MyFrm = Forms(Left(Me.Parent.OpenArgs, Pos - 1)) ProcName = Right(Me.Parent.OpenArgs, Len(Me.Parent.OpenArgs) - Pos) MyFrm.txtScd.Value = 商品コード.Value MyFrm.txtEdaban.Value = 枝番.Value DoCmd.Close acForm, "resultScd", acSaveNo CallByName MyFrm, ProcName, VbMethod End Sub ★検索画面 受注伝票番号用 サブフォーム Private Sub 商品CD_DblClick(Cancel As Integer) Call denbanSelect End Sub Private Sub denbanSelect() Dim Pos Dim MyFrm Dim ProcName Pos = InStr(Me.Parent.OpenArgs, ".") Set MyFrm = Forms(Left(Me.Parent.OpenArgs, Pos - 1)) ProcName = Right(Me.Parent.OpenArgs, Len(Me.Parent.OpenArgs) - Pos) MyFrm.txtDenban.Value = 伝票番号.Value CallByName MyFrm, ProcName, VbMethod ←エラー発生★★★ DoCmd.Close acForm, "resultJDenban", acSaveNo End Sub エラー内容 実行時エラー '3265' アプリケーション定義またはオブジェクト定義エラーです。
- ベストアンサー
- その他(プログラミング・開発)
- VBAのopenformについて
はじめまして。 現在、Accessを仕事で使うために勉強中です。 使用しているOSはWindowsXP、Accessは2003を使用しています。 顧客管理のデータベースのようなものを練習で作っているのですが、 作成した一覧のフォームから顧客コードを元に別のフォームを開けるように したいのですが、うまくいきません。 フォーム1:顧客一覧 フォーム2:顧客登録画面 このフォーム1とフォーム2は、同じテーブルを元にしたフォームです。 フォーム1の「顧客コード」というところをダブルクリックすると、該当の顧客コードの フォーム2が開くようにしたいと思い、フォーム1のテキストボックスに、 Private Sub 顧客コード_DblClick(Cancel As Integer) DoCmd.OpenForm "顧客登録", , , "[顧客コード] ='" & Me![顧客コード] & "'" End Sub と記載しましたが、いざ実行をすると 「OpenFormアクションの実行はキャンセルされました」 と表示されてしまいます。 どのようにしたら、この現象が回避でき希望する動きができるのかわからず悩んでおります。 すみませんが、解決する方法を教えていただければと思います。 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- AccessVBAコードの間違いを指摘してください
Microsoft Accessでデータベースを作っています。テーブル「駅時刻リスト」「列車リスト」クエリ「クエリ1」フォーム「一列車フォーム」「サブフォーム」を作りました。「一列車フォーム」から列車コードを選択すると「サブフォーム」の列車が列車コードで絞り込まれるようにするコードを書きました。間違いを指摘してください。 Private Sub 列車コード_AfterUpdate() Me!サブフォーム.Form.Filter = "列車コード like '*' & [Forms]![一列車フォーム]![列車コード] & '*'" Me!サブフォーム.Form.FilterOn = True DoCmd.Requery End Sub
- 締切済み
- Access(アクセス)
- AccessVBAにおけるOpenArgsの使用について
AccessVBAを最近はじめた初心者です。 ~~~フォーム1~~~ Private Sub コマンド0_Click() DoCmd.OpenForm "フォーム2", , , , , , "コマンド0" End Sub Private Sub コマンド1_Click() DoCmd.OpenForm "フォーム2", , , , , , "コマンド1" End Sub ~~~フォーム2~~~ Private Sub Form_Load() Dim strFormName As String strFormName = Forms.フォーム1.OpenArgs DoCmd.PrintOut strFormName End Sub 上のプログラムのようにフォーム1でクリックしたボタンによってフォーム2を読み込んだ時の動作を変えるプログラムを作成しようとしています。 しかし、実際に起動させると、『strFormName = Forms.フォーム1.OpenArgs』の辺りで 「Null の使い方が不正です。」 というエラーメッセージが表示されます。 Accessのヘルプを参照に組んでみたのですが、どの箇所が間違っているのでしょうか? 回答、よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- ACCESS VBA 一覧から別フォームを開きたい
顧客管理をしようとしています。 表形式のフォームで一覧を表示させています。 一覧の詳細セクションに「詳細」というボタンをつけていて、 すべての行に、詳細ボタンを表示させています。 この詳細ボタンを押したら、この顧客カード(単票形式のフォーム)を開きたいと思っています。 現在、下記の記述をしていますが、 「抽出条件でデータ型が一致しません」とのエラーメッセージが出ます。 どこを修正したら良いかわかりません。 わかる方、よろしくお願いいたします。 現在の記述 Private Sub コマンド29_Click() If Me.NewRecord Then MsgBox "新規レコードから詳細情報を表示することはできません。" Else DoCmd.OpenForm "顧客フォーム", , , "顧客ID='" & 顧客ID & "'" End If End Sub
- ベストアンサー
- Visual Basic
- サブフォームのビューを切り替えたい
親フォーム(フォーム1)にサブフォームとして、 テーブルをソースとするサブフォーム(テーブル1のサブフォーム)を配置しました。 親フォームからサブフォームのビューを変更したいのですが どうすればいいか教えてください。 親フォームのコマンドボタンにはそれぞれ Private Sub 単票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 1 '帳票フォーム End Sub Private Sub 帳票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 0 '単票フォーム End Sub としたのですが、 実行すると 実行時エラー 2136 "このプロパティを設定するには、フォームまたはレポートをデザインビューで開きます"。 となってしまいます。 Private Sub 帳票フォームへ切り替え_Click() DoCmd.SelectObject acForm, "テーブル1のサブフォーム" DoCmd.RunCommand acCmdFormView End Sub にしたところ、 実行時エラー 2489 “オブジェクト テーブル1が開いていません、” になります。 サブフォームに埋め込んでいて親フォームを開いていても 開いてない事になるのですね。 フォームビューの時に、切り替える事は不可能なのでしょうか? 帳票ビュー表示用フォーム、 単票ビュー表示用フォーム を作るしかないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- Access2007 サブフォームの新規レコードをすぐにフォームに表示させる方法
サブフォーム上で適当なレコード(IDと商品名)を選択して、そのレコードにある入力ボタンを押すと、フォームのコンボボックス上にその商品名が出るようなフォームがあります。 すでに入力済みのIDと商品名は表示されます。 ところが、サブフォーム上でIDと商品名を新規入力して入力ボタンを押すと、フォームのコンボボックスは空白となり、商品データが表示されません。 しかし、一旦フォームを閉じて開くと、データは表示されています。 IDと商品名を新規入力して、そのままフォームのコンボボックスに反映させたいと思います。 入力ボタンはこのようにやってみました。 Private Sub 入力_Click() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms!フォーム!ID = Me.ID End Sub または、 Private Sub 入力_Click() DoCmd.RunCommand acCmdSaveRecord Forms!フォーム!ID = Me.ID End Sub ご教授いただければ幸いです。よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- サブフォームでフィルタしたデータのCSV出力
ACCESS2007 で テーブル T_リスト name cate aaa 123 sss 543 rtyy 45t4 フォーム 顧客があり リスト作成ボタンがあります フォーム顧客の中に フォーム電話帳サブフォームがあり データソースはT_リストです その都度手動でフィルタをかける作業をします リスト作成ボタンを押すとフィルタで抽出したデータだけを CSVに書き出したいと思っています。 下記実行しましたが、 T_リストの一行目のデータしか書き出しません DoCmd.OpenForm ("電話帳サブフォーム")でフォームを出さずに実行したいです どなたかよいアドバイスをお願いします。 Private Sub コマンド1_Click() Dim F As Variant Dim Field1 As String Dim Field2 As String Dim M As Double Dim i As Double Field1 = "name" Field2 = "cat1" M = Me![電話帳サブフォーム].Form.Recordset.RecordCount Open "C:\ListMaker\out.csv" For Output As #1 Write #1, Field1, Field2 DoCmd.OpenForm ("電話帳サブフォーム") Me.[電話帳サブフォーム].SetFocus For i = 1 To M DoCmd.GoToRecord acDataForm, "Me.電話帳サブフォーム", acGoTo, i Write #1, Me![電話帳サブフォーム]![name] i = i + 1 Next DoCmd.GoToRecord , , acFirst Close #1 End Sub
- ベストアンサー
- その他(データベース)
- クリックイベントなのに、2回クリックしないとフォー
クリックイベントなのに、2回クリックしないとフォームが閉じないです。 フォームに閉じると言うコマンドボタンがあり、クリックイベントで Private Sub cmd_閉じる_Click() DoCmd.Close acForm, Me.Name End Sub としてるのですが、なぜか1回ボタンを押しただけではフォームが閉じません。 2回目押した時にフォームがとじます。 ダブルクリックでも閉じます。 Private Sub cmd_閉じる_Click() 'DoCmd.Close acForm, Form_Fフォーム.Name End Sub のように、フォーム名を指定すると1回のクリックで閉じます。 しかしMe.Nameだと2回目じゃないと閉じない理由がわかりません。 Fフォームは他フォームから DoCmd.OpenForm Form_Fフォーム.Name, acNormal で開いたから2回クリックしないと閉じないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- ACCESSのMVBかな?
ACCESSの検索した結果をテーブルのところに転記する方法はありますか? 例)入力フォームで顧客が多い為「あ」と押してあ行の顧客(顧客情報はID・顧客名など)を検索して別のフォームを開き そこに転記というコマンドのボタンを押すと元の入力フォームに顧客IDが入力される なんてMVBのプログラム教えてもらえませんか? 現状最後の転記だけ出来てません Option Compare Database Option Explicit Private Sub コマンド7_Click() If kdck = 1 Then Forms![借用入力F]![顧客ID] = Me![顧客ID] DoCmd.Close DoCmd.Close DoCmd.GoToControl "運転者名" End If End Sub Private Sub 閉じる_Click() DoCmd.Close End Sub とあるところから参考でコピーしたMVBのプログラムですがまったく初心者で理解できていません。 どなたか助けてください。
- 締切済み
- その他(データベース)
お礼
sstakさん、ありがとうございます。 できました。すごい嬉しいです。 VBAをこれから勉強していって、使いやすいアプリを作っていきたい と思います