質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

3回答

2299閲覧

Accessレコードソースにサーバーのテーブルを指定したい。

Chandler_Bing

総合スコア673

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/10/08 02:12

編集2021/10/08 02:36

いつもお世話になっております。
Accessの件で質問がございます。

レコードソースにサーバーのテーブルを指定したいのですが、どのようにすればよいでしょうか?

諸事情により、以下は実施できないので、PGから無理矢理設定せざるを得ない状態です。
・リンクテーブルを作成する
・リンクテーブルを作成したのち、プロパティシート > レコードソースにクエリを記載

レコードセットをしているサンプルは以下になりまして、
これと似たような要領で、レコードソースにサーバーのテーブルを指定したいです。

VBA

1 SQL = "SELECT * FROM Link_TABLE" 2 rs.CursorLocation = adUseClient 3 rs.Open SQL, 接続情報, adOpenDynamic, adLockReadOnly 4 Set Me.サブフォーム名.Form.Recordset = rs.Clone

ご教授のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

パススルークエリーが使えるなら、レコードソースにそのクエリーを指定すれば良いかと思います。

投稿2021/10/08 04:05

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

いろいろ誤解があるようです。

ただ、レコードソースに指定がないので、フォームを開いた際に#Name?が表示されてしまうのでレコードソースを指定したく思っていました。

フォームのRecordsetプロパティに rs.Open で開いたレコードセットを設定した場合、成功していれば、#Name? と表示されることはありません。どこかで失敗しているはずです。

無理な理由としては、レコードセットの場合はPGからレコードを取得するときだけサーバーを参照すればよいが、レコードソースの場合は、フォームのプロパティシートと常に連動しているため、

Recordsetプロパティで設定した場合も、レコードソースプロパティで設定した場合も、常にサーバーと接続しているという状態は同じです。

Recordsetプロパティでの設定でもレコードソースプロパティでの設定でも連結フォームであることに変わりありません。

レコードソースにはSQLを直接設定することもできますので、SQLのIN句でサーバーに接続することは可能です。

IN 句 (Microsoft Access SQL) | Microsoft Docs

例えばレコードソースに下記のように設定できます。ファイルパスにサーバーのパスを設定すれば接続てきます。

SQL

1SELECT * FROM テーブル名 IN '' [Ms Access;DATABASE=ファイルパス;];

そもそも、リンクテーブルが使用できない事情とはなんでしょうか。
サーバーと常時接続になるのが問題なら、Recordsetプロパティで接続するのも同じことです。

投稿2021/10/08 04:04

編集2021/10/08 04:40
hatena19

総合スコア34084

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chandler_Bing

2021/10/09 01:47

回答ありがとうございます。 ルール上、リンクテーブルを使用しない(サーバーへのアクセスはPG側で行う)ルールとなっているようです。 レコードセットに取得したデータを設定する際は#Name?の表示は出ません。 レコードソースに記載がなく、データソースにレコードセットで取得したレコードのカラム名を無理やり設定しているのでフォームを開いた段階で#Name?が表示されている感じでございます。
Chandler_Bing

2021/10/09 01:47

伝わっておりますでしょうか?
Chandler_Bing

2021/10/09 01:51

xxxx.Form.Recordsetのと同じ要領で xxxx.Form.RecordSource = 'サーバー先のテーブルに対するセレクト文' はどのように記述すればよいでしょうか??? rs.Open SQL, 接続情報, adOpenDynamic, adLockReadOnly の接続情報の部分にサーバーへの接続に必要な情報が記述されております。 ⇨rs.Open SQL, 接続情報, adOpenDynamic, adLockReadOnlyで接続は問題なくできております。 xxxx.Form.RecordSource = 'サーバー先のテーブルに対するセレクト文' の書き方を教えて頂ければ幸いです、、、、。
guest

0

ベストアンサー

リンクテーブルの使用が不可であれば、無理だったと思います。
お調べになったようにレコードセットをご利用ください。

投稿2021/10/08 02:52

hex309

総合スコア761

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chandler_Bing

2021/10/08 02:57

回答ありがとうございます。 レコードセットは既に設定していて、レコードを取得した際に表示できます。 ただ、レコードソースに指定がないので、フォームを開いた際に#Name?が表示されてしまうのでレコードソースを指定したく思っていました。
Chandler_Bing

2021/10/08 02:58

無理な理由としては、レコードセットの場合はPGからレコードを取得するときだけサーバーを参照すればよいが、レコードソースの場合は、フォームのプロパティシートと常に連動しているため、リンクにすらない場合はどうしようもないという感じでしょうか??
hex309

2021/10/08 03:07

設定しているレコードセットって、プロパティで指定していますか? であれば、そもそもその方法が異なります。 レコードソースが使えないので、全てコードで指定することになります。 以下を参考にしてみてください。 https://appdeappuappu.hateblo.jp/entry/2020/12/27/215047
hex309

2021/10/08 03:08

ちょうど入れ違いでした。 >リンクにすらない場合はどうしようもないという感じでしょうか?? そのとおりかと
Chandler_Bing

2021/10/08 03:40

承知いたしました。 では方法を変える方向で行きたいと思います。 ありがとうございました。
hatena19

2021/10/08 04:06

解決済みになってしまいましたが、この回答やコメントはいろいろ間違っていると思います。
hex309

2021/10/08 04:17 編集

ご指摘ありがとうございます。 私の知識不足でした。 以後、気をつけます。
hex309

2021/10/08 04:25

Chandler_Bing様 私の知識不足より、間違った回答をしてしまいました。 申し訳ありません。 hatena19様の回答を参考にしてください。
Chandler_Bing

2021/10/09 01:57

承知いたしました。 お二方とも回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問