Access VBA質問箱 IV

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

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


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

【4168】テーブル作成クエリで作った新しい列にCHARを入れるには? にしもり 05/1/14(金) 19:44 質問[未読]
【4175】Re:テーブル作成クエリで作った新しい列にC... かろちん 05/1/15(土) 23:39 回答[未読]
【4180】Re:テーブル作成クエリで作った新しい列にC... にしもり 05/1/16(日) 12:38 質問[未読]
【4181】Re:テーブル作成クエリで作った新しい列にC... かろちん 05/1/16(日) 13:01 回答[未読]
【4182】Re:テーブル作成クエリで作った新しい列にC... にしもり 05/1/16(日) 13:48 質問[未読]
【4183】Re:テーブル作成クエリで作った新しい列にC... かろちん 05/1/16(日) 14:05 回答[未読]
【4185】Re:テーブル作成クエリで作った新しい列にC... にしもり 05/1/16(日) 17:10 質問[未読]
【4186】Re:テーブル作成クエリで作った新しい列にC... かろちん 05/1/16(日) 17:21 発言[未読]
【4187】Re:テーブル作成クエリで作った新しい列にC... にしもり 05/1/16(日) 17:51 お礼[未読]
【5180】Re:テーブル作成クエリで作った新しい列にC... にしもり 05/5/31(火) 16:26 お礼[未読]

【4168】テーブル作成クエリで作った新しい列にCH...
質問  にしもり  - 05/1/14(金) 19:44 -

引用なし
パスワード
   クエリー08という名のテーブル作成クエリがあります。
空白の1列を作り、そこに「1月」と入れたいと思っています。 
標準モジュールで

DoCmd.OpenQuery "クエリー08", acNormal, acEdit
Cmd.Parameters("[式1]") = "1月"

と書いたのですが、「コンパイルエラー 変数が定義されていません」と出ます。
どこが悪いのでしょうか?

【4175】Re:テーブル作成クエリで作った新しい列に...
回答  かろちん  - 05/1/15(土) 23:39 -

引用なし
パスワード
   にしもり さん こんばんは

どのようなテーブルを作成されるクエリーなのか
列名(フィールド名)が何なのか良く分かりません
ので、この回答でよいのかどうかも不明ですが
レスが無いようですので記述しておきます。

※あるテーブル(テーブル1)の、ある列名(列名1)
 に値を入れる場合
 strSQL = ""
 strSQL = strSQL & "INSERT INTO テーブル名1"
 strSQL = strSQL & " (列名1)"
 strSQL = strSQL & " VALUES"
 strSQL = strSQL & " ('1月')"
 DoCmd.RunSql strSQL

意図する回答と異なっていたらすいません。

テーブル作成クエリーの中身と
> Cmd.Parameters("[式1]") = "1月"
の関連性が見えませんので、レスが付きにくい
とおもいます。

【4180】Re:テーブル作成クエリで作った新しい列に...
質問  にしもり  - 05/1/16(日) 12:38 -

引用なし
パスワード
   ▼かろちん さん:
レスありがとうございます。
やりたいことはこうです。
1.元々Happyoというテーブルがあり、「申請者」というフィールドのみがあります。
2.テーブル作成クエリーである「クエリー08」で、「発表会回数」という名の新たなテーブルを作ります。その際、フィールド「申請者」と、「申請者」の右隣にフィールド「式1」を設けます。
3.その直後に「発表会回数」の「式1」に無条件に‘1月‘というCHARを入れたいのです。
アドバイスにしたがいモジュールを作成しました。(以下参照してください。)

Option Compare Database
Option Explicit

Function test()
On Error GoTo test_Err
 DoCmd.SetWarnings False

  DoCmd.OpenQuery "クエリー08", acNormal, acEdit
  strSQL = ""
  strSQL = strSQL & "INSERT INTO 発表会回数"
  strSQL = strSQL & " (式1)"
  strSQL = strSQL & " VALUES"
  strSQL = strSQL & " ('1月')"
  DoCmd.RunSQL strSQL

 DoCmd.SetWarnings True

test_Exit:
 Exit Function
test_Err:
 MsgBox Error$
 Resume test_Exit

End Function

が、コンパイルエラーになって、できません。正直、市販本の必要なところをつぎはぎしてやっている程度の実力なので、基本がわかっていません。どこが悪いかどうかご教授ください。

【4181】Re:テーブル作成クエリで作った新しい列に...
回答  かろちん  - 05/1/16(日) 13:01 -

引用なし
パスワード
   にしもり さん こんにちは
>が、コンパイルエラーになって、できません。

strSQLは文字型変数の宣言をしないといけません。

> Function test()
           ←このあたりに宣言する
> On Error GoTo test_Err
> DoCmd.SetWarnings False
  〜 以下省略 〜


Function test()
Dim strSQL  As String
On Error GoTo test_Err
DoCmd.SetWarnings False
  〜 以下省略 〜

としてみてください、コンパイルエラーはなくなります。
また、気になるのが、新しいテーブルの申請者フィールド
ですが、何時の段階で値を入れるのですか?
テーブル作成時に申請者フィールドには値が入っているのかな
既にテーブルに値が入っていて、式1フィールドに"1月"と
入れたいなら、UPDATE文になります。

【4182】Re:テーブル作成クエリで作った新しい列に...
質問  にしもり  - 05/1/16(日) 13:48 -

引用なし
パスワード
   ▼かろちん さん:
早速のレスありがとうございます。

>Dim strSQL  As String
こういうことに気づかない所が素人で、お恥ずかしいです。

>また、気になるのが、新しいテーブルの申請者フィールド
>ですが、何時の段階で値を入れるのですか?
ご指摘のとおり申請者フィールドは元々Happyoに入っていて、式1フィールドにのみ'1月’と入れたいのです。UPDATE文とはこのような形でよいのでしょうか?

Option Compare Database
Option Explicit

Function test()
Dim strSQL  As String
On Error GoTo test_Err
 DoCmd.SetWarnings False

  DoCmd.OpenQuery "クエリー08", acNormal, acEdit
  strSQL = ""
  strSQL = strSQL & "INSERT INTO 発表会回数"
  strSQL = strSQL & " (式1)"
  strSQL = strSQL & " VALUES"
  strSQL = strSQL & " ('1月')"
  strSQL.Update

 DoCmd.SetWarnings True

test_Exit:
 Exit Function
test_Err:
 MsgBox Error$
 Resume test_Exit

End Function

【4183】Re:テーブル作成クエリで作った新しい列に...
回答  かろちん  - 05/1/16(日) 14:05 -

引用なし
パスワード
   ▼にしもり さん こんにちは

>UPDATE文とはこのような形でよいのでしょうか?

 UPDATE文とはSQL文のことです。
 今は、INSERT文にてレコードを挿入しようとしていますが、
 Happyoテーブルのものを新規テーブル作成時に既に新規テーブル
 に入れられているなら

>  strSQL = ""
>  strSQL = strSQL & "INSERT INTO 発表会回数"
>  strSQL = strSQL & " (式1)"
>  strSQL = strSQL & " VALUES"
>  strSQL = strSQL & " ('1月')"

 上記の文がUPDATE文に変更する必要があります。
  strSQL = ""
  strSQL = strSQL & "UPDATE 発表会回数"
  strSQL = strSQL & " SET 式1 = '1月'"


>  strSQL.Update
 上記の部分は元に戻してください。

  DoCmd.RunSql strSQL


今気が付いたのですが、SQL構文の中(strSQL)に設定する
空白は、半角の空白を使用してください。
構文エラーが出るかもしれません。

【4185】Re:テーブル作成クエリで作った新しい列に...
質問  にしもり  - 05/1/16(日) 17:10 -

引用なし
パスワード
   ▼かろちん さん:
ありがとうございました。できました。
実力不足を痛感しましたがお蔭様で日曜に仕事をしたかいがありました。

もうひとつ質問なのですがクエリ08で新しい列を設けるとき、パラメーターを聞いてきてしまいます。UPDATE文で'1月’と入れる訳ですからこの段階でパラメーターを聞かれてもブランクで返すのみです。あえてパラメーターを聞いてこないようにする方法はありますでしょうか?

【4186】Re:テーブル作成クエリで作った新しい列に...
発言  かろちん  - 05/1/16(日) 17:21 -

引用なし
パスワード
   にしもり さん こんにちは

>実力不足を痛感しましたがお蔭様で日曜に仕事をしたかいがありました。

これまで、私がレスした内容は理解して頂いていますでしょうか?
今後同じような内容の処理があった場合でもお一人で対処できる
ところまで、文献やHELP等で理解してください。

クエリー08のパラメータの件ですが、申し訳ございませんが
回答ができません。
なぜなら、クエリー08の中身を私が知らないからです。
SQLの構文について勉強をしていただければ私が回答せずとも
解決できると思います。

ポイント:式1
ヒント :式1のところを変更すればよいだけ

です。がんばってください。

【4187】Re:テーブル作成クエリで作った新しい列に...
お礼  にしもり  - 05/1/16(日) 17:51 -

引用なし
パスワード
   ▼かろちん さん:
>今後同じような内容の処理があった場合でもお一人で対処できる
>ところまで、文献やHELP等で理解してください。
お教えいただいたところまでは理解しております。
印刷してノートに切り貼りするなどして備忘にしております。
私のようにSQL等に縁がなかった者が仕事に使えるまでになったのは、かろちんさまはじめこのサイトをサポートしているかたがたのお陰といつも感謝しております。

>SQLの構文について勉強をしていただければ私が回答せずとも
>解決できると思います。
了解いたしました。自分の力で一層の勉強をしたいと思います。
どうもありがとうございました。

【5180】Re:テーブル作成クエリで作った新しい列に...
お礼  にしもり  - 05/5/31(火) 16:26 -

引用なし
パスワード
   ▼かろちん さん:
4ヶ月かかりましたが、なんとか自力でやりました。
まずデータ定義クエリをつくりました。内容はこうです。
alter table クエリー08 add column 式1 string;
これを実行したあと、更新クエリで式1を「1月」で更新することで解決しました。
アドバイスありがとうございました。

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