Kです。お疲れ様です。
いつもお世話になっております。
環境:Win2K+VB6SP4+ADO2.5+MDB
プログラム起動時にMDBを最適化しようと思っています。
最適化はJROを使用して、EXEファイル(最適化プログラム)を作りました。
(コマンドラインにてMDBへのパスを指定)
プログラム起動時にはスプラッシュ画面を表示させており、
その間に呼び出すことを考えています。
但し、スプラッシュ画面を表示する際にDB接続を行い、
なんらかの情報をとる必要があります。
状況としては、
1.MDBに接続を行った後にそのまま最適化プログラムを呼び出すと、
「排他的に開かれている」とのエラーが出ました
これは最適化する際にアクセスしている人がいると困るからだろうと思い、
2.MDBに接続を行い、クローズして最適化プログラムを呼び出すと、
1と同じエラーが出ました
3.MDBに接続を行わないプログラムから呼び出すとエラーは出ませんが、
接続を行う必要があるので意味無し
のような感じです。
思うに、クローズしてもしばらくは解放してくれないのかなぁと推測しています。
これは正しいのでしょうか?
正しいとしたら、何か方法はありますでしょうか?
もしくは他に回避する方法がありましたらお願いします。
僕もmdbを最適化するプログラムを作りましたけど、問題なく動いていますよ。
環境:Win2K + VB6.0(SP5) + ADO2.6 + mdb(Access2K)
コマンドボタンをクリックすると ADO接続をCloseしてJROで最適化。
最適化処理終了後、再びADO接続をOpenしています。
状況を見る限り同じだと思うんですけど……。
エラーが起きた時に ConnectionオブジェクトのStateプロパティを確認してみては?
お返事ありがとうございます。
VB上では間違いなく動くのですが、
EXEにするとエラーが発生してしまいます。
うーん・・・。
自己レスです。
直前にMsgBoxを入れたらEXEでもうまくいきました。
でもMsgBoxを出すのは勘弁したいので、どうしようかなと思ってます。
うーんうーん。
> 環境:Win2K+VB6SP4+ADO2.5+MDB
各Service Packは、最新の物にしておいた方が良いですよ。
> 2.MDBに接続を行い、クローズして最適化プログラムを呼び出すと、
起動時に最適化するのですよね。であれば、接続してから最適化するのではなく、
最適化してから接続されては如何でしょうか?
> でもMsgBoxを出すのは勘弁したいので、どうしようかなと思ってます。
エラーが発生したら、すこし待ってから再度最適化を試みてみるとか。。。
おはようございます。
一晩頭を冷やしてトライしました。
・・・、出来ました。
プログラムとしては
1.ユーザ認証プログラム(DB使用)
2.メニュープログラム(DB使用)
3.最適化プログラム(DB使用)
で3つのEXEを作っておりまして、
ユーザ認証プログラムからメニュープログラムをShellで呼び出し、
メニューのフォームロード時に最適化プログラムを呼び出していました。
で、頭を冷やして、
まずはメニュープログラム内のコードを新しいプロジェクトで作ってみたら、
EXEでも正常に動いたため、
メニュープログラム単体で動かしてみたら、
(ユーザ認証から特定のコードをコマンドラインで送っていたため
このパターンをやってなかった)
あっけなく動いたので、最適化プログラムが悪いのかなと思ってみてみたら…。
終了時に、
-----
Shell("MENU.EXE", vbNormalFocus)
AdoCon.Close
Set AdoCon = Nothing
-----
なんてやってました。(大汗
もちろんCloseをShellの前にやって解決しました。
なんだかまた馬鹿なミスをしてたみたいで・・・。
takk様,魔界の仮面弁士様ありがとうございました&すみません。
#SPの件などはしたいと思いつつも、提案しつつも、
僕の想いだけではなんとかならないようななるような。
とりあえず今のシステム開発に関してはならないみたいで。。。(--;
ツイート | ![]() |