• 締切済み

サブフォームのレコードセットをメインフォームで処理したい

[Access2003] サブフォームのレコードソースをメインフォームでレコードセットとして取得し、処理したいと思い、 Private Sub cmd選択_Click() Dim RS As New ADODB.Recordset Set RS = Me!F_Sub.Form.RecordsetClone End Sub とやってみたのですが、型が一致しません。"とエラーになります。 WEB上でのサンプルも上のコードでいけるような感じで説明がありましたが何が問題なのでしょうか?

みんなの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

Dim RS As New ADODB.Recordset ↓ 以下としたらどうなりますか Dim RS As DAO.Recordset ※ VBE での参照設定は確認してください。

関連するQ&A

  • レコードセットで得た結果をサブフォームに出力したい

    こんにちは。Access 2010のフォームについてお教え頂けないでしょうか。 下記URLのようにForm1があります。 http://kie.nu/yHO Form1には下記のオブジェクトがあります。 ・テキストボックス tb1 ・ボタン b1 ・サブフォーム sf1 またテーブルが1つあります。 ・テーブル T1 やりたいこと: テキストボックスにキーワードを入力して検索ボタンを押すと、検索結果がサブフォームに表示されるようにしたい。 条件: VBAでやりたい。 そこで下記のコードを書いてみました。 Private Sub cmd_exe_Click() Dim objADOCON As ADODB.Connection Dim objADORS As ADODB.Recordset Dim SQL As String Set objADOCON = Application.CurrentProject.Connection Set objADORS = New ADODB.Recordset SQL = "select * from T1 where keyword = '" & tb1 & "'" objADORS.Open SQL, objADOCON, adOpenKeyset, adLockOptimistic ここまではできて、無事にレコードセットも取得することができました。 しかし、ここでつまってしまって、どのように結果をサブフォームに出力していいのかわかりません。 こちらお教え頂けないでしょうか。宜しくお願いします。

  • サブフォームのレコード削除

    サブフォーム(帳票)のレコード削除をしたいのですが、レコードセクレタをクリックして選んだレコードではなく、テーブルの最初のレコードから順番に削除されてしまいます。 Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim ret As Integer '接続 Set cn = CurrentProject.Connection 'レコードセットを取得 Set rs = New ADODB.Recordset rs.Open "T支店", cn, adOpenKeyset, adLockOptimistic '削除 ret = MsgBox("表示中のレコードを削除しますか?", vbYesNo + vbQuestion, "削除") Select Case ret Case vbYes rs.Delete Me!sub支店.Form.Requery Case vbNo Exit Sub End Select '終了 rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing WINDOWS98、ACCESS2000をしようしています。よろしくお願いします。

  • ADO 「Set」は使ったほうがいいのでしょうか?

    Sub test1() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordse End Sub Sub test2() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset End Sub この二つは同じ意味ですか? 「Set」は使ったほうがいいのでしょうか? よろしくお願いします。

  • 作成したレコードセットのCSV出力の方法

    test.csv とtest2.csvから作成したレコードセットをtest3.csvに出力したいのですが、 ”指定した式は、いずれかの引数とデータ型が対応していません。” とエラーが帰ってきます。 色々試したのですがうまくいきません、 作成したレコードセットをCSVファイルにエクスポートする方法を教えてください。 Private Sub コマンド6_Click() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Set CN = New ADODB.Connection CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\;" & _ "Extended Properties='Text;HDR=YES'" Set RS = CN.Execute("SELECT * FROM test.csv a LEFT JOIN test2.csv b ON a.tel = b.tel") DoCmd.TransferText acExportDelim, , RS, "C:\test3.csv", True, "" Set RS = Nothing Set CN = Nothing End Sub

  • ADOでレコードを閉じるタイミング。。Access2000/VB6/Win2K

    レコードセットを返すFuncitonプロシージャーを作ってみたのですが。。。 下のGet_Recordsの方のレコードセットをCloseすると上の方のDisp_Dataでオブ ジェクトが閉じているといって怒られます。しかし、閉じないと下の方では開きっ ぱなしになると思うのですが。。。どのように処理すればいいのでしょうか? Public P_CN As ADODB.Connection Private Sub Disp_Date()   Dim RS As ADODB.Recordset   Dim SQL AS String    Set RS = Get_Records(SQL)     With RS      If .RecordCount > 0 Then       .MoveLast: .MoveFirst       .Debug.Print !顧客_ID        End If      End With      RS.Close     Set RS = Nothing End Sub Public Function Get_Records(pSQL As String) As ADODB.Recordset   Dim RS As ADODB.Recordset     Set RS = New ADODB.Recordset      RS.Open pSQL, P_CN, adOpenKeyset, adLockOptimistic     Set Get_Records = RS '''    RS.Close '''   Set RS = Nothing End Function

  • Access2000 サブフォームのRecordSet取得法

    Access2000を用い、メインフォームを作成(F_Main)し、 サブフォームコントロール(sub_from)を配置しました。 sub_formの「ソースオブジェクト」プロパティを別フォーム(F_Sub)とし、F_Subのレコードソースにはテーブル(T_Name)を設定しました。 つまり、メインフォームに子フォームが配置された状態です。 このF_Subのテーブルのレコードを操作するため、以下のプログラムを作りましたが、「フォームF_Subが見つかりません。」というエラーになってしまいます。 Dim rs as Recordset rs = Forms![F_Sub].RecordsetClone ← エラー メインフォームのモジュールでも、サブフォームのモジュールでもどちらにこのプログラムを記述してもエラーが発生します。 メインフォーム上に配置したサブフォームのレコードセットを取得し、操作する方法をご教授下さい。 環境 Windows 2000 Professional Access 2000

  • 強制終了になってしまいます

    Windows98 ACCESS2000を使用しています。 よく強制終了になったり、"2486 現在このアクションは実行出来ません"などのエラーが頻繁に出て困っています。 削除をした後にエラーになる事が多いので、多分これが原因なのではと思います。 顧客情報フォームというメインフォームに、支店、事業概要、賃金…などの複数のタブがあり、それぞれにサブフォームとサブフォームに対して登録ボタンと削除ボタンが貼り付けてあります。 Private Sub cmd支店削除_Click() Dim rs As DAO.Recordset If Me!sub支店.Form.Recordset.recordcount = 0 Then MsgBox ("削除するレコードはありません。") Exit Sub End If Set rs = Me!sub支店.Form.Recordset.Clone rs.Bookmark = Me!sub支店.Form.Bookmark ret = MsgBox("表示中のレコードを削除します。よろしいですか?", _ vbOKCancel + vbQuestion + vbDefaultButton2, "削除") Select Case ret Case vbOK rs.Delete Me!sub支店.Form.Requery Case vbCancel End Select rs.Close: Set rs = Nothing End Sub Private Sub cmd支店登録_Click() If IsNull(Me!cbo顧客.Value) Then MsgBox "顧客名を選択して下さい。" Exit Sub Else DoCmd.OpenForm "F支店登録", acNormal End If End Sub という風に書いてあるのですが、たくさんサブフォームがあるのでブックマークのつけ方がおかしいのでは?と思うのですがさっぱり分かりません。よろしくお願いします。

  • ACCESS VBA

    ACCESSで検索フォームを作りたいと思っています。 VBAを使って行きたいと思うのですが、うまくいきません。 希望としては、該当するレコードのデータを抽出したいです。 よろしくお願いいたします。 ※現段階でのソースを書いてみました。 最終的に行いたい処理とは違うのですが、根本的に間違っているようなので簡略化しました。 /------------------------------------------------/ Private Sub コマンド1_Click() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim sql As String '接続 Set cn = CurrentProject.Connection 'レコードセットを取得 Set rs = New ADODB.Recordset sql = "SELECT * FROM 従業員データ " & _ "WHERE 年齢=30" rs.Open sql, cn, adOpenDynamic, adLockReadOnly rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub /------------------------------------------------/

  • ADOでRecordsetオブジェクトをレコードソースに設定したい

    Access2000を使っています。リンクテーブルを使わずに、ODBCで繋いだDBのテーブルをフォームのレコードソースにセットしたいのですが、可能でしょうか。 宜しくお願いします。 Private Sub FormNoKansu() Dim cn as New ADODB.Connection Dim rs as New ADODB.Recordset Dim strSql as String 'ODBCでサーバーに接続 cn.ConnectionString = "ODBCでMySQLに..." ... strSql = "SELECT * FROM ..." rs.Open strSql, cn 'ここに[rs]を入れられたらと思っています Me.Recordset = "" End Sub

  • 親フォームからサブフォームのレコードソースを設定

    親フォームからサブフォームのレコードソースを設定するには? フォーム1にテーブル1をドロップアンドドラッグして、「テーブル1のサブフォーム」を作成しました。 フォーム1にあるコマンドボタンから「テーブル1のサブフォーム」のRecordSourceを設定する方法を教えてください。 「テーブル1のサブフォーム」からなら Private Sub Form_Load() Me.RecordSource = "" End Sub とできるのですが、 やりたいことはフォーム1からのイベントなので 「テーブル1のサブフォーム」からのイベントは使えません。 だからってフォーム1の Private Sub コマンド2_Click() Me.テーブル1のサブフォーム.RecordSource = "テーブル1のサブフォーム" End Sub とするとコンパイルエラーになります。 良い方法があれば教えてください。アドバイスよろしくお願いします。