AccessVBA初心者です。
Accessのデータを操作する方法について質問です。
例えば形式、フィールドが同じ複数のテーブルを一つのテーブルにまとめるようなとき、
Insert into~構文を使っていく方法でするとします。
(1)
Dim connAccess As ADODB.Connection
Set connAccess = Application.CurrentProject.Connection
のような接続方法でSQL文を実行する
(2)
CurrentDb.Execute SQL文
上記の2つのパターン、どちらでも出来ますよね?
(1)の方は全然理解できません。
あの2行だけでは接続すらで来ていないかもしれません…
(2)の方が単純で接続なんかも意識せずに出来ますよね。
この2つの方法はどう違うのでしょうか。
こうゆうデータベースの操作について書かれているサイトがあれば、
そちらも教えてほしいです。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
素人の憶測ですが、ほぼ同じことだと思います。
ただし(1)のほうが汎用性は高いと思います。
最近のアクセスの状態を詳しく知りませんが、一昔前までの
アクセスは、挙動が不安定になることも多くフロント部分と
データ部分を分けて使うことも多くありました。 そのような際に
connAccess1.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbName & ";"
のように変更することで、簡単にdbの切替ができました。
また、データベースを変更した際に(データが増えてくるとどうしても
アクセスでは限界を感じることがあります。)コネクションの内容を
変えるだけで、既存のアクセスをフロントエンドとして使える可能性も
あります。(dbによってはSQL文も変更する必要がありますが)
また、複数のコネクションを使って、非同期でsqlをかけたいときとかにも使えます。
やっていることは、同じですが(1)の方が他にいろいろ変更しやすい、
のではないかと思います。 実際に調べたわけではないので(根拠はないので)
間違っていたら申し訳ありません。 どなたかご指摘ください。
No.2
- 回答日時:
DAOとADOの特徴を理解し、使い分けてください。
下記のサイトなどが参考になると思います。
http://homepage2.nifty.com/inform/vbdb/daoado.htm
http://www.naboki.net/access/heaven/heaven_14.html
http://www.tsware.jp/labo/labo_23.htm
簡単に言えば、DAOはAccess用に作られたもので、mdbを扱う場合にはADOより優れています。
データベースを分ける話も出ていますが、Access2000以降は結構安定していますので、スタンドアロンで使う小規模なデータベースなら、分ける必要は無いと思います。
DAOは古い技術で、ADOへの移行が勧められていますが、Accessのmdbを扱う場合に限っては、パフォーマンスを優先して、DAOを使うケースも多いと思います。
勉強が目的で現在Accessを使っているが、将来的には何を使うか決まっていない、等の場合は、ADOの方が良いかも。
>こうゆうデータベースの操作について書かれているサイトがあれば、
>そちらも教えてほしいです。
下記を見ればDAOとADOの具体的な使い方が比較出来ます。
http://www.microsoft.com/japan/msdn/data/techmat …
ありがとうございます。
暗黙でこちらが使われているとゆうそうゆうのがわかるだけでも
スッキリしました。
教えていただいたサイトも見て、
勉強したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
VB6.0でSQLServerへ・・・Recor...
-
初心者ですデータベースの形式 ...
-
複数SQL発行について
-
データベースの接続ができない
-
名前'dbOpenDynaset'は宣言され...
-
OracleDataReaderについて…
-
vb.netでデータベース(Access)...
-
UPDATE時にSETしたい日本語文字...
-
ASP.NET(VB.NET)でADO.NETを使...
-
VB6でデータベースを変えるとテ...
-
VBA 変数名に変数を使用したい。
-
ExcelVBAからAccessMDB内のテー...
-
vba フィルター 複数条件 3つ以...
-
2つ目のレコードの値を取得す...
-
フィールド名の指定でエラー
-
16進をASCIIコードに変換する...
-
Accessのフィールド名に半角括...
-
コンボボックスのインデックス...
-
Accessで別mdbのテーブルをコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
UPDATE時にSETしたい日本語文字...
-
複数SQL発行について
-
VB6.0でSQLServerへ・・・Recor...
-
ListviewにDB内容を表示し方に...
-
データベースの接続ができない
-
初心者ですデータベースの形式 ...
-
ExcelVBAでのAccessデータベー...
-
vb.netでデータベース(Access)...
-
名前'dbOpenDynaset'は宣言され...
-
VBSでADOを使ってaccessのテー...
-
VB6.0とaccessのDBを接続する
-
ASP.NET(VB.NET)でADO.NETを使...
-
VB6でデータベースを変えるとテ...
-
OracleDataReaderについて…
-
レンタルサーバでのDB接続の件
-
エクセルVBAでアクセスのテーブ...
-
【VB】データグリッドコントロ...
-
PHP+ACCESSのデータベース接続...
-
VB2005でACCESSの処理
おすすめ情報