VBからACCESSへの接続で
1つワークスペースを定義して、
2つのデータベースでそのワークスペースを使ったところどちらも開くことができたのですが,
こんな感じで↓
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(データベース名)
Set Ndb = ws.OpenDatabase(データベース名)
やめておいたほうがいいですか?
それとももう1こくらいデータベース開いてもだいじょぶですか?
変な質問ですみません。
> 2つのデータベースでそのワークスペースを使ったところどちらも開くことができたのですが,
そういう運用もありますよね。
複数のmdbを同一のトランザクションで扱いたい場合は、
同じWorkspace上で開く事ができます。
逆に、1つのmdbを複数のWorkspace上で開くようなケースも稀にあります。
(ユーザーやグループ別に、権限が細かく設定されている場合とか)
> それとももう1こくらいデータベース開いてもだいじょぶですか?
別に構わないと思いますが、ワークスペースを意識したコーディングにするなら、
既定のワークスペースを使うのではなく、きちんとCreateWorkspace()した方が良いかと。
魔界の仮面弁士さん、ありがとうございます。
魔界の仮面弁士さんの発言で
> ワークスペースを意識した
とありますが、意識するのはどんな場合でしょう?
それと、CreateWorkspace()の意味、使い方を教えて下さい。
今VBがある環境ではないもので(^^;
> 意識するのはどんな場合でしょう?
「意識する」と書いたのは、特に深い意図はありません。(^^;
初心者の方ですと、Workspaceの存在を意識せず、直接OpenDatabaseを呼び出している方もおられますが、スミセイさんは、Workspaceを一つだけにするか、それとも、分けるべきか、と悩んでいたようなので、Workspaceを意識しているのだなぁ、と思っただけです。
で。
複数のmdbを同時に使うときに、意図的にWorkspaceを使い分けるべきかどうかについては、先の回答を参照してください。ただ、トランザクションやセキュリティ等を気にしないのであれば、同一のWorkspaceでも複数のWorkspaceでも、大差は無いと思います。
> それと、CreateWorkspace()の意味、使い方を教えて下さい。
> 今VBがある環境ではないもので(^^;
せっかく教えても、試せる環境に無ければ理解しにくいと思いますので、VBのある環境に戻ってから、実際に試しながら調べてみて下さい。
(それでも良く分からないようであれば、あらためて再質問してください)
なお使い方に付いては、google等で検索すると、具体的なコードが見つかりますよ。
すみませんCreateWorkspace()についてもう一度質問させて下さい。
ヘルプにて
Set workspace = CreateWorkspace(name, user, password, type)
(1) (2) (3) (4)
と載っていたのですが、
(1)workspaceはワークスペース自体の名前でいいんですよね?
(2),(3)一意な名前?所有者を示す?意味がわかりません(*_*)
(4)なんでもいいんですか?
よろしくお願いします。
ずれました!
(1)workspace
(2)name
(3)user
(4)password
です