tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル自動的にAccess2000形式に変換したい
記事No15457
投稿日: 2012/04/16(Mon) 12:34
投稿者しまちゃん
久々にお世話になります。

VB5のDAO3.51で作っていたアプリをWindows7でも動くようにVB6のDAO3.6へ作り直しています。 mdbを自動的にAccess2000形式に変換したいのです。
Webを検索したらサンプルがありAccess2003が入っている状態では、Accessを起動し DoCmd.TransferDatabase を使い自動的に変換できたのですが、入っていない場合できません。
このサイトにも同じような質問が過去にありましたが、サンプルのリンクが切れておりわかりませんでした。

Accessは入っていなと言う条件で、VB6でDAOで変換できるのでしょうか? 1つのデータベースにはテーブルは1つということで結構です。 開発環境はWindowsXP(SP3)+VB6(SP6)です。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: 自動的にAccess2000形式に変換したい
記事No15458
投稿日: 2012/04/16(Mon) 16:30
投稿者魔界の仮面弁士
> VB6のDAO3.6へ作り直しています。
DAO 3.6 を使う場合、VB6 の SP5 以上が必要となります。もっとも、
相手が Win7 である以上は SP6 を使うことになるでしょうけれども。

また当然、実行環境にも DAO 3.6 が必要となります。(Access は無くても良い)

なお、Access 固有の機能(標準モジュールやフォームなど)を使っていた場合、
それらの部分はコンバートされませんので、変換後のファイルを
Access で開いた場合、バージョン違いだと誤解されて、
追加の変換処理が要求されることがあります。


> mdbを自動的にAccess2000形式に変換したいのです。
DAO や JRO の場合は、「CompactDatabase メソッド」を使います。
たとえば下記のようなコードです。

Const dbLangJapanese = ";LANGID=0x0411;CP=932;COUNTRY=0"
Const dbVersion40 = 64
CreateObject("DAO.DBEngine.36").CompactDatabase oldMdbPath, newMdbPath, dbLangJapanese, dbVersion30

上記の他、レイトバインドせずに参照設定で使う方法もあります。


パスワード付mdbなどでは追加の記述が必要になりますが、
検索すれば具体的なサンプルも見つかるかと思いますので、
Access VBA のヘルプやここの過去ログ等にて、
「CompactDatabase」というキーワードを検索してみてください。

[ツリー表示へ]
タイトル解決しました。
記事No15459
投稿日: 2012/04/17(Tue) 14:36
投稿者しまちゃん
> DAO や JRO の場合は、「CompactDatabase メソッド」を使います。

解決しました。

魔界の仮面弁士さん、適切なアドバイスありがとうございました。
早速朝からCompactDatabaseの関連のWebを読みあさりVBのみで変換できました。
Windows7の環境でもうまく動きました。
ついでに、もう少しDAO3.6について勉強してみます。

[ツリー表示へ]