![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.5ベストアンサー
- 回答日時:
piroin654 さんへ
http://msdn.microsoft.com/ja-jp/library/cc948691 …
より抜粋
同じプロジェクトに、ADO と DAO の両方の参照を含める場合は、
オブジェクトを宣言するときに、どちらのライブラリを使用するかを明示的に指定する必要があります。
DAO と ADO にはいくつか同じ名前のオブジェクトが含まれているためです。
たとえば、どちらのモデルにも Recordset オブジェクトが含まれているので、次のコードはあいまいです。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dim rst as Recordset
使用するオブジェクト モデルを指定するには、次のように修飾子を含める必要があります。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dim rstADO As ADODB.Recordset
Dim rstDAO As DAO.Recordset
修飾子を省略すると、Visual Basic for Applications (VBA) は先に参照されたモデルのオブジェクトを選択します。
したがって、[参照設定]ダイアログ ボックスの参照リストが以下の順序で並んでいる場合、
修飾子なしの Recordset として宣言されているオブジェクトは、DAO の Recordset になります。
Visual Basic For Applications
Microsoft DAO 3.6 Object Library
Microsoft ActiveX Data Objects 2.1 Library
Microsoft ADO Ext. 2.1 for DDL and Security
Microsoft Jet and Replication Objects 2.1 Library
抜粋終了(傍点は当方で付けました)
なので、修飾子を含めた記述にしといた方が後々面倒が少ないと思いますよ。
回答するときも楽だし (^^ゞ
nicotinismさんも、piroin654さんも丁寧な
ご回答、大変感謝しております。
VBAは久しぶりで、他の言語と違いクセがありますが
使いこなせるように頑張りたいと思います。
piroin654さんにもベストアンサーをつけさせて頂きたいところですが、
今回はnicotinismさんにベストアンサーとさせて頂きたいと思います。
piroini654さんも、ご回答助かりました。
また宜しくお願いいたします。
No.4
- 回答日時:
No2の Private Sub cmd列指定_Click() のところで、
Dim fld As Field
Dim ctl As Control
の二つは使っていないのでコメントアウトするか
削除しておいてください。もう一つこの
プロシージャの最後に、
rs.Close: Set rs = Nothing
End Sub
としておいてください。後始末が抜けていました。
なお、以下はDAOを使っているので、コード表の
ツールから参照設定を開き、
Microsoft DAO xx Object Library
にチェックを入れ↑ボタンで上げられるところまで
あげてください。xxは3.6のような数字です。
No.3
- 回答日時:
追加です。
操作は、cmdレコード数 をクリックすると txNumbers に
レコード数が表示されます。
txPosition に行の位置を入れて cmd行移動 を
クリックすると、見た目のレコード選択と
カレントレコードを一致させます。
txRow に列の位置を入力して cmd列指定 を
クリックすると、列の名前、すなわちフィールドの
名前とフィールドの値をメッセージボックスで
表示します。
No.2
- 回答日時:
だいたいのことはnicotinismの回答で済むと思います。
少し手の込んだ回答をしてみることにしました。
(1)
メインフォームにテキストボックスを三つ。
txNumbers
txPosition
txRow
同じくメインフォームにボタンを三つ。
cmdレコード数
cmd行移動
cmd列指定
(2)
埋め込み0とはサブフォームを表示するコントロール名です。
サブフォームそのものの名前ではありません。このあたりは
おわかりだと思います。なお、cmd列指定での変数iはフィールド
のIndexの値が0から始まるので、何列目ということで
i = Me.txRow.Value - 1 として、見た目の列でテキストボックス
の値を取得するようにしています。
Option Compare Database
Option Explicit
'ブックマークの設定
Dim bk As Variant
Private Sub cmdレコード数_Click()
'サブフォームに表示されているレコード数の取得
Dim rs As Recordset
Set rs = Me.埋め込み0.Form.RecordsetClone
If rs.RecordCount > 0 Then
rs.MoveLast
rs.MoveFirst
bk = rs.Bookmark
Me.埋め込み0.Form.Bookmark = bk
Me.txNumbers = rs.RecordCount
End If
rs.Close: Set rs = Nothing
End Sub
Private Sub cmd行移動_Click()
'見た目のレコード選択とカレントレコードを一致させる
Dim rs As Recordset
Dim l As Long
Set rs = Me.埋め込み0.Form.RecordsetClone
If rs.RecordCount > 0 Then
'ブックマークを先頭レコードに移動
rs.MoveFirst
bk = rs.Bookmark
If Me.txPosition > 0 Then
If Not rs.EOF Then
rs.Move Nz(Me.txPosition - 1)
If Not rs.EOF Then
'サブフォームの表示をカレントレコードに移動
bk = rs.Bookmark
Me.埋め込み0.Form.Bookmark = bk
End If
End If
End If
End If
rs.Close: Set rs = Nothing
End Sub
Private Sub cmd列指定_Click()
'カレントレコードの指定した列の名前と値の表示
Dim rs As Recordset
Dim fld As Field
Dim ctl As Control
Dim i As Long
Set rs = Me.埋め込み0.Form.RecordsetClone
i = Me.txRow.Value - 1
If i >= 0 And i <= rs.Fields.Count - 1 Then
MsgBox "カレントレコードの指定された列の名前は " & rs.Fields(i).Name
MsgBox "カレントレコードの指定された列の値は " & rs.Fields(i).Value
End If
End Sub
No.1
- 回答日時:
こういうことかな?メインフォームのコマンドボタンのイベントに割り当ててみました。
Private Sub コマンド20_Click()
MsgBox "レコード数= " & Me!サブフォーム名.Form.RecordsetClone.RecordCount & vbCrLf _
& "現在位置= " & Me!サブフォーム名.Form.CurrentRecord & vbCrLf _
& "フィールドの値=" & Me!サブフォーム名.Form!フィールド名.Value
Dim rs As DAO.Recordset '要参照設定 Microsoft DAO 3.6 ObjectLibrary OR Later
'例 Microsoft Office 14.0 Access databese engine object Library
Set rs = Me!サブフォーム名.Form.RecordsetClone
rs.AbsolutePosition = 0 'ゼロからレコード数-1まで
MsgBox rs!フィールド名
rs.Close: Set rs = Nothing
End Sub
後は芋づる式に調べていけば突破口になる?と?思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) エクセルVBA 2 2022/04/27 13:29
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) Access DLookup vbaで条件を2件設定したい場合どうすればよいでですか? 現在 If( 1 2023/06/28 14:28
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Access サブフォームでの選択行の取得
その他(データベース)
-
ACCESS VBAサブフォーム(DATA SHEET)の値の取得方法
Visual Basic(VBA)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
-
4
Access でレコードセレクタが押されたときのイベントは?
その他(プログラミング・Web制作)
-
5
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
6
Accessフォームで詳細内の任意の行へSetFocus
Excel(エクセル)
-
7
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
8
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
9
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
10
ACCESS ADOでupdateが効かない
その他(データベース)
-
11
ACCESS フォームでの、データシートビューで表示できない
Access(アクセス)
-
12
ACCESSでコンボボックスにSQLで抽出した値を表示したい
その他(データベース)
-
13
フォームのデータシートビューにてVBAで直接記述したSQL文を実行した結果を返すことは不可能でしょうか?
Access(アクセス)
-
14
access サブフォームにリストを表示させたいが一件しかレコードが表示されない
Access(アクセス)
-
15
Access サブフォームでの複数行選択
その他(プログラミング・Web制作)
-
16
アクセスでサブフォームのレコードを取得したい。
Access(アクセス)
-
17
ACCESSでコントロールソースの変更
Access(アクセス)
-
18
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
19
Access サブフォームのレコードソースを変更するには
Access(アクセス)
-
20
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル書込みで一行もしくは...
-
レコードが存在しなかった場合
-
DataGridViewの内容をDBに反映...
-
差し込み印刷のレコード数について
-
ADO VBA 実行時エラー3021
-
レコードセット(ADO.Recordset)...
-
ACCESSで大量の更新を行うと「...
-
[VBA] ADOの Clone と AddNew
-
VB6.0のIsNull関数に相当するもの
-
VB6.0でのエクセル行削除
-
DataGridViewの、選択されてい...
-
DataGridViewにてセル以外をク...
-
エラー番号=5 制約を有効にで...
-
Accessでレコードの更新を任意...
-
ADODCとデータグリッドを連動さ...
-
サブフォームに新規レコードを...
-
Access フォーム 選択されてい...
-
カレントレコードが無い事を判...
-
JSPのNULLレコード表示について...
-
固有レコード識別子の選択とは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
JSPのNULLレコード表示について...
-
レコードが存在しなかった場合
-
DataGridViewの、選択されてい...
-
カレントレコードが無い事を判...
-
DataGridViewの内容をDBに反映...
-
Access を×ボタンで閉じ...
-
アクセスでレポートの1印刷内...
-
ヘッダレコードとトレーラレコ...
-
Access でレコードセレクタが押...
-
レコードセット(ADO.Recordset)...
-
ACCESSで大量の更新を行うと「...
-
差し込み印刷のレコード数について
-
DataGridViewにてセル以外をク...
-
サブレンジ分割されたNDB(富士...
-
Line Inputで文字化け(助けて...
-
固有レコード識別子の選択とは
-
[VBA] ADOの Clone と AddNew
-
ワードの差込印刷で教えて下さ...
おすすめ情報