Page 307 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼アクセス95からアクセス2000への移行について ヒロセ 03/6/19(木) 10:11 ┗Re:アクセス95からアクセス2000への移行について まる 03/6/19(木) 14:39 ┗Re:アクセス95からアクセス2000への移行について ヒロセ 03/6/19(木) 15:55 ┗Re:アクセス95からアクセス2000への移行について まる 03/6/19(木) 16:05 ┗Re:アクセス95からアクセス2000への移行について ヒロセ 03/6/19(木) 17:02 ┗Re:アクセス95からアクセス2000への... まる 03/6/19(木) 17:17 ┗Re:アクセス95からアクセス2000への... ヒロセ 03/6/19(木) 18:07 ┗Re:アクセス95からアクセス2000への... まる 03/6/19(木) 18:21 ┗Re:アクセス95からアクセス2000への... ヒロセ 03/6/20(金) 9:19 ─────────────────────────────────────── ■題名 : アクセス95からアクセス2000への移行について ■名前 : ヒロセ <hirosek@hyg.nec-tokin.com> ■日付 : 03/6/19(木) 10:11 -------------------------------------------------------------------------
NECのPC98(WIN95)ACCESS95のデータベースから、DOS/V機(WIN98SE)ACCESS2000へバージョン変換を行ったのですが、モジュールを実行させると、 Dim DB As Database Set DB = CurrentDb() Set TABLE_1 = DB.OpenTable("テーブル名") 等の構文でエラーとなり、実行できません。 PC98とDOS/Vのドライブの相違(A:、C:)が起因していると思われますが、これを回避する手順をご教示お願いします。 |
こんにちは >Dim DB As Database >Set DB = CurrentDb() >Set TABLE_1 = DB.OpenTable("テーブル名") >等の構文でエラーとなり、実行できません。 Database を使用していますが、 参照設定で DAO にチェックはついていますか? また、Recordset 等、ADOに参照設定が入っていると 優先順位の関係で明示的に宣言しないと動かないと思います。 Dim rs As ADODB.Recordset '<-ADO Dim rs As DAO.Recordset'<-DAO >PC98とDOS/Vのドライブの相違(A:、C:)が >起因していると思われますが、これを回避する手順をご教示お願いします。 このコードだけならば、ドライブは関係ないと思います。 関係ある部分があるのならば、 その部分のコードを提示していただければと思います。 ではでは ^^)/~~ |
▼まる さん: 早速の回答ありがとうございます。 > >Database を使用していますが、 >参照設定で DAO にチェックはついていますか? > VBAを開いて、ツール>参照設定を確認しましたところ、チェックマークが付いている項目は以下の通りでした。 Visual Basic For Applications Microsoft Access 9.0 Object Library 参照不可:Microsoft Jet SQL リファレンス 参照不可:Microsoft DAO 2.5/3.0 Compatibility Library OLE Automaition Microsoft Visual Basic for Applications Extensibility 5.3 >また、Recordset 等、ADOに参照設定が入っていると >優先順位の関係で明示的に宣言しないと動かないと思います。 > >Dim rs As ADODB.Recordset '<-ADO >Dim rs As DAO.Recordset'<-DAO > この構文はDimで変数宣言している部分の後に、記述すればよいのでしょうか? すみません。 問題のデータベースは別人が数年前に作成したもので、私はACCESSについてはほとんど無知なもので・・・・ 恐縮ですが、再度ご教示お願いします。 |
こんにちは >>Database を使用していますが、 >>参照設定で DAO にチェックはついていますか? >> >VBAを開いて、ツール>参照設定を確認しましたところ、チェックマークが付いている項目は以下の通りでした。 > >Visual Basic For Applications >Microsoft Access 9.0 Object Library >参照不可:Microsoft Jet SQL リファレンス >参照不可:Microsoft DAO 2.5/3.0 Compatibility Library >OLE Automaition >Microsoft Visual Basic for Applications Extensibility 5.3 この参照不可の部分のチェックは外して、 DAOならば、 Microsoft DAO 3.6 Object Library Jet SQL リファレンスの方は 使用しているのならば、新しく参照設定しなおせばいいかと思います。 でも、これって何に使ってるのかな? >>また、Recordset 等、ADOに参照設定が入っていると >>優先順位の関係で明示的に宣言しないと動かないと思います。 >> >>Dim rs As ADODB.Recordset '<-ADO >>Dim rs As DAO.Recordset'<-DAO >> > >この構文はDimで変数宣言している部分の後に、記述すればよいのでしょうか? 〜 As Database ↓ 〜 As DAO.Database このように明示的にするってことです。 ただ、DAOのみ参照設定している状態では 修正はなくても動くと思います。 ではでは ^^)/~~ |
▼まる さん: またまた早速のご回答ありがとうございます。 おかげさまで、Dim DB As Database のところではエラーが出なくなりました。 しかしながら、別の変数宣言の構文のところでエラーとなってしまいました。 Dim 変数名 As TABLE <エラー内容> コンパイルエラー ユーザ定義型は定義されていません。 どうやら、ユーザ独自でデータ型を定義するようなのですが、どのようなデータ型にするかが分からないのです。まるさんに伺うことなのかどうか疑問なのですが・・・ このようなユーザ定義情報は、現在使用しているPC98マシンの中から取り出せるのでしょうか? 申し訳ありません。ヘルプを参照しても分からないので、再々度ご教示お願いします。 |
こんにちは >どうやら、ユーザ独自でデータ型を定義するようなのですが、 >どのようなデータ型にするかが分からないのです。 > >このようなユーザ定義情報は、 >現在使用しているPC98マシンの中から取り出せるのでしょうか? ちょっと誤解があるようですが、 Accessが認識できないものを使用している場合に、 すべてユーザー定義型だろうと判断されているだけです。 ので、今回は 自分で定義するようなものでも、 別のマシンから取り出すようなものでもないですね。 Tableオブジェクトについて 以下のような記述がMSDNにありました。 >****************************************************** DAO の旧式の機能 Access Version 1.x および 2.0、および Visual Basic Version 3.0 は、前のバージョンの DAO を使用していました。これらのバージョンで使用された、オブジェクト、メソッド、プロパティ、およびステートメントのうちの、いくつかは 「旧式」 とされましたが、既存のユーザー プログラムとの上位互換性を保つため、サポートされています。 次の表は、旧式の DAO メソッド、プロパティ、オブジェクト、ステートメントの一覧です。これらは、より強力で、柔軟で、使いやすいものに置き換えられました。表では、旧式の機能のそれぞれに対応する新しい機能が示されています。 旧式の機能 新しい機能 Table オブジェクト Recordset オブジェクト >****************************************************** だそうですので、 Recordset オブジェクトを使用した形式にコードを修正するか、 古いバージョンの DAO を参照設定してそちらを使うかでしょう。 Microsoft DAO 2.5/3.51 Compatibility Library これには非表示メンバとしてですが、 Tableオブジェクトが残っているようです。 もちろん今後のことを考えたら、 新しい形式に修正することも必要かと思います。 ではでは ^^)/~~ |
▼まる さん: いつもご丁寧な回答をありがとうございます。 ご教示の通り、TableからRecordsetに修正しました。 前質問のエラーは見事回避することができました。 しかしながら、今度は以下のエラーが発生しました。 Set Source = DB.OpenTable("部門費変換テーブル") Set Object = DB.OpenTable("部門費変換オブジェクト") Object.INDEX = "PRIMARYKEY" Source.MoveFirst (1行目の.OpenTableの部分が反転表示) コンパイルエラー 関数またはインターフェースが予約されているか、またはVisualBasicでサポートされていないオートメーション タイプが関数で使用されています。 度重なる質問で恐縮ですが、ご教示をお願いします。 |
こんにちは Web上で MSDNのページをめっけました http://www.microsoft.com/japan/developer/library/dao360/dahowobsoletefeatures.htm >Set Source = DB.OpenTable("部門費変換テーブル") >Set Object = DB.OpenTable("部門費変換オブジェクト") > Object.INDEX = "PRIMARYKEY" >Source.MoveFirst > >(1行目の.OpenTableの部分が反転表示) 全て新しい DAOの使用にあわせて修正する必要があるかもしれません。 ではでは ^^)/~~ |
▼まる さん: ありがとうございました。 エラーがすべてなくなりました。 おかげさまで旧バージョン資産を現行に置き換えることができました。 本当にありがとうございました。 |