FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


SQL文でアクションクエリを実行したい

もし・・・この基本 de ご~を参考にされる場合は(いないと思いますが・・・)
まず、基本 de ご~の注意をご一読下さい。
今回の基本操作は

SQL文でアクションクエリを実行したい」です。

通常、Access内でアクションクエリを作成・保存していた場合には、
Docmd.OpenQuery "アクションクエリ名", acViewNormal
とすることでそのクエリを呼び出し、実行させることができます。(@o@)/

ただ、この方法だと沢山クエリを作成しなくちゃいけなくなってしまうので
簡単なものはVBA上でSQL文を記述して、実行しちゃおうって魂胆です。
( ̄^ ̄) エッヘン!



威張る必要は全くないですが、気にせずにいってみましょ~ヾ(〃^∇^)ノ

とりあえず今回実行するアクションクエリの内容ですが、
テーブル「Tbl_A」のレコードを全部消去する
という、簡単なものにしておきます。
Dim strSQL As String 'SQL文用の変数

strSQL = "Delete * From Tbl_A" 'SQL文を指定
Docmd.RunSQL strSQL '指定したSQL文を実行

Dim db As Dao.Database
Dim strSQL As String 'SQL文用の変数

Set db = CurrentdDb()

strSQL = "Delete * From Tbl_A" 'SQL文を指定
db.Execute strSQL ,dbFailOnError '指定したSQL文を実行

db.Close: Set db = Nothing 'Close処理
Dim cn As ADODB.Connection
Dim strSQL As String 'SQL文用の変数

Set cn = CurrentProject.Connection
strSQL ="Delete * From Tbl_A" 'SQL文を指定

cn.Execute strSQL, dbFailOnError '指定したSQL文を実行

cn.Close: Set cn = Nothing
Dim cn As ADODB.Connection
Dim cmd As New ADODB.Command
Dim strSQL As String 'SQL文用の変数

Set cn = CurrentProject.Connection
cmd.ActiveConnection = cn

strSQL ="Delete * From Tbl_A" 'SQL文を指定
cmd.ComandText = strSQL
cmd.Excute '指定したSQL文を実行

cn.Close : Set cn = Close
こんな感じでしゃうか・・・。

いずれもやってることは同じだと思われます。(-。-) ボソッ
それとSQL文を格納するために変数を利用していますが、
見やすくする為に利用しているので、必ず必要ということではないです。(^^ゞ。

ちなみに DAOとADO(1)内でSQLを実行する際に「dbFailOnError
というオプションを指定していますが、これはクエリ実行中に
エラーが発生した際、クエリ実行前に戻して(ロールバック)
してくれるものになるそうです。(☆_☆)!!

いずれの方法であれ、SQL文は当然アクションクエリである必要があります。
じゃないと、実行時にエラーが発生しちゃうので注意してください・・・orz

・・・ま、とりあえず上記の方法でクエリを作成せずにVBA内でアクションクエリを
実行することができるわけです。

( ゚o゚)ハッ!
別に沢山のクエリを作成・保存しておくのが悪いわけでは全くないですよ。

ただ、単純なアクションクエリであれば、VBA内に記述したりして
処理の流れをわかりやすくするのも1つの手なのかな~…
・・とか、思ったり思わなかったり・・・(-。-) ボソッ

あ!そうそう。最初に紹介した
Docmd.OpenQuery "アクションクエリ名", acViewNormal
Dim strSQL As String 'SQL文用の変数

strSQL = "Delete * From Tbl_A" 'SQL文を指定
Docmd.RunSQL strSQL '指定したSQL文を実行
の2つでは、実行時に続行するかどうかの警告メッセージが表示されますが、
DAOやADO内のExcuteメソッドで実行した場合にはダイアログが表示されません。

ま~その警告メッセージも
Docmd.SetWarnings False '警告メッセージをOff
Docmd.OpenQuery "アクションクエリ名", acViewNormal
Docmd.SetWarnings True '警告メッセージをOn
とすることで非表示にできるんですけどね・・・(^^ゞ

え?結局どれを使えばいいのか?

知りませんよ そんなことまでは・・・┐('~`;)┌
むしろ、誰か自分に教えてください・・・お願いします・・・orz

ではでは、今回はこの辺で・・・

あでゅ~!( ̄・ ̄)ノシ シュタ
↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コメントの投稿

非公開コメント

私はVBAでSQL文を記述しています

Genzoさんお疲れ様です。
>え?結局どれを使えばいいのか?
効率的な処理と言われれば分かりませんが、私は保守に主眼を置いて
VBAでSQL文を実行する手段をとっています。処理件数も少ないですから。

日常業務でシーケンシャルファイルからのデータ取込みする時データを整形
した後アクションクエリを3回程度分けて実行する処理があります。
保守のとき元のMDBファイルをいじったりしてクエリを間違って削除したり
関連がないと思い削除したクエリが実は他のクエリで関連してたりして
エラーが起きたりと(自分で作っておきながら忘れているんです)orz

こうなるとバックUPファイルから該当のクエリを捜すんですが、クエリがある
バージョンのMDBファイルのバックUP取り忘れてるんです。orz
で復旧に丸一日かかった経験があります。
そのためVBAの中に一連の処理するSQL文を記述して実行しています。
コメントに処理内容とか記述し保守の時かなり楽になりました。
*独断と偏見ですので参考にはなりませんが(笑)

一回当たりのシーケンシャルファイルの取込みと加工処理の件数は
三千件程度ですが今のところ処理速度に問題がなく
このままでいいかな?と思っています。
もし面白い案があればおしえてください。 では☆


Re: 私はVBAでSQL文を記述しています

深海さん お疲れ様さまです。

深海さんはVBA派なんですね。

自分はDAOの中でアクションクエリすることが多いみたいです。

理由ですか?

ふふ・・・それはですね・・・(-_-☆キラーン

「最初に覚えたから!」
それだけです・・・orz

作業効率とかを考えるところまで、頭が追いついていない現状・・・。

所詮、サンデーセミグラマーの自分。さらに記憶力も乏しいので
複数を扱うことができないだけですけどね。
ヾ(  ̄▽)ゞオホホホホホ

・・・と自分の恥をさらけ出してみる・・・orz

すみません。自分のAccess理解度なんてその程度です。
(なのに、Accessブログを立ち上げてるし・・・(;^_^A アセアセ)

>もし面白い案があればおしえてください。
むしろ、自分に教えてください・・・m(_ _)m

これからも宜しくお願いします。

Author's Profile ~自己紹介~

Genzo

Author:Genzo
PCは一応自作できるレベル。
ワード・エクセルなら基本的に
扱えるレベル。
プログラム・・・?ん?
VBA・・・?ん?ん??
それって美味しいですか?


~ 当ブログについて ~

~ Mail2Genzo  ~

Calender&Search かれんだーと検索

09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

Access2Genzo内で検索

Category ~かてごりー~

Comments Tree ~こめんとつりー~


Link ~りんく~

ブロとも申請フォーム

Counter ~かうんた~

Since 2010/08/01:

Online:

タグクラウド

最新トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。