新しく質問する

MS Accessのコンパイルエラー

役に立った:4件
  • 質問者:rvr3958
  • 投稿日時:2004/06/10 14:18
  • 困り度:すぐに回答が欲しいです

大変初心者的質問ですいません。是非3点ほど回答をお願い致します。

【Q1】
Access1.0 から Access97を経由させAccess2000 にシステムをコンバートしたのですが、Access97からコンバートした際にモジュールでコンパイルエラーが発生しました。

「コンパイルエラー ユーザ定義型は定義されていません。」

Dim TB1 As Table

のTableのところなのですが、確かにTableなんて候補にあがりません。(TableDefとかならありますが…)
ネットや過去の質問を検索し、参照設定のMicrosoft DAO 3.6 Object Libraryにチェックが入ってる事は確認しました。しかしそれ以上どうすれば良いのか分からず困りきっています。どのように対処すれば良いのでしょうか?

【Q2】
それと別の文献で、DAOとADOを明確にする為にDAO.Databaseと修飾子をつけるべきとありました。修飾子をつけるべきものはDatebaseの他に何があるのでしょうか?(代表的な物でも)

【Q3】
修飾子を付けなかった場合どのような障害が予想されますか?

よろしくお願いします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:4件)
  • 参考になった:0件

No.3ベストアンサー20pt

  • 回答者:Gin_F
  • 回答日時:2004/06/10 18:12

> どうやらTableは現在のRecordsetである模様。と理解して良いのでしょうか?
そうですね。


Dim SW As Integer

Dim DB As DAO.Database
Dim TB1 As DAO.Recordset

Set DB = CurrentDb()
Set TB1 = DB.OpenRecordset("INSPECTION_RECORD")

SW = 0

If Dir("A:\KAKOJ.TXT") = "" Then
  SW = 1
End If
If Not TB1.EOF Then
  TB1.MoveFirst
  Do Until TB1.EOF
    TB1.Delete
    TB1.MoveNext
  Loop
End If
M_kakojchk = SW

TB1.Close
DB.Close


現在では、Access1.0の情報が載っている書籍を探し出すことは困難でしょうから
> 今Access2.0のヘルプを見ていましたら、「Ver2.0対応コードへの変換例」
を参考にするしかないと思います。


Access2.0 からなら、
[ACC2002] データベースの変換について確認されている問題の一覧
http://support.microsoft.com/default.aspx?scid=k …

こちらにも少しだけ載ってはいますけど。

> 【Q2】
Database
Recordset
Field
など。

ADOなどと同じものが存在するものはすべてつけるようにすべきですね。


> 【Q3】
環境により、コンパイルエラーが発生します。
(実行時エラーだったかな??)
参照設定で、DAOより上位にADOがある場合は。

通報する

この回答への補足

なんとなく変換作業順調です。
変換するのもTable→Recordsetと、LeftB/RightB/MidBぐらいでした。この調子で頑張ってみます。ありがとうございました!

この回答へのお礼

再びの回答ありがとうございます。
まずはTable→Recordsetに変更し、代表的なDatabaseやRecordset,Fieldに修飾子を付ける事から始めてみます。

  • 参考になった:0件
  • 回答者:Gin_F
  • 回答日時:2004/06/10 17:18

Access Ver1.0 のことを知っている人じゃないと的確な回答は
難しいかと。。

実際に、TB1 を使っている部分のコードも提示していただければ
分かるかもしれませんが。。。

通報する

この回答への補足

字数の都合上、一部だけ…。
----------------------------------
Dim SW As Integer

Set DB = CurrentDb()
Set TB1 = DB.OpenTable("INSPECTION_RECORD")

SW = 0

If Dir("A:\KAKOJ.TXT") = "" Then
  SW = 1
End If
If Not TB1.EOF Then
  TB1.MoveFirst
  Do Until TB1.EOF
    TB1.Delete
    TB1.MoveNext
  Loop
End If
M_kakojchk = SW

TB1.Close
DB.Close
----------------------------------
とか、
----------------------------------
TB1![PRIMARY_PRODUCTS1] = TB1![PRIMARY_PRODUCTS1] + JYURYO
----------------------------------
とか?何かお役に立てば良いのですが…。

この回答へのお礼

回答ありがとうございます。
今Access2.0のヘルプを見ていましたら、「Ver2.0対応コードへの変換例」として次のような記述がありました。
-------------------------------
テーブルを開く

Ver 例
1.1 Dim MyTable As Table
  Set MyTable = MyDB.OpenTable("書籍", False)
2.0 Dim MyTable As Recordset
  Set MyTable = MyDB.OpenRecordset("書籍", DB_OPEN_TABLE)
-------------------------------
どうやらTableは現在のRecordsetである模様。と理解して良いのでしょうか?

  • 参考になった:0件

No.1ベストアンサー10pt

  • 回答者:noname#7099
  • 回答日時:2004/06/10 15:46

うちにあるACCESS97からACCESS2000に変換したmdbには以下が、参照可能なライブラリファイルとなっていました。

Visual Basic For Applications
Microsoft Access 9.0 Object Library
Microsoft DAO 3.6 Object Library
Microsoft Access BarCode Control 7.0(
バーコードコントロールは要らないとは思いますが)
OLE Automation
Microsoft Visual Basic for Applications Extensibility 5.3
うちはこの順番ですが、バージョン等違うかもしれません。

access97時点ですでにTableDefのようですね。
ADOを参照しないなら、databaseに修飾子をつけなくても区別しなくても動くのではないでしょうか?

本1冊買ったほうがいいと思います。
(適切な本っていうのが見つかるかどうかわかりませんが、VBAのリファレンスブックは買いなおす必要があります。)
コンパイルエラー、山盛り出ます。
コマンドもかなり違います。
フィルタなども、97と2000では、コマンドを書き換えないと動かないものも多くあります。

変換後にちゃんと動くか動作確認が必要です。

マクロなどは直さなくてもある程度動くんだと思いますが、
VBAは変換してくれませんから、多用しているようならたいへんだと思います。
心して、がんばって変換してください。

通報する

この回答へのお礼

回答ありがとうございます。うちの参照設定は、

Visual Basic For Applications
Microsoft Access 9.0 Object Library
OLE Automation
utility
Microsoft DAO 3.6 Object Library
Microsoft Visual Basic for Applications Extensibility 5.3

でした。Tableに代わるものはTableDefなのですか?
FileMakerを知ってるだけでVBAまでこなすと思われちゃやっていられませんがこれも業務命令。ガンバリマス(笑)
Access97や2000の本はあるのですが、コンバート(変更点)を重点的に書いた本なんて見つからないと思うし、見つけている時間も理解している時間も無くご質問となってしまいました。Accessを良くご存知の方から見るとホント基本的な質問だったと思います。すいません。

  
このQ&Aは役に立ちましたか?(役に立った:4件)

このページのトップへ