Page 94 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ADOでリンクテーブルの件数を数えたい ほぇぇぇ 02/11/8(金) 9:21 ┣Re:ADOでリンクテーブルの件数を数えたい イケガミ 02/11/8(金) 17:26 ┃ ┗リンクテーブルのパス名を変更したいよー ほぇぇぇ 02/11/8(金) 18:36 ┃ ┗Re:余談 2 YU-TANG 02/11/9(土) 17:41 ┗Re:余談 YU-TANG 02/11/8(金) 23:33 ─────────────────────────────────────── ■題名 : ADOでリンクテーブルの件数を数えたい ■名前 : ほぇぇぇ ■日付 : 02/11/8(金) 9:21 -------------------------------------------------------------------------
みなさん、おはよーございます。 ADOでリンクテーブルの件数を数えたいのですが、どうしたらいいでしょうか? TableDefs.Countみたいなことをしたいのですが、ADOだと使えないんでしょうか? |
>ADOでリンクテーブルの件数を数えたいのですが、どうしたらいいでしょうか? >TableDefs.Countみたいなことをしたいのですが、ADOだと使えないんでしょうか? リンクテーブルの件数って、レコード数じゃなくて、リンクテーブルのテーブル数 ですよね? ADOじゃないですが、以下のような方法もありますよ。 SELECT MsysObjects.Name FROM MsysObjects WHERE (((Left([Name],1))<>"~") AND ((MsysObjects.Type)=1) AND ((Left([Name],4))<>"MSys")) ORDER BY MsysObjects.Name; |
イケガミさん、ありがとうございます。 普段、MsysObjectsなどのテーブルは表示しない設定にしているので 「こんな方法があるんだ!!」と勉強になりました。 今、作っているのは・・・ リンクテーブルのリンク先のパスをモジュール上で変更させる というもので、以前はJETで作っていたものを、 ADOでできないものかと悪戦苦闘中なのです。 イイ案がありましたら、どなたかお教えください!! |
> リンクテーブルのリンク先のパスをモジュール上で変更させる > というもので、以前はJETで作っていたものを、 > ADOでできないものかと悪戦苦闘中なのです。 参照するだけなら、以下のコードで可能です。 Public Sub EnumLinkedTables() ' ADOX.Catalog.Tables コレクションをループで走査し、 ' Access リンクテーブルを列挙します。 Dim i As Integer Dim cat As New ADOX.Catalog cat.ActiveConnection = CurrentProject.Connection For i = 0 To cat.Tables.Count - 1 If cat.Tables(i).Type = "LINK" Then Debug.Print "▼"; cat.Tables(i).Name Debug.Print vbTab; "Source DB->" _ ; cat.Tables(i).Properties("Jet OLEDB:Link Datasource").Value Debug.Print vbTab; "Source Table->" _ ; cat.Tables(i).Properties("Jet OLEDB:Remote Table Name").Value End If Next i End Sub 上記コードで分かるように、テーブルの種別は Type プロパティを 参照することで判別できます。 私の環境には ODBC リンクテーブルが無いので、ODBC リンクテーブル の場合はどうなるのか興味深いところです。 # 分かったら教えてください。 問題はこのプロパティを書き換えることができるのかどうかですが、 私は ADO にうといので、正直分かりません。 個人的には ADO のネイティブ プロパティならいざしらず、この ようなプロバイダー固有のプロパティは ADO では更新できないの ではないかと思っていますが、実際のところどうなのかは、識者の 意見を待ったほうがいいでしょう。 # もしくは調べて分かったら教えてください。 以下は余談ですが。 ADO は DAO との完全互換性は無いので、もし各種のサーバー連携が 無いのであれば、DAO から ADO に移行するのは無意味だと思います。 M$ は SQL Server への乗り換えを促すために ADO を積極的に推して いますが、もし今お使いのデータベースが Access 内で完結するもの であれば、M$ のマーケティング戦略に踊らされず、ミドルウェアの 移行が本当にメリットのあるものなのか再検討された方がよいのでは ないでしょうか。 # サーバー連携の必要上、移行中なのであれば、上のたわごとは # 無視してください。 |
> ADOでリンクテーブルの件数を数えたいのですが、どうしたらいいでしょうか? ADO じゃなきゃダメですか? リンクテーブル数を取るだけなら、DCount 関数で終わりですが...。 DCount("Id", "MSysObjects", "Type In (4, 6)") |