「夫を成功」へ導く妻の秘訣 座談会

ACCESSパススルークエリでSQLサーバーのテーブルからデータをインポートする場合において
ACCESSのテーブルにあるデータを抽出条件としたいのですがSQL文の記述方法がわからなくて困っております。
根本的な考え方が間違っている可能性が高いのですがどのように記述したらよいか教えていただけますでしょうか。
よろしくお願いいたします。

・SQLサーバーのテーブル名(S_USR)
  USRID  MAIL
  10001  10001@test.com
  10002  10002@test.com
  10003  10003@test.com

・ACCESSのテーブル名(T_USR)
  USRID
  10001
  10003

・パススルークエリ名(Q_USR)←ACCESS上

・欲しい結果(T_RESULT)←ACCESS上のテーブル
  USRID  MAIL
  10001  10001@test.com
  10003  10003@test.com

自分で考えたVBAです。

Private Sub Command1_Click()

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qDef As QueryDef
Dim tDef As TableDef
Dim SQLD As String
Dim SQLA As String

Set db = CurrentDb

'ACCESSテーブル内のデータを消す
SQLD = "DELETE * FROM T_RESULT"
DoCmd.RunSQL SQLD

'クエリの更新
db.QueryDefs.Delete "Q_USR"
Set qDef = db.CreateQueryDef("Q_USR")

'ODBC接続実施
qDef.Connect = "ODBC;"

'フォームから取得したパラメーターを使ったクエリの設定
qDef.SQL = "select USRID, MAIL from S_USR where ID.USRID=S_USR"

qDef.ReturnsRecords = True
Set rs = qDef.OpenRecordset(dbOpenSnapshot,dsbSQLPassThrough,dbReadOnly)

'追加クエリ
SQLA = "INSERT INTO T_RESULT (USRID, MAIL) FROM Q_USR (USRID, MAIL)
DoCmd.RunSQL SQLA

rs.Close
db.Close

MsgBox "終了"
Exit Sub
End Sub

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>ACCESSのテーブルにあるデータを抽出条件としたい


qDefに代入するSQLを
SELECT USRID, MAIL FROM S_USR INNER JOIN T_USR ON S_USR.USRID = T_USR.USRID
とすれば良いのでは。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESSでパススルークエリにパラメータを使用したい

毎度お世話になっております。
WindowsXP、Access2003、SQLServer2000を使用しております。

ADOでSQLServerからデータを抽出したいのですが、
パラメータを使用したいと考えております。

 SELECT CODE FROM テーブル1
 WHERE CODE = ?

とし
 adoCmd.CommandTimeout = 0
 With adoCmd
  .CommandText = strSQL
  .CommandType = adCmdUnknown
  .Prepared = False
  .Parameters.Refresh
 End With

 adoCmd.Parameters(0).Value = InputBox(Trim(strBuf))
 Set adoSet = adoCmd.Execute

とすることで動作しました。

しかしSQL文を下記に変更したところエラーになりました。
 SELECT t1.CODE FROM
 (SELECT CODE FROM テーブル1 WHERE CODE = ? ) as t1
 LEFT JOIN
 (SELECT CODE FROM テーブル2 WHERE CODE = ? ) as t2
 ON t1.CODE = t2.CODE

のようにすると、
 .Parameters.Refresh
の部分で

実行時エラー -21474672595(80004005)
構文エラーまたはアクセス違反です。

となってしまいました。

2つの?の内、片方を定数に、片方を?にしてもエラーになりました。
?を両方とも定数にすれば実行できました。

JOIN句がある場合に?を使ってはいけないのでしょうか。

何がエラーの原因かわからない状態です。
ご教授お願いいたします。

毎度お世話になっております。
WindowsXP、Access2003、SQLServer2000を使用しております。

ADOでSQLServerからデータを抽出したいのですが、
パラメータを使用したいと考えております。

 SELECT CODE FROM テーブル1
 WHERE CODE = ?

とし
 adoCmd.CommandTimeout = 0
 With adoCmd
  .CommandText = strSQL
  .CommandType = adCmdUnknown
  .Prepared = False
  .Parameters.Refresh
 End With

 adoCmd.Parameters(0).Value = InputBox(Trim(strBuf))
 Set adoSet = ad...続きを読む

Aベストアンサー

これかもしれません。
>http://support.microsoft.com/kb/829402/ja
PRB: SQLOLEDB でのパラメータ化クエリを実行すると、アクセス違反が発生します。

少し古いですが、仕様です。と書かれているので、今もそうなのかもしれません。
要はサブクエリ内にパラメータを切るとRefreshできないようです。
従って、代替策としてはRefreshでパラメータを自動生成させず、明示的に切ることになると思います。
(データ型と長さは必要に応じて変更)
With adoCmd
.CommandText = strSQL
.CommandType = adCmdUnknown
.Parameters.Append .CreateParameter("p1", adChar, adParamInput, 8)
.Parameters.Append .CreateParameter("p2", adChar, adParamInput, 8)
.Prepared = False
End With

なお、?が2つあるならパラメータは2つ必要です。

参考になることを祈ります。

これかもしれません。
>http://support.microsoft.com/kb/829402/ja
PRB: SQLOLEDB でのパラメータ化クエリを実行すると、アクセス違反が発生します。

少し古いですが、仕様です。と書かれているので、今もそうなのかもしれません。
要はサブクエリ内にパラメータを切るとRefreshできないようです。
従って、代替策としてはRefreshでパラメータを自動生成させず、明示的に切ることになると思います。
(データ型と長さは必要に応じて変更)
With adoCmd
.CommandText = strSQL
.Co...続きを読む

Qパススルークエリの動的パラメータの指定方法

SQLServer初心者です。

社内で顧客情報を管理するためAccessを使っています。
フォームを使って検索,登録等できるようにしています。
データ量が増えてきたので,
テーブルのみSQLServerに移行することになりました。

ただ単にテーブルをSQLServerに移行して
クエリ等はそのままで使ってみたところまったく高速化されませんでした。

Accessで行っている動作は以下です。

フォーム上に設置した検索用テキストボックスに「ヤマダ」と入力して
「検索」ボタンをクリックすると
リストボックスに「ヤマダ」とつく氏名一覧が出てきて,
該当する氏名をクリックすると,右側にその人の詳細情報が表示されます。
抽出はAccessクエリで行っています。

検索用テキストボックスを使って,Accessのクエリで絞り込みをしているのですが
パススルークエリを利用してSQLServer上で絞り込みをすることができるようだと
調べていて知りました。

しかしそのやり方がうまくWEBで検索できずにいます。

パススルークエリの動的パラメータの指定方法をご教授いただきたいです。
よろしくお願いいたします!

環境は以下です。
SQLServer:microsoft SQL SERVER 2008 R2
Access:Access2007
ODBCデータソースを作成してSQLServerに接続しています。

SQLServer初心者です。

社内で顧客情報を管理するためAccessを使っています。
フォームを使って検索,登録等できるようにしています。
データ量が増えてきたので,
テーブルのみSQLServerに移行することになりました。

ただ単にテーブルをSQLServerに移行して
クエリ等はそのままで使ってみたところまったく高速化されませんでした。

Accessで行っている動作は以下です。

フォーム上に設置した検索用テキストボックスに「ヤマダ」と入力して
「検索」ボタンをクリックすると
リストボックスに「ヤマダ」とつく...続きを読む

Aベストアンサー

はじめまして、通りすがるというものです。
パススルークエリの方法ですが、パススルーでググってみると、以下のurlが検出されました。
http://support.microsoft.com/kb/303968/ja
これで、解決されるのでしょうか?
データ量が増えて、sqlserverに移行した。ということですが、今まで、クライアント側のアクセスを回線
を通して、dbから抽出したデータをクライアントに送信する形式となったのでそのネックで当然
レスポンスは落ちると思います。
また、氏名検索にて同一名が複数存在した場合(データ量増大により)サーバーとクライアントとの
データ量が増大しレスポンスが低下することが予想されるかと思います。
これらにより、パススルークエリによる(これはアクセス特有の機能? )レスポンスの改善はあまり
効果ないと思います。
レスポンス向上の方法として氏名のみの検索条件だけでなく、たとえば住所とか、生年月日などの
複合条件で検索することを検討したほうがよいかと思います。
複合条件で抽出件数を絞ることにより、サーバーからクライアントへのデーター送信量を絞るため
レスポンス向上を図れると思います。
これに合わせ、サーバー自体に付加がかかるのであれば、インデックスを追加するとかメモリ割り
当てなど、検討してはいかがでしょうか?

はじめまして、通りすがるというものです。
パススルークエリの方法ですが、パススルーでググってみると、以下のurlが検出されました。
http://support.microsoft.com/kb/303968/ja
これで、解決されるのでしょうか?
データ量が増えて、sqlserverに移行した。ということですが、今まで、クライアント側のアクセスを回線
を通して、dbから抽出したデータをクライアントに送信する形式となったのでそのネックで当然
レスポンスは落ちると思います。
また、氏名検索にて同一名が複数存在した場合(データ量...続きを読む

Qパススルークエリの使い方

Windows server 2003 + SQL server 2000の環境にあるDBがあります。
同じネットワーク上のWindows XP Pro + Access2000のPCからそのサーバのDBへデータをINSERTするのにはパススルークエリを使えという話になりました。
そのサーバへODBC接続の設定はできています。
パススルークエリの情報が乏しく、どのようにしたらよいのかちょっとわかりません。
どなたかご教授よろしくお願いいたします。

Aベストアンサー

#1です。やり方はわかったようですので、補足ですが、
パススルークエリは丸ごとSQL Serverにクエリを投げるので、
INSERT INTO (SQL Serverのテーブル) SELECT * FROM (Accessのテーブル)
みたいな使い方はできません。
基本的にはパラメータも渡すことができないので、実行の都度QueryDefのSQLを書き換えてExecuteするような使い方になるかと思います。

今回は1レコードだけということなので、特に問題はないと思いますが、複数レコードをINSERTするのだったら、
INSERT INTO TABLE VALUES ('A','B','C');
INSERT INTO TABLE VALUES ('D','E','F');
INSERT INTO TABLE VALUES ('G','H','I');

と並べるよりは
INSERT INTO TABLE
SELECT 'A','B','C'
UNION ALL SELECT 'D','E','F'
UNION ALL SELECT 'G','H','I'
とやると1ステートメントでINSERTできるので少し速いはずです。

#1です。やり方はわかったようですので、補足ですが、
パススルークエリは丸ごとSQL Serverにクエリを投げるので、
INSERT INTO (SQL Serverのテーブル) SELECT * FROM (Accessのテーブル)
みたいな使い方はできません。
基本的にはパラメータも渡すことができないので、実行の都度QueryDefのSQLを書き換えてExecuteするような使い方になるかと思います。

今回は1レコードだけということなので、特に問題はないと思いますが、複数レコードをINSERTするのだったら、
INSERT INTO TABLE VALUES ('A','B','C...続きを読む

QAccessフォーム上の値を条件として、パススルークエリを実行する方法について

皆さんのお知恵を拝借致したく質問します。

AccessXP上でパススルークエリを使って、Oracleのデータをテーブルとして取得しています。
これをAccessフォーム上のテキストボックスで入力した値を元にデータを取得するようにしたいのですが、SELECT文中のWHERE条件にどのように組み込めば良いのか分からずに困っています。
このようなデータ取得は無理なのでしょうか。
ご教示のほど、お願いいたします。

Aベストアンサー

process9です。
パススルークエリを作る前に同じ内容の普通のクエリ(デザインビュー
でクエリを作成)画面で普通に作って
抽出条件を入力するところで、式ビルダを起動(右クリック-ビルド)
して、フォーム-全てのフォーム-作成したフォームを選択して、
真ん中の画面で入力ボックス、一番右の画面でtextを選択して
保存する寸前で、パススルー化すれば
お望みの内容になりませんか?

Qパススルークエリをテーブル作成するには?

以下のコードについてお教えいただければと思います。

フォーム上のテキストボックスに入力された6ケタの年月に基づき、
パススルークエリでデータ抽出を行うつもりです。
この後に、新たにテーブル作成をしようと思っています。

しかし、以下のコードでは
(1) 書き込むTestテーブルを準備し、保存しておく必要があるかと思います。
(現在は、別に作ったクエリオブジェクトの形式を流用しています)
(2) 繰り返し数が多く、相当な時間を使います。
(3) Loopの代わりにと、SQLでINTO~を挿入したらエラーになってしまいます。

Testテーブルを都度削除し、一回で全件を追加する方法はないでしょうか。

Private Sub PassThru()
Dim qd As QueryDef
Dim rsSub As DAO.Recordset, rsMain As DAO.Recordset
Dim str月初 As String, str月末 As String
Dim i As Long
Const strConnect As String = "ODBC;****"

Set dbs = CurrentDb
Set qd = dbs.CreateQueryDef("")
qd.Connect = strConnect
qd.ReturnsRecords = True

str月初 = Format(DateSerial(Left(Me.txt年月, 4), Right(Me.txt年月, 2), 1), "yyyymmdd"))
str月末 = Format(DateSerial(Left(Me.txt年月, 4), Right(Me.txt年月, 2) + 1, 0), "yyyymmdd")

qd.SQL = "SELECT * FROM MAINDATA WHERE((DATE>=" & str月初 & ") And (DATE<=" & str月末 & "))"
Set rsSub = qd.OpenRecordset()

  '****テーブルへの書き込み。フィールド数(20)×レコード数(約1500)回まわる
DoCmd.RunSQL "delete * from Test"
  Set rsMain = dbs.OpenRecordset(Name:="Test", Type:=dbOpenTable)
Do Until rsSub.EOF
For i = 0 To rsSub.Fields.Count - 1
rsMain.AddNew
rsMain.Fields(i)=rsSub.Fields(i)
   Next
Loop

End Sub

以下のコードについてお教えいただければと思います。

フォーム上のテキストボックスに入力された6ケタの年月に基づき、
パススルークエリでデータ抽出を行うつもりです。
この後に、新たにテーブル作成をしようと思っています。

しかし、以下のコードでは
(1) 書き込むTestテーブルを準備し、保存しておく必要があるかと思います。
(現在は、別に作ったクエリオブジェクトの形式を流用しています)
(2) 繰り返し数が多く、相当な時間を使います。
(3) Loopの代わりにと、SQLでINTO~を挿入したらエラーにな...続きを読む

Aベストアンサー

これはですね。パススルークエリーではなくふつうのクエリーですよね。
この方式ですとデーターセットが使えないと一回でまとめて更新は無理です。つまりAccessではなくC#でSQLサーバーとAccsessを両方使うとかなら出来ます。
データーセットに読み込めばソースの形式は何でも構わないので。メモリ上に展開してメモリでリレーションを掛け更新もできます。

もしどうしてもAccessを使いたい場合は本当にパススルークエリをプロフラムでその都度作るしかありません。そのパススルークエリーを元にさらにふつうのテーブル作成クエリを作成しDoCmdなどで実行するしかありません。

まずパススルークエリを作成する前に、同じクエリは削除します。

  Dim CAT As ADOX.Catalog
On Error GoTo errc
Set CAT = New ADOX.Catalog
Set CMD = New ADODB.Command

Deleteobj = True
CAT.ActiveConnection = CurrentProject.Connection

If CAT.Procedures.Count > 0 Then
For Each i In CAT.Procedures
If i.Name = クエリの名前 Then
CAT.Procedures.Delete (i.Name)

End If
Next
Exit Function
End If

そのあとに新しいSQLでパススルークエリのオブジェクトを作成します。

   qd.SQL = "SELECT * FROM MAINDATA WHERE((DATE>=" & str月初 & ") And (DATE<=" & str月末 & "))"

Set CMD.ActiveConnection = CAT.ActiveConnection

CMD.CommandText = qd.SQL
CMD.ActiveConnection.Properties("Jet OLEDB:ODBC Command Time Out") = 0
CMD.Properties("Jet OLEDB:ODBC Pass-Through Statement") = True
CMD.Properties _
("Jet OLEDB:Pass Through Query Connect String") = _
"ODBC;DRIVER=SQL Server;SERVER=" & server ";DATABASE=" & database

CAT.Procedures.Append クエリの名前, CMD
CAT.Procedures.Refresh

これでAccessにクエリオブジェクトが作成されています。
テーブル作成クエリは予め作成しておいても構いません。名前は同じなので。

この後にそのテーブル作成クエリを実行します。

これはですね。パススルークエリーではなくふつうのクエリーですよね。
この方式ですとデーターセットが使えないと一回でまとめて更新は無理です。つまりAccessではなくC#でSQLサーバーとAccsessを両方使うとかなら出来ます。
データーセットに読み込めばソースの形式は何でも構わないので。メモリ上に展開してメモリでリレーションを掛け更新もできます。

もしどうしてもAccessを使いたい場合は本当にパススルークエリをプロフラムでその都度作るしかありません。そのパススルークエリーを元にさらにふつうのテ...続きを読む

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

親フォームからサブフォームのレコードソースを設定するには?
フォーム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

とするとコンパイルエラーになります。

良い方法があれば教えてください。アドバイスよろしくお願いします。

Aベストアンサー

No2です。説明もれがあったので追加しておきます。
No2のところで、

>このとき、「テーブル1のサブフォーム」
>のフィールドには「#Name?」のような表示がされていると
>思います。すなわちこときはサブフォームにはレコードソースが
>設定されていないからです。

としていますが、「#Name?」と表示される理由はフィールドの
コントロールソースが設定されているために、「#Name?」のような
表示が出てきます。


ここからは蛇足ではありますが、コントロールソースが設定されていなければ
こうした表示はでませんが、もしコントロールソースも取り除いて
いるならば、コマンド1でもコマンド2のクリックイベントでもどちらでも
かまいませんが、たとえば「テーブル1のサブフォーム」の
フィールドのコントロールソースをすべて取り除いておいて、
コマンド2のクリックイベントで設定するとすれば、一応
「テーブル1のサブフォーム」のフィールドの名前をID、名前、住所として
テーブル1のフィールド名を同じくID、名前、住所とするならば、

Private Sub コマンド2_Click()
Me.テーブル1のサブフォーム.Form.RecordSource = "テーブル1"
Me.テーブル1のサブフォーム.Form.Controls("ID").ControlSource = "ID"
Me.テーブル1のサブフォーム.Form.Controls("名前").ControlSource = "名前"
Me.テーブル1のサブフォーム.Form.Controls("住所").ControlSource = "住所"
End Sub

として、レコードソース、コントロールソースを設定します。

No2です。説明もれがあったので追加しておきます。
No2のところで、

>このとき、「テーブル1のサブフォーム」
>のフィールドには「#Name?」のような表示がされていると
>思います。すなわちこときはサブフォームにはレコードソースが
>設定されていないからです。

としていますが、「#Name?」と表示される理由はフィールドの
コントロールソースが設定されているために、「#Name?」のような
表示が出てきます。


ここからは蛇足ではありますが、コントロールソースが設定されていなければ
こうした表示はで...続きを読む

QODBCの接続に失敗しました(3146)について

どうにもならなくて困ってしまいメールいたします。
現在、ウインドウズ98、アクセス2000という環境で作業をしています。このアクセスでは、日に1回、本社とのデータのやりとりを行っていますが、ある日から「ODBCの呼び出しに失敗しました エラーメッセージ3146」と出てしまうようになってしまいました。何が原因かもさっぱり分かりません。どんなことでもいいので助言お願いします。

Aベストアンサー

ODBCのエラーは、簡単には原因がわからない場合が
ほとんどです。

通常はコントロールパネルのODBCデータソースアドミニ
ストレータの「トレース」タブの中に、「トレースの開始」
というボタンがありますから、適当なファイル名を指定
してからこれを押します。

それからエラーがでる処理をAccessでやってみます。

するとODBCの呼び出し、通信の内容がログに吐かれます
からこれが解決の手がかりになると思います。専門家に
直してもらうにしてもこの情報は必要ですよ。

おそらく3146ならば、MDACがらみかと推測しますけど、
自信はありません。WindowsUpdateとかIEを6にしたとか
サービスパックとか・・考えられる原因はいっぱいあり
すぎて・・

Qクエリとパススルークエリを作る時の考え方について

現在、リンクテーブルに対し、以下のクエリを作成しております。

1.Q_在庫:在庫を品番で集計する。
 [結果]
  品番 在庫
   A  100
   B   20

2.Q_受注:受注データの残数を集計する。
 [結果]
  ID 品番 納期   予定数 合計数
  1  A  20080625  10   10
  2  A  20080626  50   60
  3  A  20080627  100  160

3.Q_可否:Q_在庫とQ_受注を品番でリレーションし、在庫行を付加し、
在庫が合計数を上回っていれば"○"を表示する。
 [結果]
可否 ID 品番 納期   予定数 合計数 在庫
○  1  A  20080625  10   10   100
○  2  A  20080626  50   60   100
×  3  A  20080627  100  160   100

このとき、Q_可否を実行すると、20秒くらいかかってしまい、
パススルークエリのほうがよいのかな?と考えています。

ただ、私以外の人が後から変更などする場合、
長いSQL文はわかりづらいだろうとも考えます。

どちらかを犠牲にするしかないのでしょうか。
もっと良い方法があるのでしょうか。

漠然とした質問で申し訳ありませんが、よろしくお願いします。

現在、リンクテーブルに対し、以下のクエリを作成しております。

1.Q_在庫:在庫を品番で集計する。
 [結果]
  品番 在庫
   A  100
   B   20

2.Q_受注:受注データの残数を集計する。
 [結果]
  ID 品番 納期   予定数 合計数
  1  A  20080625  10   10
  2  A  20080626  50   60
  3  A  20080627  100  160

3.Q_可否:Q_在庫とQ_受注を品番でリレーションし、在庫行を付加し、
在庫が合計数を上回っていれば"○"を表示する。
 ...続きを読む

Aベストアンサー

Q、棚卸しの手法。
A、棚卸一時テーブルを一気に作成。

これで、サーバーの関連テーブルとのアクセスは全て終了。
で、関連テーブルは、他のクライアントに開放できます。
で、参照や印刷では棚卸一時テーブルを利用。

Access のリンクテーブルはその都度に全てのデータを取り込んで処理。
そのデータを参照する都度に再び全てのデータを取り込んで処理。
これを二重、三重に仕掛ければ処理が遅くなるのは必定。

最初から3を作成しても1万件でも1、2秒かと思います。
で、表示は時間計測不能かとも・・・。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QADOで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

Aベストアンサー

Set rs = New ADODB.Recordset
rs.Open strSql, cn, adOpenKeyset, adLockReadOnly

'フォームへ抽出レコードセット セット
Set Forms!["このモジュールを実行しているフォーム名"].Form.Recordset = rs

これでは如何でしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング