--- [開発環境] ---
VB6.0(SP6)
ACCESS2000
-----------------
いつもお世話になっております。
VBからACCESSで作成したmdb内の
【フォーム】【テーブル】【クエリー】
【マクロ】【レポート】【モジュール】
を取得し、それらを別mdb内のものと
比較し、異なる場合は上書きコピーを行うツールを
開発しております。
そこで、上記6個のオブジェクトを取得するために以下の
ようなコーディングを行いました。
Dim obj As Object
db.OpenCurrentDatabase sMe.txtMdbPath
For Each obj In db.CurrentProject.AllForms
sMe.lstLData(0).AddItem obj.Name
Next
For Each obj In db.CurrentData.AllTables
If StrComp(Left(obj.Name, 4), "MSys", vbTextCompare) <> 0 Then
sMe.lstLData(1).AddItem obj.Name
End If
Next
For Each obj In db.CurrentData.AllQueries
sMe.lstLData(2).AddItem obj.Name
Next
For Each obj In db.CurrentProject.AllReports
sMe.lstLData(3).AddItem obj.Name
Next
For Each obj In db.CurrentProject.AllMacros
sMe.lstLData(4).AddItem obj.Name
Next
For Each obj In db.CurrentProject.AllModules
sMe.lstLData(5).AddItem obj.Name
Next
db.CloseCurrentDatabase
上記コーディングにより、各オブジェクトの名前を取得する事には
成功したのですがタイムスタンプの取得ができません。
また、別の案としまして、
MSysObjectsテーブル内のレコードを参照し、
【DataUpdate】【Name】列より値を参照しようとしましたが、
「権限がありません」というエラーが発生し、参照することが
できませんでした。
各MDB単位で設定する必要がありそうですので、
この案は敗れ去りました^^;
どなたか、ご教授願います。
CreateObjectでやってみてはいかがですか?
Dim objAccess As Object
Set objAccess = CreateObject("c:\Test.mdb")
詳しくはウォッチウィンドウか何かでobjAccessを見てください。
一通り取得できているはずです。
>でヴぃけい様
ご回答ありがとうございます。
返信遅くなって申し訳ありません。
>詳しくはウォッチウィンドウか何かでobjAccessを見てください。
>一通り取得できているはずです。
ウォッチウィンドウで参照しました。
CreateObject("C:\Test.mdb")
┣ ADOConnectString
┣ AmswerWizard
・
・
┣ CodeData
・ ┣ AllDatabaseDiagrams <関数の呼出が不正です>
・ ┣ AllQueries <関数の呼出が不正です>
・ ・
・ ・
上記のような内容が表示されています。
(「・」は省略を意味しています。)
私が思いましたのでは
上記に明記しています「CodeObject」か、もしくは
明記していないのですが「CodeProject」内に
・AllDataAccessPages
・AllForms
等の式がありましたので
値を確認してみたのですが、上記同様
<関数の呼出が不正です>
と、なっておりまして、値を確認することができませんでした。
申し訳ありませんが、
主に、どこを参照すればよいのかを、ご指示頂けたらと
思います。
以上、よろしくお願いいたします。
別方法にて、解決致しましたので、
ソースを記載し、解決としたいと思います。
ご意見、ありがとうございました。
Set pbDB = OpenDatabase(sPath)
For lCnt = 0 To pbDB.Containers.Count - 1
Set Con = pbDB.Containers(lCnt)
sMe.lstLData(lPos).AddItem Doc.Name
sMe.lstLTime(lPos).AddItem Doc.LastUpdated
Next
pbDB.Close
尚、【con.Name】によって、
現在取得している【Doc.Name】の種類(テーブル名、マクロ名等)を
取得することが可能です。
以上、ありがとうございました。
解決。
ツイート | ![]() |