Access VBA質問箱 IV

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

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


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

【11767】テーブル作成クエリをマクロから実行する方法 まい 10/9/10(金) 13:38 質問[未読]
【11768】Re:テーブル作成クエリをマクロから実行す... 10/9/10(金) 17:31 発言[未読]
【11774】Re:テーブル作成クエリをマクロから実行す... まい 10/9/13(月) 12:00 質問[未読]
【11775】Re:テーブル作成クエリをマクロから実行す... 10/9/13(月) 13:57 回答[未読]
【11777】Re:テーブル作成クエリをマクロから実行す... まい 10/9/16(木) 15:29 発言[未読]

【11767】テーブル作成クエリをマクロから実行する...
質問  まい  - 10/9/10(金) 13:38 -

引用なし
パスワード
   作成したクエリをアクションクエリでテーブル作成をしていますが、
マクロで直接実行させるようにしたいと思っています
しかし、何度試してみても、エラーがでてしまい、解決できません

cmd.Execute
↑ここの部分でエラーが発生してしまいます

実行時エラー'''-2147217900(80040e14) SQLステートメントが正しくありません
 Delete、Insert、Procedure、SelectまたはUpdateを使用して下さい。

何がよくないのか、是非アドバイスを頂けるとありがたいです
お願いします

現在のマクロ

Sub テーブル作成()

'On Error GoTo エラー

Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim mySQL As String

Set cn = CurrentProject.Connection

mySQL = "SELECT * "
mySQL = mySQL & "INTO T_LIST "
mySQL = mySQL & "FROM Q_LIST;"

cmd.ActiveConnection = cn
cmd.CommandText = "Q_LIST"

cmd.Execute '←ここでエラー発生

cn.Close: Set cn = Nothing

Exit Sub

エラー:
If Err.Number = -2147217900 Then
  DoCmd.DeleteObject acTable, "T_LIST"
  Resume
Else
 MsgBox Err.Number & " : " & Err.Description
End If

End Sub

【11768】Re:テーブル作成クエリをマクロから実行...
発言    - 10/9/10(金) 17:31 -

引用なし
パスワード
   雅です。

>mySQL = "SELECT * "
>mySQL = mySQL & "INTO T_LIST "
>mySQL = mySQL & "FROM Q_LIST;"
>
>cmd.ActiveConnection = cn
>cmd.CommandText = "Q_LIST"

とりあえずヒント
変数 mySQL は設定しているけど使っていない。
cmd.CommanText に設定している Q_LIST はどっから出てきました?

【11774】Re:テーブル作成クエリをマクロから実行...
質問  まい  - 10/9/13(月) 12:00 -

引用なし
パスワード
   ▼雅 さん:

ヒントありがとうございます
あれから、CommandTextの意味など、調べてみました

一つお聞きしたいのですが、テーブル作成クエリをVBAで実行させようとしているのですが、使用するQ_LISTを初めから、テーブル作成クエリ(アクションクエリ)としていたのですが、これは間違いだったのでしょうか?
アクションクエリは使用できない・・・みたいなエラーがでてきたので、
普通の選択クエリに戻しました。

そして、下記のようにプログラムを書き換えてみたら、
また、違うエラーがでるようになり、四苦八苦してます

>>mySQL = "SELECT * "
>>mySQL = mySQL & "INTO T_LIST "
>>mySQL = mySQL & "FROM Q_LIST;"
>>
>>cmd.ActiveConnection = cn
>>cmd.CommandText = mySQL

cmd.Execute mySQL  

にしてみました
でも、エラーが出るのです

今度は
Q_LISTを作成するときに、LISTと別クエリのクロス集計をリレーションシップに使っているのですが、(1対1)
そのクロス集計の中の【フィールド1】を有効なフィールド名、または式として認識できません

とエラーがでてきてしまいます

クロス集計に問題があるのでしょうか?


>雅です。
>
>>mySQL = "SELECT * "
>>mySQL = mySQL & "INTO T_LIST "
>>mySQL = mySQL & "FROM Q_LIST;"
>>
>>cmd.ActiveConnection = cn
>>cmd.CommandText = "Q_LIST"
>
>とりあえずヒント
>変数 mySQL は設定しているけど使っていない。
>cmd.CommanText に設定している Q_LIST はどっから出てきました?

【11775】Re:テーブル作成クエリをマクロから実行...
回答    - 10/9/13(月) 13:57 -

引用なし
パスワード
   雅です。

>一つお聞きしたいのですが、テーブル作成クエリをVBAで実行させようとしているのですが、使用するQ_LISTを初めから、テーブル作成クエリ(アクションクエリ)としていたのですが、これは間違いだったのでしょうか?
>アクションクエリは使用できない・・・みたいなエラーがでてきたので、
>普通の選択クエリに戻しました。

はい。間違ってます。
ExecuteはSQLを実行するためのメソッドなのでクエリをダイレクトに指定しては
いけません。
クエリのSQL文を取得して実行するのは問題ないです。

>>>mySQL = "SELECT * "
>>>mySQL = mySQL & "INTO T_LIST "
>>>mySQL = mySQL & "FROM Q_LIST;"
>>>
>>>cmd.ActiveConnection = cn
>>>cmd.CommandText = mySQL
>
>cmd.Execute mySQL  
>
>にしてみました
>でも、エラーが出るのです

Q_LISTが正常な選択クエリであるならこれで問題はありません。
Q_LISTをもとにしたテーブル作成クエリを手動で実行した場合もエラーに
なりませんか?

>クロス集計に問題があるのでしょうか?

Q_LISTをもとにしたテーブル作成クエリを手動で実行した場合にも起きるので
あれば、そうかもしれませんね。

【11777】Re:テーブル作成クエリをマクロから実行...
発言  まい  - 10/9/16(木) 15:29 -

引用なし
パスワード
   ▼雅 さん:

アドバイスありがとうございます
やっぱりできないので、違う方法にしました

Dim MySQL As String

MySQL = "select * into T_LIST from Q_LIST;"

DoCmd.RunSQL MySQL

上記だと、うまく、テーブルが作成されるので、
前に問題かな?と思っていたクロス集計の件は、関係ないように思われました
どちらにしろ・・・ADOを使ってやりたかったけど、できないのが
残念です


>雅です。
>
>>一つお聞きしたいのですが、テーブル作成クエリをVBAで実行させようとしているのですが、使用するQ_LISTを初めから、テーブル作成クエリ(アクションクエリ)としていたのですが、これは間違いだったのでしょうか?
>>アクションクエリは使用できない・・・みたいなエラーがでてきたので、
>>普通の選択クエリに戻しました。
>
>はい。間違ってます。
>ExecuteはSQLを実行するためのメソッドなのでクエリをダイレクトに指定しては
>いけません。
>クエリのSQL文を取得して実行するのは問題ないです。
>
>>>>mySQL = "SELECT * "
>>>>mySQL = mySQL & "INTO T_LIST "
>>>>mySQL = mySQL & "FROM Q_LIST;"
>>>>
>>>>cmd.ActiveConnection = cn
>>>>cmd.CommandText = mySQL
>>
>>cmd.Execute mySQL  
>>
>>にしてみました
>>でも、エラーが出るのです
>
>Q_LISTが正常な選択クエリであるならこれで問題はありません。
>Q_LISTをもとにしたテーブル作成クエリを手動で実行した場合もエラーに
>なりませんか?
>
>>クロス集計に問題があるのでしょうか?
>
>Q_LISTをもとにしたテーブル作成クエリを手動で実行した場合にも起きるので
>あれば、そうかもしれませんね。

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