• 締切済み

Accessでこんなことできますか?

初心者なのでそもそも論点がずれていたら申し訳ないのと、漠然な質問ですみません。 処理の中でSQLをテーブルに投げるために、毎回DBに接続するコードを記述するのが面倒なので、SQL文を投げて関数の中でSQLを実行し呼び出し元に結果を返してくれるような共通関数って作れるのでしょうか?作れるとすれば具体的にどのように記述したらよいですか? また、接続をFunction化するというのは通常ではあまりおこなわないものなのでしょうか?

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>接続をFunction化するというのは・・ Functionで例えばモジュールdbOpnでDBをopenするとして Function dbOpn()   Open = 0 Dim opDb as ADODB.Connection   Set opDb = CreateObject("ADODB.Connection")   opDb.ConnectionTimeout = 30   opDb.ConnectionString = "DRIVER={SQL Server};SERVER=サーバーの設定を書く   opDb.Open End Function などとして フォームのイベントプロシージャ等でこのモジュールを呼び出して使ったりできます。

nana_poco
質問者

補足

ありがとうございます。 最初にOpenに0を入れているのはなぜなのでしょうか? ConnectionStringに入れるサーバの設定がよくわからないのですが、Access内のテーブルを開く際と、SQLServerに接続する際にどう記述してよいか教えていただけますか? また、この方法は接続のみFunction化しているということでよいですか?

回答No.1

無論の事作れますし、そうした多くの箇所で類似の処理を行うような機能こそ共通関数化すべきでしょうね。 「DBに接続する」というのがどこにあるデータを見に行こうとしているのか良く分かりませんが ACCESSのMDB内にテーブルがあるのであれば、ALT+F11でVBAのウィンドウを開き ツール → 参照設定 で Microsoft DAO Object library にチェックをつけて Dim Rs As Recordset  ← レコードセット型変数の宣言 Set Rs = Currentdb.Openrecordset(SQL文)  ← SQLを実行してレコードセットを取得 と記述するだけでもSELECT文の結果は取得できますけどね。 MDB外の場所にあるDBのデータを利用したいのであれば、やり方は接続先のDBの種類次第ですね。 ODBC経由か何かでテーブルのリンクを貼っておく手もありますが。

nana_poco
質問者

補足

お返事遅くなりましてすみません。 接続にADOを使っているのですが、ADOだとどうなるのでしょうか?お時間ありましたら教えてください。

関連するQ&A