Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルADOでフィールド名が動的に変わるレポート
記事No10774
投稿日: 2011/05/04(Wed) 16:50
投稿者みよ
解決済: ON
OS:winXP_sp3
Access Version:2002

いつも皆さんに御世話になっております
今回もよろしくお願いします

現在SQLサーバーにテーブルをおいて、MDBのリンクテーブルで
接続しております。
割と簡易な選択クエリはADOでSQL文を直接サーバーにぶつけて
レコードセットを取得しております
でも今回、どうにもADOで接続できないため、知恵をお貸しください

元クエリはクロス集計二つをユニオンでつないだクエリで
自己MDB内にあります。
はじめはこのクエリを直接SQL文でレコードセットとして取得しようとしたのですが、
挫折してADOでの接続などを探し回って、いろいろとうろうろした結果、
以下のモジュールをレポートオープン時に書いて
とりあえずレコードソースとできました

Private Sub Report_Open(Cancel As Integer)

Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim rs As DAO.Recordset
Dim cnt As Integer
Dim fld As DAO.Field

Set db = CurrentDb()
Set qd = db.QueryDefs(Me.RecordSource)
qd.Parameters("[Forms]![F_DK011nitiji_set]![S_day]") = Forms!F_DK011nitiji_set.S_day
qd.Parameters("[Forms]![F_DK011nitiji_set]![E_day]") = Forms!F_DK011nitiji_set.E_day

Set rs = qd.OpenRecordset

 '行見出し用フィールド
 Me("ID").ControlSource = "syain_ID" 'rs.Fields(0)
 Me("gyou").ControlSource = "gyou" 'rs.Fields(2)

For cnt = 3 To rs.Fields.Count - 1

 Set fld = rs.Fields(cnt)
 sonohi = CInt(Format(fld.name, "d"))

 'ラベル表題にフィールド名から日にちを代入
 Me("hyouji_" & CStr(cnt) - 2).Caption = sonohi
 'テキストボックスのソースにフィールド名をセット
 Me("hiniti_" & CStr(cnt) - 2).ControlSource = fld.name

Next

End Sub

レポートのレコードソースにはクエリ名を記入してあります
今回はこれをDAOではなくADOとしたいのです
(動くんだからよいと思いますが、上司の命令であります)

どうぞよろしくお願いします。

タイトルRe: ADOでフィールド名が動的に変わるレポート
記事No10775
投稿日: 2011/05/04(Wed) 17:18
投稿者YU-TANG
解決済: ON
参照先http://support.microsoft.com/kb/200190/ja
こんにちは、YU-TANG です。

> はじめはこのクエリを直接SQL文でレコードセットとして取得しようとしたのですが、
> 挫折してADOでの接続などを探し回って、いろいろとうろうろした結果、

どこで挫折したのですか。
ぶつかった壁がどれなのか名指ししていただくと、越え方なり迂回の方向なりを
案内できると思いますが。

とりあえず ADO でパラメータ クエリを開く方法が分からないと仮定して、以下とか。

ADO で Access データベースにパラメーター化クエリを呼び出す方法
http://support.microsoft.com/kb/200190/ja

既存のクエリを使用して Recordset オブジェクトを開く
http://msdn.microsoft.com/ja-jp/library/cc376629.aspx

タイトルRe^2: ADOでフィールド名が動的に変わるレポート
記事No10777
投稿日: 2011/05/06(Fri) 14:24
投稿者みよ
解決済: ON
YU-TANG様

ご回答、ありがとうございます

> 既存のクエリを使用して Recordset オブジェクトを開く
> http://msdn.microsoft.com/ja-jp/library/cc376629.aspx

こちらの『パラメータを持つクエリを開く』を利用して、うまく接続できました。

> どこで挫折したのですか。

はい、今だからわかる、いろいろと試した中で失敗した理由をいくつかあげると

・Connectionを変数として宣言した後、明示していなかったり
・Providerを、元データが置いてある、SQLサーバーに対する”Microsoft.Access.OLEDB.10.0・・”
 で、設定してしまった

など、作っている最中にはわからなかった、凡ミスでした。

毎度お世話になりまして、ありがとうございました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る