NEWキーワードとCreateObjectは同じことをするのでしょうか?
Sub ADO_Sample1()
Dim cn As New ADODB.Connection
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & _
"D:\Mail.mdb;Jet OLEDB:Database;"
Debug.Print "ファイルに接続できました。"
cn.Close: Set cn = Nothing
End Sub
このようなコードの時、
Set cn = CreateObject("ADODB.Connection")
は、あってもなくても問題ないようです。
NEWとCreateObjectがある場合は、
2度データベースに接続してしまうのでしょうか?
NEWとCreateObjectがあってもエラーにならない理由を教えてください。
No.3ベストアンサー
- 回答日時:
>Dim cn As New ADODB.Connection
>じゃダメなのでしょうか?
>変数の宣言とインスタンスの生成(?)を同時に行わな方がいいですか?
言語によって、インスタンス生成のタイミングが違う事を、
判って使う分には「ダメ」な事は無いと思います。
「ダメ」ならそんな書き方出来ないように設計するだろう、
と思うからです。
因みに、VB VBA では宣言と New を一行で書いてしまっても
「変数の宣言とインスタンスの生成」が同時にされる事はありません。
最初にインスタンスのメソッドなりプロパティなりを使用する
タイミングでインスタンスが生成され、インスタンス生成時の
最初に実行されるメソッドである Initialize が実行されます。
この最初に実行されるメソッドの事を「コンストラクタ」と、
オブジェクト指向では呼びます。
対して、VB.NET では、Dim cn As New ADODB.Connection
が書かれている位置で、インスタンスが生成され 、
コンストラクタが実行されます。
コンストラクタで何か処理をさせている場合、実行されるタイミングの
違いを見誤ると、意図通りの動作にならないかも知れません。また、
使いもしない段階でインスタンスを生成するのは、メモリの無駄使いでも
あります。
Dim cn As New ADODB.Connection
が間違いなのであれば、
使えないように設計されているはずですね。
Dim cn As New ADODB.Connection
をしてるからって、
「変数の宣言とインスタンスの生成」が同時にしてるわけではないようですね。
「コンストラクタ」と言う用語は初めて聞きました。
そのような言葉があるのですね。有難うございます。
No.2
- 回答日時:
> Set cn = CreateObject("ADODB.Connection")
> は、あってもなくても問題ないようです。
本来は、
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
こうすべきなので。
> 2度データベースに接続してしまうのでしょうか?
VBAが裏で前回の参照を解放してからまた、新たにセットし直してるのでそれはないです。
本来ならば
Set cn = CreateObject("ADODB.Connection")
ではなく、
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
するべきなのですね。
ちなみに
Dim cn As New ADODB.Connection
じゃダメなのでしょうか?
変数の宣言とインスタンスの生成(?)を同時に行わな方がいいですか?
No.1
- 回答日時:
> NEWとCreateObjectがある場合は、
> 2度データベースに接続してしまうのでしょうか?
質問内容に記載されているコードならば cn.Open は一回しか実行しないので、接続も一回のみです
> NEWとCreateObjectがあってもエラーにならない理由を教えてください。
同じ変数に入れているため、上書きされているだけ
Set cn = CreateObject("ADODB.Connection")
こちらが有効になる(結果的に同じことをしているだけなので動作は変わらない)
なぜ New と CreateObject の2つがあるのかは
VBSとVBAの違いですね。
VBSだと参照設定が使えないため CreateObjectを使います。
VBA(たとえばExcel)だと、DLLの参照設定が出来るため Newキーワードでオブジェクトが作成できます。
>同じ変数に入れているため、上書きされているだけ
とてもわかりやすい例えです。イメージしやすいです。
CreateObject関数でもできる理由は、VBSの為なのですね。
たしかにVBSでは参照設定の仕方がわかりませんでした。
ありがとうございました。大変参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「web上」と「インターネット上...
-
「インターネット」「イントラ...
-
ダークウェブに興味がある17歳...
-
LANとイントラネットの違い
-
インターネット共有をしてるとi...
-
インタネット接続無しでのリモ...
-
snsっていつから始まったんです...
-
インターネットが世の中消えて...
-
寮に入っているのですが、
-
この状態での光回線でのインタ...
-
インターネットの科学技術の事...
-
エクセル共有設定時に画像を挿...
-
【Excel VBA】ネットワーク上の...
-
パソコン上で付箋の共有が「ぺた...
-
net useを使用すると…。
-
Mail Distributorで送信できま...
-
エクセルの共有が外れる
-
OneDrive で共有したフォルダの...
-
pingは、通るのですが、¥¥IP...
-
社内LANにつながるけど、インタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「web上」と「インターネット上...
-
「インターネット」「イントラ...
-
LANとイントラネットの違い
-
realtek usb wireless lan util...
-
NEWキーワードとCreateObjectは...
-
インタネット接続無しでのリモ...
-
イントラネットとインターネッ...
-
iPhoneのWi-Fiのところにipアド...
-
学術インターネット、商用イン...
-
ダークウェブに興味がある17歳...
-
プロバイダーを経由しないでイ...
-
LANカードを 2枚挿して ...
-
インターネットを発明した人っ...
-
ノートンの常駐アイコンが消えた?
-
作文の添削をお願いします。「...
-
翻訳をお願いしたいです。
-
USB用無線アダプタ
-
VPN??閉域網??どうか教えて...
-
iPhone スライダ
-
完全に匿名でインターネットは...
おすすめ情報