Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1680 / 2272 ツリー ←次へ | 前へ→

【5805】マクロでのクエリ実行 おはな 05/8/10(水) 10:46 質問[未読]
【5807】Re:マクロでのクエリ実行 Gin_II 05/8/10(水) 11:34 回答[未読]
【5808】Re:マクロでのクエリ実行 小僧 05/8/10(水) 11:45 発言[未読]
【5812】Re:マクロでのクエリ実行 おはな 05/8/10(水) 14:11 質問[未読]
【5813】Re:マクロでのクエリ実行 Gin_II 05/8/10(水) 14:33 回答[未読]
【5818】Re:マクロでのクエリ実行 おはな 05/8/10(水) 15:37 お礼[未読]

【5805】マクロでのクエリ実行
質問  おはな  - 05/8/10(水) 10:46 -

引用なし
パスワード
   最近、VBA・マクロを勉強しだしたアマチャンです。
早速行き詰まってしまったので、どうか、教えて下さい(>_<)

”好きなキャラクターは何か?”と言うアンケートを集計するんですが、
自由記入なので同じキャラクターでも書き方が違ったりするので、
統一しなければいけません。ある程度のものは更新クエリを作成し
1つ1つ手で実行していたんですが、クエリが20〜30個になり、
どうにかボタン1つで全てのクエリを実行できないかと思い、投稿しました。

VBAでDo…Loopを使おうとしたんですが、クエリ名にキャラクター名があるので
できれば修正しないでボタン1つで実行したいんです。。。。
そこで、マクロで実行できないかと思ったんですが、マクロでのクエリ実行は
どのようにすればいいんでしょうか?
また、もっといい方法があったら教えて下さい!!

【5807】Re:マクロでのクエリ実行
回答  Gin_II  - 05/8/10(水) 11:34 -

引用なし
パスワード
   >VBAでDo…Loopを使おうとしたんですが、クエリ名にキャラクター名があるので
>できれば修正しないでボタン1つで実行したいんです。。。。
>そこで、マクロで実行できないかと思ったんですが、マクロでのクエリ実行は
>どのようにすればいいんでしょうか?

クエリを開くアクション
で、各クエリを指定してやればいいです。

クエリ名とかを工夫してつけておけば、VBAで Do・・・Loop を使って実行することは
可能だと思います。
例)
QA01名称変更1
QA02名称変更2
  :

とかのように、先頭に決まった語句を入れておくとか。

【5808】Re:マクロでのクエリ実行
発言  小僧  - 05/8/10(水) 11:45 -

引用なし
パスワード
   ▼おはな さん、Gin_II さん:
こんにちは。

クエリで行うのでしたらGin_II さんの方法で…。

>ある程度のものは更新クエリを作成し
>また、もっといい方法があったら教えて下さい!!

このへんをテーブルを持たせて処理させてみるのはいかがでしょうか。

T_集計用変換テーブル
SEQ  キャラクタ名
1     ドラえもん  
1     どらえもん
1     ドラエモン
1     ドラ
2     ピカチュウ
2     ぴかちゅう
2     ピカチュー




「ドラえもん」「どらえもん」「ドラエモン」「ドラ」なら「1」というように
変換テーブルを持たせて、「1」は何人、「2」は何人と計算していけば
集計も楽にできると思うのですがいかがでしょうか。

【5812】Re:マクロでのクエリ実行
質問  おはな  - 05/8/10(水) 14:11 -

引用なし
パスワード
   Gin_II さん、小僧さん:

ありがとうございます(>_<)
やはりマクロよりはクエリ名を変更した方が後々、
クエリが増えても楽かと思いまして、そうする事にしました!

で、またまた質問なんですが…

1_名称変更1、1_名称変更2、1_名称変更3
2_名称変更1、2_名称変更2、2_名称変更3、2_名称変更4

とクエリがあって、分かりずらい文ですが作ってみました。

Q_Name="_名称変更"
Q_No1=1
Q_No2=1

Do Until Q_No1 = 3
  If Q_No1 & Q_Name & Q_No2 Then   'クエリがあったら以下の処理
    Do Until Q_No2 = ●       ’最終テーブルのNoを出したい!!
      DoCmd.OpenQuery Q_No1 & Q_Name & Q_No2, acNormal, acEdit
     Q_No2 = Q_No2 + 1
    Loop
  end If
  Q_No1 = Q_No1+1           '2_名称変更1のクエリ準備
  Q_No2 = 1
Loop

DO Until…LOOPでする時、最大値(ここでいう4)設定するには
どうしたら良いんでしょうか?

【5813】Re:マクロでのクエリ実行
回答  Gin_II  - 05/8/10(水) 14:33 -

引用なし
パスワード
   Dim dbs As DAO.Database
Dim rst As DAO.Recordset

Dim Q_Name As String
Dim strSql As String

Q_Name="_名称変更"
strSql = "SELECT [NAME] FROM [MSysObjects] " _
    & "WHERE [NAME] Like '*" & Q_Name & "*'"

Set dbs = Currentdb
Set rst = dbs.OpenRecordset(strSql)

Do Until rst.EOF
  dbs.Execute rst("Name"), dbFailOnError
Loop

Set rst = Nothing
Set dbs = Nothing

とか。

ただ、
小僧さん - 05/8/10(水) 11:45 のレスは、テーブルのデータとして
変換データを準備しておけば?ということですね。

その場合は、名称の置換そのものが必要ないってことですよ。

【5818】Re:マクロでのクエリ実行
お礼  おはな  - 05/8/10(水) 15:37 -

引用なし
パスワード
   ▼Gin_II さん:
ご返信ありがとうございます(>_<)

小僧さんの方法も考えたんですが、ドラえもんも、全部カタカナだったり
一部がカタカナ、ローマ字、ローマ字とカタカナひらがなの全て交互だったり
あと、キャラクターの数も多いので、どうにか今作ってるクエリを活用したい
と思いまして…。

Gin_II さんの方法でやってみます!
ホントに有難うございました<(_^_)>

1680 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078249
(SS)C-BOARD v3.8 is Free